blob: 343b57bfed0d63932770be5b7da4f7fe330368a7 [file] [log] [blame]
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001<!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" />
Eino-Ville Talvala04778542016-03-24 14:38:29 -070020 <title>Android Camera HAL3.4 Properties</title>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021 <style type="text/css">
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070022 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 }
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031 .entry_cont { background-color: #f0f0f0 }
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070032 .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; }
Igor Murashkin6c936c12014-05-13 14:51:49 -070037 .toc_deprecated { text-decoration:line-through; }
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038
39 /* table column sizes */
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070040 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 }
Igor Murashkin08b8aad2012-11-29 15:23:03 -080042 .th_name { width: 20% }
43 .th_units { width: 10% }
44 .th_tags { width: 5% }
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080045 .th_details { width: 25% }
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080046 .th_type { width: 17% }
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070047 .th_description { width: 20% }
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080048 .th_range { width: 8% }
49 .th_hal_version { width: 5% }
Igor Murashkin08b8aad2012-11-29 15:23:03 -080050 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 */
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080056 .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
Igor Murashkin6c936c12014-05-13 14:51:49 -070057 .entry_name_deprecated { text-decoration:line-through; }
Igor Murashkin08b8aad2012-11-29 15:23:03 -080058
59 /* Entry type flair */
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070060 .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}
Igor Murashkin6c936c12014-05-13 14:51:49 -070063 .entry_type_synthetic { font-weight: bolder; color: #996600; }
Igor Murashkinca256272014-10-02 15:27:09 -070064 .entry_type_hwlevel { font-weight: bolder; color: #000066; }
Igor Murashkin6c936c12014-05-13 14:51:49 -070065 .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
Igor Murashkin08b8aad2012-11-29 15:23:03 -080066 .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
67 .entry_type_enum_notes:before { content:" - " }
Igor Murashkina10351a2014-01-15 17:05:22 -080068 .entry_type_enum_notes>p:first-child { display:inline; }
Igor Murashkin08b8aad2012-11-29 15:23:03 -080069 .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;}
Igor Murashkin6c936c12014-05-13 14:51:49 -070073 .entry_range_deprecated { font-weight: bolder; }
Igor Murashkin08b8aad2012-11-29 15:23:03 -080074
75 /* Entry tags flair */
76 .entry_tags ul { list-style-type: none; }
77
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080078 /* 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; }
Igor Murashkin08b8aad2012-11-29 15:23:03 -080084
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
Igor Murashkin08b8aad2012-11-29 15:23:03 -0800105<body>
Eino-Ville Talvala42165c22014-03-25 15:20:16 -0700106 <h1>Android Camera HAL3.2 Properties</h1>
Igor Murashkin08b8aad2012-11-29 15:23:03 -0800107
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700108
Igor Murashkin08b8aad2012-11-29 15:23:03 -0800109 <h2>Table of Contents</h2>
110 <ul class="toc">
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700111 <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">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700118 <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>
Zhijun He450e01c2014-07-01 18:27:42 -0700124 <li
Zhijun He33776412014-08-18 10:55:33 -0700125 ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700126 </ul>
127 </li>
128 <li>
129 <span class="toc_kind_header">dynamic</span>
130 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700131 <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>
Zhijun He450e01c2014-07-01 18:27:42 -0700137 <li
Zhijun He33776412014-08-18 10:55:33 -0700138 ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
Zhijun He450e01c2014-07-01 18:27:42 -0700139 </ul>
140 </li>
141 <li>
142 <span class="toc_kind_header">static</span>
143 <ul class="toc_section">
144 <li
Zhijun He33776412014-08-18 10:55:33 -0700145 ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700146 </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">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700156 <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>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -0800192 <li
193 ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -0800194 <li
195 ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
Shuzhen Wanga1725492019-07-08 15:03:24 -0700196 <li
Shuzhen Wang327c86e2020-03-16 11:39:27 -0700197 ><a href="#controls_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li>
Shuzhen Wangb6149792019-11-07 15:59:22 -0800198 <li
199 ><a href="#controls_android.control.zoomRatio">android.control.zoomRatio</a></li>
Jayant Chowdhary33211462021-07-21 11:26:51 -0700200 <li
201 ><a href="#controls_android.control.afRegionsSet">android.control.afRegionsSet</a></li>
202 <li
203 ><a href="#controls_android.control.aeRegionsSet">android.control.aeRegionsSet</a></li>
204 <li
205 ><a href="#controls_android.control.awbRegionsSet">android.control.awbRegionsSet</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700206 </ul>
207 </li>
208 <li>
209 <span class="toc_kind_header">static</span>
210 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700211 <li
212 ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
213 <li
214 ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
215 <li
216 ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
217 <li
218 ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
219 <li
220 ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
221 <li
222 ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
223 <li
224 ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
225 <li
226 ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
227 <li
228 ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
229 <li
230 ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
231 <li
232 ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
233 <li
Igor Murashkin35a108f2014-05-27 10:51:25 -0700234 ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
235 <li
236 ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
237 <li
238 ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
239 <li
Igor Murashkin6c936c12014-05-13 14:51:49 -0700240 ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
Zhijun He17f2d2c2014-06-10 18:21:34 -0700241 <li
242 ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -0800243 <li
244 ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
245 <li
246 ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
247 <li
248 ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -0800249 <li
250 ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
Shuzhen Wanga1725492019-07-08 15:03:24 -0700251 <li
Shuzhen Wang327c86e2020-03-16 11:39:27 -0700252 ><a href="#static_android.control.availableExtendedSceneModeMaxSizes">android.control.availableExtendedSceneModeMaxSizes</a></li>
Shuzhen Wangb6149792019-11-07 15:59:22 -0800253 <li
Shuzhen Wang327c86e2020-03-16 11:39:27 -0700254 ><a href="#static_android.control.availableExtendedSceneModeZoomRatioRanges">android.control.availableExtendedSceneModeZoomRatioRanges</a></li>
Shuzhen Wangb6149792019-11-07 15:59:22 -0800255 <li
Shuzhen Wang327c86e2020-03-16 11:39:27 -0700256 ><a href="#static_android.control.availableExtendedSceneModeCapabilities">android.control.availableExtendedSceneModeCapabilities</a></li>
Shuzhen Wangb6149792019-11-07 15:59:22 -0800257 <li
258 ><a href="#static_android.control.zoomRatioRange">android.control.zoomRatioRange</a></li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -0800259 <li
260 ><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700261 </ul>
262 </li>
263 <li>
264 <span class="toc_kind_header">dynamic</span>
265 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700266 <li
267 class="toc_deprecated"
268 ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
269 <li
270 ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
271 <li
272 ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
273 <li
274 ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
275 <li
276 ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
277 <li
278 ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
279 <li
280 ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
281 <li
282 ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
283 <li
284 ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
285 <li
286 ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
287 <li
288 ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
289 <li
290 ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
291 <li
292 ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
293 <li
294 class="toc_deprecated"
295 ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
296 <li
297 ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
298 <li
299 ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
300 <li
301 ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
302 <li
303 ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
304 <li
305 ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
306 <li
307 ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
308 <li
309 ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
310 <li
311 ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
312 <li
313 ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -0800314 <li
315 ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -0800316 <li
317 ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
Chien-Yu Chenb8c68282017-11-27 16:12:38 -0800318 <li
319 ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
Shuzhen Wanga1725492019-07-08 15:03:24 -0700320 <li
Shuzhen Wang327c86e2020-03-16 11:39:27 -0700321 ><a href="#dynamic_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li>
Shuzhen Wangb6149792019-11-07 15:59:22 -0800322 <li
323 ><a href="#dynamic_android.control.zoomRatio">android.control.zoomRatio</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700324 </ul>
325 </li>
326 </ul> <!-- toc_section -->
327 </li>
328 <li>
329 <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
330 <ul class="toc_section">
331 <li>
332 <span class="toc_kind_header">controls</span>
333 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700334 <li
335 ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700336 </ul>
337 </li>
338 </ul> <!-- toc_section -->
339 </li>
340 <li>
341 <span class="toc_section_header"><a href="#section_edge">edge</a></span>
342 <ul class="toc_section">
343 <li>
344 <span class="toc_kind_header">controls</span>
345 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700346 <li
347 ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
348 <li
349 ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700350 </ul>
351 </li>
352 <li>
Ruben Brunkd14f7162014-03-04 15:01:25 -0800353 <span class="toc_kind_header">static</span>
354 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700355 <li
356 ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
Ruben Brunkd14f7162014-03-04 15:01:25 -0800357 </ul>
358 </li>
359 <li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700360 <span class="toc_kind_header">dynamic</span>
361 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700362 <li
363 ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700364 </ul>
365 </li>
366 </ul> <!-- toc_section -->
367 </li>
368 <li>
369 <span class="toc_section_header"><a href="#section_flash">flash</a></span>
370 <ul class="toc_section">
371 <li>
372 <span class="toc_kind_header">controls</span>
373 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700374 <li
375 ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
376 <li
377 ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
378 <li
379 ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700380 </ul>
381 </li>
382 <li>
383 <span class="toc_kind_header">static</span>
384 <ul class="toc_section">
Igor Murashkin08b8aad2012-11-29 15:23:03 -0800385
Igor Murashkin6c936c12014-05-13 14:51:49 -0700386 <li
387 ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
388 <li
389 ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
Rucha Katakwar2fd4a452021-10-12 10:01:29 -0700390 <li
391 ><a href="#static_android.flash.info.strengthMaximumLevel">android.flash.info.strengthMaximumLevel</a></li>
392 <li
393 ><a href="#static_android.flash.info.strengthDefaultLevel">android.flash.info.strengthDefaultLevel</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -0800394
Igor Murashkin6c936c12014-05-13 14:51:49 -0700395 <li
396 ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
397 <li
398 ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700399 </ul>
400 </li>
401 <li>
402 <span class="toc_kind_header">dynamic</span>
403 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700404 <li
405 ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
406 <li
407 ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
408 <li
409 ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
410 <li
411 ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700412 </ul>
413 </li>
414 </ul> <!-- toc_section -->
415 </li>
416 <li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700417 <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
418 <ul class="toc_section">
419 <li>
420 <span class="toc_kind_header">controls</span>
421 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700422 <li
423 ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700424 </ul>
425 </li>
426 <li>
Ruben Brunk49e4f912014-03-04 14:09:44 -0800427 <span class="toc_kind_header">static</span>
428 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700429 <li
430 ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
Ruben Brunk49e4f912014-03-04 14:09:44 -0800431 </ul>
432 </li>
433 <li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700434 <span class="toc_kind_header">dynamic</span>
435 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700436 <li
437 ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700438 </ul>
439 </li>
440 </ul> <!-- toc_section -->
441 </li>
442 <li>
443 <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
444 <ul class="toc_section">
445 <li>
446 <span class="toc_kind_header">controls</span>
447 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700448 <li
Ruben Brunk9c766ad2014-05-27 18:52:49 -0700449 ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
450 <li
Igor Murashkin6c936c12014-05-13 14:51:49 -0700451 ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
452 <li
453 ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
454 <li
455 ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
456 <li
457 ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
458 <li
459 ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
460 <li
461 ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
462 <li
463 ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700464 </ul>
465 </li>
466 <li>
467 <span class="toc_kind_header">static</span>
468 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700469 <li
470 ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
471 <li
472 ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700473 </ul>
474 </li>
475 <li>
476 <span class="toc_kind_header">dynamic</span>
477 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700478 <li
Ruben Brunk9c766ad2014-05-27 18:52:49 -0700479 ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
480 <li
Igor Murashkin6c936c12014-05-13 14:51:49 -0700481 ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
482 <li
483 ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
484 <li
485 ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
486 <li
487 ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
488 <li
489 ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
490 <li
491 ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
492 <li
493 ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
494 <li
495 ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700496 </ul>
497 </li>
498 </ul> <!-- toc_section -->
499 </li>
500 <li>
501 <span class="toc_section_header"><a href="#section_lens">lens</a></span>
502 <ul class="toc_section">
503 <li>
504 <span class="toc_kind_header">controls</span>
505 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700506 <li
507 ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
508 <li
509 ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
510 <li
511 ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
512 <li
513 ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
514 <li
515 ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700516 </ul>
517 </li>
518 <li>
519 <span class="toc_kind_header">static</span>
520 <ul class="toc_section">
521
Igor Murashkin6c936c12014-05-13 14:51:49 -0700522 <li
523 ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
524 <li
525 ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
526 <li
527 ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
528 <li
529 ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
530 <li
531 ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
532 <li
533 ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
534 <li
535 ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
536 <li
537 ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700538
Igor Murashkin6c936c12014-05-13 14:51:49 -0700539 <li
540 ><a href="#static_android.lens.facing">android.lens.facing</a></li>
541 <li
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -0800542 ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
Igor Murashkin6c936c12014-05-13 14:51:49 -0700543 <li
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -0800544 ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
545 <li
546 ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
547 <li
Eino-Ville Talvala245e2792018-03-13 19:10:23 -0700548 class="toc_deprecated"
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -0800549 ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -0800550 <li
551 ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
Eino-Ville Talvala245e2792018-03-13 19:10:23 -0700552 <li
553 ><a href="#static_android.lens.distortion">android.lens.distortion</a></li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -0800554 <li
555 ><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a></li>
556 <li
557 ><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700558 </ul>
559 </li>
560 <li>
561 <span class="toc_kind_header">dynamic</span>
562 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700563 <li
564 ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
565 <li
566 ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
567 <li
568 ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
569 <li
570 ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
571 <li
572 ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
573 <li
574 ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
575 <li
576 ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -0800577 <li
578 ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
579 <li
580 ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
581 <li
582 ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
583 <li
Eino-Ville Talvala245e2792018-03-13 19:10:23 -0700584 class="toc_deprecated"
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -0800585 ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
Eino-Ville Talvala245e2792018-03-13 19:10:23 -0700586 <li
587 ><a href="#dynamic_android.lens.distortion">android.lens.distortion</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700588 </ul>
589 </li>
590 </ul> <!-- toc_section -->
591 </li>
592 <li>
593 <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
594 <ul class="toc_section">
595 <li>
596 <span class="toc_kind_header">controls</span>
597 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700598 <li
599 ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
600 <li
601 ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700602 </ul>
603 </li>
604 <li>
Ruben Brunkd14f7162014-03-04 15:01:25 -0800605 <span class="toc_kind_header">static</span>
606 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700607 <li
608 ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
Ruben Brunkd14f7162014-03-04 15:01:25 -0800609 </ul>
610 </li>
611 <li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700612 <span class="toc_kind_header">dynamic</span>
613 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700614 <li
615 ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700616 </ul>
617 </li>
618 </ul> <!-- toc_section -->
619 </li>
620 <li>
621 <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
622 <ul class="toc_section">
623 <li>
624 <span class="toc_kind_header">static</span>
625 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700626 <li
627 class="toc_deprecated"
628 ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
629 <li
630 class="toc_deprecated"
631 ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
632 <li
633 class="toc_deprecated"
634 ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
635 <li
636 class="toc_deprecated"
637 ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -0700638 </ul>
639 </li>
640 <li>
641 <span class="toc_kind_header">dynamic</span>
642 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700643 <li
644 class="toc_deprecated"
645 ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700646 </ul>
647 </li>
648 </ul> <!-- toc_section -->
649 </li>
650 <li>
651 <span class="toc_section_header"><a href="#section_request">request</a></span>
652 <ul class="toc_section">
653 <li>
654 <span class="toc_kind_header">controls</span>
655 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700656 <li
657 class="toc_deprecated"
658 ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
659 <li
660 ><a href="#controls_android.request.id">android.request.id</a></li>
661 <li
662 class="toc_deprecated"
663 ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
664 <li
665 ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
666 <li
667 class="toc_deprecated"
668 ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
669 <li
670 class="toc_deprecated"
671 ><a href="#controls_android.request.type">android.request.type</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700672 </ul>
673 </li>
674 <li>
675 <span class="toc_kind_header">static</span>
676 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700677 <li
678 ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
679 <li
Igor Murashkin35a108f2014-05-27 10:51:25 -0700680 ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
681 <li
682 ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
683 <li
684 ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
685 <li
Igor Murashkin6c936c12014-05-13 14:51:49 -0700686 class="toc_deprecated"
687 ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
688 <li
689 ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
690 <li
691 ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
692 <li
693 ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
694 <li
695 ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
696 <li
697 ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
698 <li
699 ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
700 <li
701 ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
Emilian Peevb0134d02017-11-17 13:20:12 +0000702 <li
703 ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
Emilian Peevb52eadf2018-01-18 19:09:57 +0000704 <li
705 ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
Emilian Peev98a89c12018-08-15 18:20:27 +0100706 <li
707 ><a href="#static_android.request.characteristicKeysNeedingPermission">android.request.characteristicKeysNeedingPermission</a></li>
Emilian Peev276c7222021-11-12 18:07:39 -0800708 <li
709 ><a href="#static_android.request.availableDynamicRangeProfiles">android.request.availableDynamicRangeProfiles</a></li>
710 <li
711 ><a href="#static_android.request.availableDynamicRangeProfilesMap">android.request.availableDynamicRangeProfilesMap</a></li>
712 <li
713 ><a href="#static_android.request.recommendedTenBitDynamicRangeProfile">android.request.recommendedTenBitDynamicRangeProfile</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700714 </ul>
715 </li>
716 <li>
717 <span class="toc_kind_header">dynamic</span>
718 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700719 <li
Igor Murashkin757ec242014-07-25 16:55:18 -0700720 class="toc_deprecated"
Igor Murashkin6c936c12014-05-13 14:51:49 -0700721 ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
722 <li
723 ><a href="#dynamic_android.request.id">android.request.id</a></li>
724 <li
725 ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
726 <li
727 class="toc_deprecated"
728 ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
729 <li
730 ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700731 </ul>
732 </li>
733 </ul> <!-- toc_section -->
734 </li>
735 <li>
736 <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
737 <ul class="toc_section">
738 <li>
739 <span class="toc_kind_header">controls</span>
740 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700741 <li
742 ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
Eino-Ville Talvala9cbba082020-01-06 13:06:22 -0800743 <li
744 ><a href="#controls_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li>
Jayant Chowdhary33211462021-07-21 11:26:51 -0700745 <li
746 ><a href="#controls_android.scaler.cropRegionSet">android.scaler.cropRegionSet</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700747 </ul>
748 </li>
749 <li>
750 <span class="toc_kind_header">static</span>
751 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700752 <li
753 class="toc_deprecated"
754 ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
755 <li
756 class="toc_deprecated"
757 ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
758 <li
759 class="toc_deprecated"
760 ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
761 <li
762 ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
763 <li
764 class="toc_deprecated"
765 ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
766 <li
767 class="toc_deprecated"
768 ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
769 <li
770 class="toc_deprecated"
771 ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
772 <li
773 class="toc_deprecated"
774 ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
775 <li
776 ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
777 <li
778 ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
779 <li
780 ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
781 <li
782 ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
783 <li
784 ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
Zhijun Hed0f25ca2014-05-21 15:29:07 -0700785 <li
786 ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
Emilian Peev9c7b5d32018-09-18 14:01:55 +0100787 <li
788 ><a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.scaler.availableRecommendedStreamConfigurations</a></li>
789 <li
790 ><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a></li>
Emilian Peevfdc55632018-11-14 17:50:18 +0000791 <li
792 ><a href="#static_android.scaler.mandatoryStreamCombinations">android.scaler.mandatoryStreamCombinations</a></li>
Eino-Ville Talvala9cbba082020-01-06 13:06:22 -0800793 <li
Jayant Chowdhary828a0202020-03-13 13:57:38 -0700794 ><a href="#static_android.scaler.mandatoryConcurrentStreamCombinations">android.scaler.mandatoryConcurrentStreamCombinations</a></li>
795 <li
Eino-Ville Talvala9cbba082020-01-06 13:06:22 -0800796 ><a href="#static_android.scaler.availableRotateAndCropModes">android.scaler.availableRotateAndCropModes</a></li>
Yin-Chia Yeh8a349d82021-02-11 17:10:20 -0800797 <li
798 ><a href="#static_android.scaler.defaultSecureImageSize">android.scaler.defaultSecureImageSize</a></li>
Shuzhen Wang3dd7c292020-11-20 15:39:23 -0800799 <li
800 ><a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.scaler.physicalCameraMultiResolutionStreamConfigurations</a></li>
801 <li
802 ><a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.scaler.multiResolutionStreamConfigurationMap</a></li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -0800803 <li
804 ><a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.scaler.availableStreamConfigurationsMaximumResolution</a></li>
805 <li
806 ><a href="#static_android.scaler.availableMinFrameDurationsMaximumResolution">android.scaler.availableMinFrameDurationsMaximumResolution</a></li>
807 <li
808 ><a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.scaler.availableStallDurationsMaximumResolution</a></li>
809 <li
810 ><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.scaler.streamConfigurationMapMaximumResolution</a></li>
811 <li
812 ><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a></li>
813 <li
814 ><a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.scaler.mandatoryMaximumResolutionStreamCombinations</a></li>
Shuzhen Wangfa600342021-04-06 12:44:46 -0700815 <li
Emilian Peev276c7222021-11-12 18:07:39 -0800816 ><a href="#static_android.scaler.mandatoryTenBitOutputStreamCombinations">android.scaler.mandatoryTenBitOutputStreamCombinations</a></li>
817 <li
Jayant Chowdhary36214072022-02-09 20:58:54 +0000818 ><a href="#static_android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations">android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations</a></li>
819 <li
Shuzhen Wangfa600342021-04-06 12:44:46 -0700820 ><a href="#static_android.scaler.multiResolutionStreamSupported">android.scaler.multiResolutionStreamSupported</a></li>
Shuzhen Wangcd7177c2021-12-14 20:08:28 -0800821 <li
822 ><a href="#static_android.scaler.availableStreamUseCases">android.scaler.availableStreamUseCases</a></li>
823 <li
824 ><a href="#static_android.scaler.mandatoryUseCaseStreamCombinations">android.scaler.mandatoryUseCaseStreamCombinations</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700825 </ul>
826 </li>
827 <li>
828 <span class="toc_kind_header">dynamic</span>
829 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700830 <li
831 ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
Eino-Ville Talvala9cbba082020-01-06 13:06:22 -0800832 <li
833 ><a href="#dynamic_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700834 </ul>
835 </li>
836 </ul> <!-- toc_section -->
837 </li>
838 <li>
839 <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
840 <ul class="toc_section">
841 <li>
842 <span class="toc_kind_header">controls</span>
843 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700844 <li
845 ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
846 <li
847 ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
848 <li
849 ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
850 <li
851 ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
852 <li
853 ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -0800854 <li
855 ><a href="#controls_android.sensor.pixelMode">android.sensor.pixelMode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700856 </ul>
857 </li>
858 <li>
859 <span class="toc_kind_header">static</span>
860 <ul class="toc_section">
861
Igor Murashkin6c936c12014-05-13 14:51:49 -0700862 <li
863 ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
864 <li
865 ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
866 <li
867 ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
868 <li
869 ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
870 <li
871 ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
872 <li
873 ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
874 <li
875 ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
876 <li
877 ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
Zhijun He91449c82014-06-12 10:43:32 -0700878 <li
Eino-Ville Talvala122906c2014-07-28 12:49:25 -0700879 ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -0800880 <li
881 ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
Ruben Brunk93192942015-07-01 11:32:39 -0700882 <li
883 ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -0800884 <li
885 ><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a></li>
886 <li
887 ><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a></li>
888 <li
889 ><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a></li>
890 <li
891 ><a href="#static_android.sensor.info.binningFactor">android.sensor.info.binningFactor</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700892
Igor Murashkin6c936c12014-05-13 14:51:49 -0700893 <li
894 ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
895 <li
896 ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
897 <li
898 ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
899 <li
900 ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
901 <li
902 ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
903 <li
904 ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
905 <li
906 ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
907 <li
908 ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
909 <li
910 ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
911 <li
912 ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
913 <li
914 ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
915 <li
916 ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
917 <li
918 ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
919 <li
920 ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
Zhijun Hed363a122015-11-12 17:27:27 -0800921 <li
922 ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
Yin-Chia Yeh366da5b2015-12-06 21:42:35 -0800923 <li
924 ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -0800925 <li
926 ><a href="#static_android.sensor.opaqueRawSizeMaximumResolution">android.sensor.opaqueRawSizeMaximumResolution</a></li>
Shuzhen Wangccdf3a32022-04-20 10:15:57 -0700927 <li
928 ><a href="#static_android.sensor.readoutTimestamp">android.sensor.readoutTimestamp</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700929 </ul>
930 </li>
931 <li>
932 <span class="toc_kind_header">dynamic</span>
933 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700934 <li
935 ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
936 <li
937 ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
938 <li
939 ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
940 <li
941 ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
942 <li
943 ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
944 <li
945 ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
946 <li
Ruben Brunk6a424ff2014-07-23 15:13:16 -0700947 ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
948 <li
Igor Murashkin6c936c12014-05-13 14:51:49 -0700949 ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
950 <li
951 ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
952 <li
953 ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
954 <li
955 ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
956 <li
957 ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
Zhijun Hecc5cfdc2014-06-11 10:44:53 -0700958 <li
959 ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
Zhijun Hed363a122015-11-12 17:27:27 -0800960 <li
961 ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
962 <li
963 ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -0800964 <li
965 ><a href="#dynamic_android.sensor.pixelMode">android.sensor.pixelMode</a></li>
966 <li
967 ><a href="#dynamic_android.sensor.rawBinningFactorUsed">android.sensor.rawBinningFactorUsed</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700968 </ul>
969 </li>
970 </ul> <!-- toc_section -->
971 </li>
972 <li>
973 <span class="toc_section_header"><a href="#section_shading">shading</a></span>
974 <ul class="toc_section">
975 <li>
976 <span class="toc_kind_header">controls</span>
977 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700978 <li
979 ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
980 <li
981 ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700982 </ul>
983 </li>
984 <li>
985 <span class="toc_kind_header">dynamic</span>
986 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -0700987 <li
988 ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700989 </ul>
990 </li>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -0800991 <li>
992 <span class="toc_kind_header">static</span>
993 <ul class="toc_section">
994 <li
995 ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
996 </ul>
997 </li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700998 </ul> <!-- toc_section -->
999 </li>
1000 <li>
1001 <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
1002 <ul class="toc_section">
1003 <li>
1004 <span class="toc_kind_header">controls</span>
1005 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001006 <li
1007 ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
1008 <li
1009 ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
1010 <li
1011 ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
1012 <li
1013 ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
1014 <li
1015 ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -08001016 <li
1017 ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001018 </ul>
1019 </li>
1020 <li>
1021 <span class="toc_kind_header">static</span>
1022 <ul class="toc_section">
1023
Igor Murashkin6c936c12014-05-13 14:51:49 -07001024 <li
1025 ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
1026 <li
1027 ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
1028 <li
1029 ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
1030 <li
1031 ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
1032 <li
1033 ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
1034 <li
1035 ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
1036 <li
1037 ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -08001038 <li
1039 ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -08001040 <li
1041 ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001042
1043 </ul>
1044 </li>
1045 <li>
1046 <span class="toc_kind_header">dynamic</span>
1047 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001048 <li
1049 ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
1050 <li
1051 ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
1052 <li
1053 ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
1054 <li
1055 ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
1056 <li
1057 ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
1058 <li
Igor Murashkinefff0de2014-05-14 17:30:49 -07001059 ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
1060 <li
Igor Murashkin6c936c12014-05-13 14:51:49 -07001061 ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
1062 <li
1063 ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
1064 <li
1065 ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
1066 <li
1067 ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
1068 <li
Ruben Brunk9c766ad2014-05-27 18:52:49 -07001069 ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
1070 <li
Igor Murashkin6c936c12014-05-13 14:51:49 -07001071 ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
1072 <li
1073 class="toc_deprecated"
1074 ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
1075 <li
1076 class="toc_deprecated"
1077 ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
1078 <li
1079 ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
1080 <li
1081 ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
1082 <li
1083 ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
1084 <li
1085 ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -08001086 <li
1087 ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
1088 <li
1089 ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
1090 <li
1091 ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
1092 <li
1093 ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
Chien-Yu Chena5cfee92018-02-15 12:34:30 -08001094 <li
1095 ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001096 </ul>
1097 </li>
1098 </ul> <!-- toc_section -->
1099 </li>
1100 <li>
1101 <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
1102 <ul class="toc_section">
1103 <li>
1104 <span class="toc_kind_header">controls</span>
1105 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001106 <li
1107 ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1108 <li
1109 ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1110 <li
1111 ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1112 <li
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -07001113 ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1114 <li
Igor Murashkin6c936c12014-05-13 14:51:49 -07001115 ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -08001116 <li
1117 ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1118 <li
1119 ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001120 </ul>
1121 </li>
1122 <li>
1123 <span class="toc_kind_header">static</span>
1124 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001125 <li
1126 ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1127 <li
1128 ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001129 </ul>
1130 </li>
1131 <li>
1132 <span class="toc_kind_header">dynamic</span>
1133 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001134 <li
1135 ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1136 <li
1137 ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1138 <li
1139 ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1140 <li
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -07001141 ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1142 <li
Igor Murashkin6c936c12014-05-13 14:51:49 -07001143 ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -08001144 <li
1145 ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1146 <li
1147 ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001148 </ul>
1149 </li>
1150 </ul> <!-- toc_section -->
1151 </li>
1152 <li>
1153 <span class="toc_section_header"><a href="#section_led">led</a></span>
1154 <ul class="toc_section">
1155 <li>
1156 <span class="toc_kind_header">controls</span>
1157 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001158 <li
1159 ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001160 </ul>
1161 </li>
1162 <li>
1163 <span class="toc_kind_header">dynamic</span>
1164 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001165 <li
1166 ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001167 </ul>
1168 </li>
1169 <li>
1170 <span class="toc_kind_header">static</span>
1171 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001172 <li
1173 ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001174 </ul>
1175 </li>
1176 </ul> <!-- toc_section -->
1177 </li>
1178 <li>
1179 <span class="toc_section_header"><a href="#section_info">info</a></span>
1180 <ul class="toc_section">
1181 <li>
1182 <span class="toc_kind_header">static</span>
1183 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001184 <li
1185 ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
Chien-Yu Chen218925a2018-01-03 12:04:48 -08001186 <li
1187 ><a href="#static_android.info.version">android.info.version</a></li>
Yin-Chia Yeh5fd38862018-09-17 11:52:08 -07001188 <li
1189 ><a href="#static_android.info.supportedBufferManagementVersion">android.info.supportedBufferManagementVersion</a></li>
Emilian Peevcda90fc2021-09-24 17:45:05 -07001190 <li
Emilian Peev9ecc6162021-10-12 13:11:27 -07001191 ><a href="#static_android.info.deviceStateSensorOrientationMap">android.info.deviceStateSensorOrientationMap</a></li>
Emilian Peevcda90fc2021-09-24 17:45:05 -07001192 <li
1193 ><a href="#static_android.info.deviceStateOrientations">android.info.deviceStateOrientations</a></li>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001194 </ul>
1195 </li>
1196 </ul> <!-- toc_section -->
1197 </li>
Zhijun He69fc0ea2013-07-17 09:42:58 -07001198 <li>
1199 <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1200 <ul class="toc_section">
1201 <li>
1202 <span class="toc_kind_header">controls</span>
1203 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001204 <li
1205 ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
Zhijun He69fc0ea2013-07-17 09:42:58 -07001206 </ul>
1207 </li>
1208 <li>
1209 <span class="toc_kind_header">dynamic</span>
1210 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001211 <li
1212 ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
Zhijun He69fc0ea2013-07-17 09:42:58 -07001213 </ul>
1214 </li>
1215 </ul> <!-- toc_section -->
1216 </li>
Igor Murashkin5c1fc682014-01-16 17:51:36 -08001217 <li>
1218 <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1219 <ul class="toc_section">
1220 <li>
1221 <span class="toc_kind_header">dynamic</span>
1222 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001223 <li
1224 ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
Igor Murashkin5c1fc682014-01-16 17:51:36 -08001225 </ul>
1226 </li>
1227 <li>
1228 <span class="toc_kind_header">static</span>
1229 <ul class="toc_section">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001230 <li
1231 ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
Igor Murashkin5c1fc682014-01-16 17:51:36 -08001232 </ul>
1233 </li>
1234 </ul> <!-- toc_section -->
1235 </li>
Zhijun He41d6f042015-01-15 18:17:24 -08001236 <li>
1237 <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1238 <ul class="toc_section">
1239 <li>
1240 <span class="toc_kind_header">controls</span>
1241 <ul class="toc_section">
1242 <li
1243 ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1244 </ul>
1245 </li>
1246 <li>
1247 <span class="toc_kind_header">dynamic</span>
1248 <ul class="toc_section">
1249 <li
1250 ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1251 </ul>
1252 </li>
Zhijun He51379152015-04-24 17:59:50 -07001253 <li>
1254 <span class="toc_kind_header">static</span>
1255 <ul class="toc_section">
1256 <li
1257 ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1258 </ul>
1259 </li>
Zhijun He41d6f042015-01-15 18:17:24 -08001260 </ul> <!-- toc_section -->
1261 </li>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -08001262 <li>
1263 <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1264 <ul class="toc_section">
1265 <li>
1266 <span class="toc_kind_header">static</span>
1267 <ul class="toc_section">
1268 <li
1269 ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1270 <li
1271 ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1272 <li
1273 ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1274 <li
1275 ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -07001276 <li
1277 ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
Emilian Peev9c7b5d32018-09-18 14:01:55 +01001278 <li
1279 ><a href="#static_android.depth.availableRecommendedDepthStreamConfigurations">android.depth.availableRecommendedDepthStreamConfigurations</a></li>
Emilian Peev65860e42019-01-04 17:49:37 +00001280 <li
1281 ><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a></li>
1282 <li
1283 ><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a></li>
1284 <li
1285 ><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a></li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -08001286 <li
1287 ><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a></li>
1288 <li
1289 ><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a></li>
1290 <li
1291 ><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a></li>
1292 <li
1293 ><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a></li>
1294 <li
1295 ><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a></li>
1296 <li
1297 ><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a></li>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -08001298 </ul>
1299 </li>
1300 </ul> <!-- toc_section -->
1301 </li>
Shuzhen Wang0144f582017-11-30 12:03:37 -08001302 <li>
1303 <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
1304 <ul class="toc_section">
1305 <li>
1306 <span class="toc_kind_header">static</span>
1307 <ul class="toc_section">
1308 <li
1309 ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
1310 <li
1311 ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
1312 </ul>
1313 </li>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -08001314 <li>
1315 <span class="toc_kind_header">dynamic</span>
1316 <ul class="toc_section">
1317 <li
1318 ><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a></li>
1319 </ul>
1320 </li>
Shuzhen Wang0144f582017-11-30 12:03:37 -08001321 </ul> <!-- toc_section -->
1322 </li>
Eino-Ville Talvalad4c0fe32018-03-13 19:46:57 -07001323 <li>
1324 <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span>
1325 <ul class="toc_section">
1326 <li>
1327 <span class="toc_kind_header">controls</span>
1328 <ul class="toc_section">
1329 <li
1330 ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1331 </ul>
1332 </li>
1333 <li>
1334 <span class="toc_kind_header">static</span>
1335 <ul class="toc_section">
1336 <li
1337 ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li>
1338 </ul>
1339 </li>
1340 <li>
1341 <span class="toc_kind_header">dynamic</span>
1342 <ul class="toc_section">
1343 <li
1344 ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li>
1345 </ul>
1346 </li>
1347 </ul> <!-- toc_section -->
1348 </li>
Shuzhen Wanga44fd452018-12-28 18:50:53 -08001349 <li>
1350 <span class="toc_section_header"><a href="#section_heic">heic</a></span>
1351 <ul class="toc_section">
1352 <li>
1353 <span class="toc_kind_header">static</span>
1354 <ul class="toc_section">
1355
1356 <li
1357 ><a href="#static_android.heic.info.supported">android.heic.info.supported</a></li>
1358 <li
1359 ><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a></li>
1360
1361 <li
1362 ><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a></li>
1363 <li
1364 ><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a></li>
1365 <li
1366 ><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a></li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -08001367 <li
1368 ><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a></li>
1369 <li
1370 ><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a></li>
1371 <li
1372 ><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a></li>
Shuzhen Wanga44fd452018-12-28 18:50:53 -08001373 </ul>
1374 </li>
1375 </ul> <!-- toc_section -->
1376 </li>
Changyeon Jo5a59d932022-01-19 13:51:47 -08001377 <li>
1378 <span class="toc_section_header"><a href="#section_automotive">automotive</a></span>
1379 <ul class="toc_section">
1380 <li>
1381 <span class="toc_kind_header">static</span>
1382 <ul class="toc_section">
1383
1384 <li
1385 ><a href="#static_android.automotive.lens.facing">android.automotive.lens.facing</a></li>
1386
1387 <li
1388 ><a href="#static_android.automotive.location">android.automotive.location</a></li>
1389 </ul>
1390 </li>
1391 </ul> <!-- toc_section -->
1392 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001393 </ul>
1394
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001395
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001396 <h1>Properties</h1>
1397 <table class="properties">
1398
1399 <thead class="thead_dummy">
1400 <tr>
1401 <th class="th_name">Property Name</th>
1402 <th class="th_type">Type</th>
1403 <th class="th_description">Description</th>
1404 <th class="th_units">Units</th>
1405 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001406 <th class="th_hal_version">HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001407 <th class="th_tags">Tags</th>
1408 </tr>
1409 </thead> <!-- so that the first occurrence of thead is not
1410 above the first occurrence of tr -->
1411<!-- <namespace name="android"> -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001412 <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001413
1414
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001415 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001416
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001417 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001418 <tr>
1419 <th class="th_name">Property Name</th>
1420 <th class="th_type">Type</th>
1421 <th class="th_description">Description</th>
1422 <th class="th_units">Units</th>
1423 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001424 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001425 <th class="th_tags">Tags</th>
1426 </tr>
1427 </thead>
1428
1429 <tbody>
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440 <tr class="entry" id="controls_android.colorCorrection.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001441 <td class="entry_name
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001442 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08001443 android.<wbr/>color<wbr/>Correction.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001444 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001445 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08001446 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001447
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001448 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001449
Igor Murashkin6c936c12014-05-13 14:51:49 -07001450
Igor Murashkinca256272014-10-02 15:27:09 -07001451 <span class="entry_type_hwlevel">[full] </span>
1452
Igor Murashkin6c936c12014-05-13 14:51:49 -07001453
1454
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001455 <ul class="entry_type_enum">
1456 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08001457 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08001458 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
Igor Murashkin43817ad2014-01-10 15:58:35 -08001459and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1460<p>All advanced white balance adjustments (not specified
1461by our white balance pipeline) must be disabled.<wbr/></p>
1462<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
1463TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1464this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001465 </li>
1466 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08001467 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07001468 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1469capture rate relative to sensor raw output.<wbr/></p>
Igor Murashkin43817ad2014-01-10 15:58:35 -08001470<p>Advanced white balance adjustments above and beyond
1471the specified white balance pipeline may be applied.<wbr/></p>
1472<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
1473the camera device uses the last frame's AWB values
1474(or defaults if AWB has never been run).<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001475 </li>
1476 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08001477 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07001478 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001479quality but the capture rate might be reduced (relative to sensor
1480raw output rate)</p>
Igor Murashkin43817ad2014-01-10 15:58:35 -08001481<p>Advanced white balance adjustments above and beyond
1482the specified white balance pipeline may be applied.<wbr/></p>
1483<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
1484the camera device uses the last frame's AWB values
1485(or defaults if AWB has never been run).<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001486 </li>
1487 </ul>
1488
1489 </td> <!-- entry_type -->
1490
1491 <td class="entry_description">
Igor Murashkin43817ad2014-01-10 15:58:35 -08001492 <p>The mode control selects how the image data is converted from the
1493sensor's native color into linear sRGB color.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001494 </td>
1495
1496 <td class="entry_units">
1497 </td>
1498
1499 <td class="entry_range">
1500 </td>
1501
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001502 <td class="entry_hal_version">
1503 <p>3.<wbr/>2</p>
1504 </td>
1505
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001506 <td class="entry_tags">
1507 </td>
1508
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001509 </tr>
1510 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001511 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001512 </tr>
1513 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001514 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07001515 <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
Igor Murashkin43817ad2014-01-10 15:58:35 -08001516control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1517application controls how the color mapping is performed.<wbr/></p>
1518<p>We define the expected processing pipeline below.<wbr/> For consistency
1519across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -07001520<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
Igor Murashkin43817ad2014-01-10 15:58:35 -08001521do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1522<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1523camera device (in the results) and be roughly correct.<wbr/></p>
1524<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1525FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1526as what was produced by the camera device in the earlier frame.<wbr/></p>
1527<p>The expected processing pipeline is as follows:</p>
1528<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1529<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1530gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1531matrix (applied after demosaic).<wbr/></p>
1532<p>The 4-channel white-balance gains are defined as:</p>
1533<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1534</code></pre>
1535<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1536output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1537These may be identical for a given camera device implementation; if
1538the camera device does not support a separate gain for even/<wbr/>odd green
1539channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1540<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1541<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1542<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 ]
1543</code></pre>
1544<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1545to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1546<p>with colors as follows:</p>
1547<pre><code>r' = I0r + I1g + I2b
1548g' = I3r + I4g + I5b
1549b' = I6r + I7g + I8b
1550</code></pre>
1551<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1552values are clipped to fit within the range.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001553 </td>
1554 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001555
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001556 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001557 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001558 </tr>
1559 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001560 <td class="entry_details" colspan="6">
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001561 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1562on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1563That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1564capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1565 </td>
1566 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001567
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001568 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001569 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001570
1571
1572 <tr class="entry" id="controls_android.colorCorrection.transform">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001573 <td class="entry_name
1574 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08001575 android.<wbr/>color<wbr/>Correction.<wbr/>transform
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001576 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001577 <td class="entry_type">
Zhijun He69fc0ea2013-07-17 09:42:58 -07001578 <span class="entry_type_name">rational</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001579 <span class="entry_type_container">x</span>
1580
1581 <span class="entry_type_array">
1582 3 x 3
1583 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07001584 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07001585
1586
Igor Murashkinca256272014-10-02 15:27:09 -07001587 <span class="entry_type_hwlevel">[full] </span>
1588
Igor Murashkin6c936c12014-05-13 14:51:49 -07001589
Igor Murashkin0b080452013-12-27 15:30:25 -08001590 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001591
1592
1593 </td> <!-- entry_type -->
1594
1595 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -08001596 <p>A color transform matrix to use to transform
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07001597from sensor RGB color space to output linear sRGB color space.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001598 </td>
1599
1600 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07001601 Unitless scale factors
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001602 </td>
1603
1604 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001605 </td>
1606
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001607 <td class="entry_hal_version">
1608 <p>3.<wbr/>2</p>
1609 </td>
1610
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001611 <td class="entry_tags">
1612 </td>
1613
1614 </tr>
1615 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001616 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001617 </tr>
1618 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001619 <td class="entry_details" colspan="6">
Zhijun He44d0b3d2014-02-04 16:42:46 -08001620 <p>This matrix is either set by the camera device when the request
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08001621<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
Igor Murashkin8aa2a112013-12-09 12:06:17 -08001622directly by the application in the request when the
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08001623<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
Zhijun He44d0b3d2014-02-04 16:42:46 -08001624<p>In the latter case,<wbr/> the camera device may round the matrix to account
1625for precision issues; the final rounded matrix should be reported back
1626in this matrix result metadata.<wbr/> The transform should keep the magnitude
1627of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1628values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -08001629<p>The valid range of each matrix element varies on different devices,<wbr/> but
1630values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -07001631 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001632 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001633
1634
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001635 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001636 <!-- end of entry -->
Zhijun He69fc0ea2013-07-17 09:42:58 -07001637
1638
1639 <tr class="entry" id="controls_android.colorCorrection.gains">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001640 <td class="entry_name
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07001641 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08001642 android.<wbr/>color<wbr/>Correction.<wbr/>gains
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001643 </td>
Zhijun He69fc0ea2013-07-17 09:42:58 -07001644 <td class="entry_type">
1645 <span class="entry_type_name">float</span>
1646 <span class="entry_type_container">x</span>
1647
1648 <span class="entry_type_array">
1649 4
1650 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07001651 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07001652
1653
Igor Murashkinca256272014-10-02 15:27:09 -07001654 <span class="entry_type_hwlevel">[full] </span>
1655
Igor Murashkin6c936c12014-05-13 14:51:49 -07001656
Igor Murashkin0b080452013-12-27 15:30:25 -08001657 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
Zhijun He69fc0ea2013-07-17 09:42:58 -07001658
1659
1660 </td> <!-- entry_type -->
1661
1662 <td class="entry_description">
Igor Murashkin43817ad2014-01-10 15:58:35 -08001663 <p>Gains applying to Bayer raw color channels for
Zhijun He25b8ac52014-02-24 09:49:37 -08001664white-balance.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -07001665 </td>
1666
1667 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07001668 Unitless gain factors
Zhijun He69fc0ea2013-07-17 09:42:58 -07001669 </td>
1670
1671 <td class="entry_range">
1672 </td>
1673
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001674 <td class="entry_hal_version">
1675 <p>3.<wbr/>2</p>
1676 </td>
1677
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001678 <td class="entry_tags">
1679 </td>
1680
1681 </tr>
1682 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001683 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001684 </tr>
1685 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001686 <td class="entry_details" colspan="6">
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07001687 <p>These per-channel gains are either set by the camera device
1688when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1689TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1690request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1691TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1692<p>The gains in the result metadata are the gains actually
1693applied by the camera device to the current frame.<wbr/></p>
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -08001694<p>The valid range of gains varies on different devices,<wbr/> but gains
1695between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1696device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1697this can create color artifacts.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001698 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001699 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001700
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07001701 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001702 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07001703 </tr>
1704 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001705 <td class="entry_details" colspan="6">
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07001706 <p>The 4-channel white-balance gains are defined in
1707the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1708for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1709is the gain for green pixels on the odd rows.<wbr/></p>
1710<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1711channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1712<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1713 </td>
1714 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001715
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001716 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001717 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001718
Zhijun He450e01c2014-07-01 18:27:42 -07001719
Zhijun He33776412014-08-18 10:55:33 -07001720 <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
Zhijun He450e01c2014-07-01 18:27:42 -07001721 <td class="entry_name
1722 " rowspan="3">
Zhijun He33776412014-08-18 10:55:33 -07001723 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
Zhijun He450e01c2014-07-01 18:27:42 -07001724 </td>
1725 <td class="entry_type">
1726 <span class="entry_type_name entry_type_name_enum">byte</span>
1727
1728 <span class="entry_type_visibility"> [public]</span>
1729
1730
Igor Murashkinca256272014-10-02 15:27:09 -07001731 <span class="entry_type_hwlevel">[legacy] </span>
1732
Zhijun He450e01c2014-07-01 18:27:42 -07001733
1734
1735 <ul class="entry_type_enum">
1736 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08001737 <span class="entry_type_enum_name">OFF (v3.2)</span>
Zhijun He450e01c2014-07-01 18:27:42 -07001738 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1739 </li>
1740 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08001741 <span class="entry_type_enum_name">FAST (v3.2)</span>
Zhijun He450e01c2014-07-01 18:27:42 -07001742 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1743relative to sensor raw output.<wbr/></p></span>
1744 </li>
1745 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08001746 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001747 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1748reduced (relative to sensor raw output rate)</p></span>
Zhijun He450e01c2014-07-01 18:27:42 -07001749 </li>
1750 </ul>
1751
1752 </td> <!-- entry_type -->
1753
1754 <td class="entry_description">
1755 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1756 </td>
1757
1758 <td class="entry_units">
1759 </td>
1760
1761 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07001762 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
Zhijun He450e01c2014-07-01 18:27:42 -07001763 </td>
1764
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001765 <td class="entry_hal_version">
1766 <p>3.<wbr/>2</p>
1767 </td>
1768
Zhijun He450e01c2014-07-01 18:27:42 -07001769 <td class="entry_tags">
1770 </td>
1771
1772 </tr>
1773 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001774 <th class="th_details" colspan="6">Details</th>
Zhijun He450e01c2014-07-01 18:27:42 -07001775 </tr>
1776 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001777 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07001778 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
Zhijun He450e01c2014-07-01 18:27:42 -07001779can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1780the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1781minimize the chromatic artifacts that may occur along the object boundaries in an
1782image.<wbr/></p>
1783<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1784correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1785use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1786capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1787applying aberration correction.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -07001788<p>LEGACY devices will always be in FAST mode.<wbr/></p>
Zhijun He450e01c2014-07-01 18:27:42 -07001789 </td>
1790 </tr>
1791
1792
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001793 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He450e01c2014-07-01 18:27:42 -07001794 <!-- end of entry -->
1795
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001796
1797
1798 <!-- end of kind -->
1799 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001800 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001801
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001802 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001803 <tr>
1804 <th class="th_name">Property Name</th>
1805 <th class="th_type">Type</th>
1806 <th class="th_description">Description</th>
1807 <th class="th_units">Units</th>
1808 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001809 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001810 <th class="th_tags">Tags</th>
1811 </tr>
1812 </thead>
1813
1814 <tbody>
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
Zhijun He602d3702014-05-02 17:38:15 -07001825 <tr class="entry" id="dynamic_android.colorCorrection.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001826 <td class="entry_name
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001827 " rowspan="5">
Zhijun He602d3702014-05-02 17:38:15 -07001828 android.<wbr/>color<wbr/>Correction.<wbr/>mode
1829 </td>
1830 <td class="entry_type">
1831 <span class="entry_type_name entry_type_name_enum">byte</span>
1832
1833 <span class="entry_type_visibility"> [public]</span>
1834
Igor Murashkin6c936c12014-05-13 14:51:49 -07001835
Igor Murashkinca256272014-10-02 15:27:09 -07001836 <span class="entry_type_hwlevel">[full] </span>
1837
Igor Murashkin6c936c12014-05-13 14:51:49 -07001838
1839
Zhijun He602d3702014-05-02 17:38:15 -07001840 <ul class="entry_type_enum">
1841 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08001842 <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07001843 <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1844and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1845<p>All advanced white balance adjustments (not specified
1846by our white balance pipeline) must be disabled.<wbr/></p>
1847<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
1848TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1849this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1850 </li>
1851 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08001852 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07001853 <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1854capture rate relative to sensor raw output.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07001855<p>Advanced white balance adjustments above and beyond
1856the specified white balance pipeline may be applied.<wbr/></p>
1857<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
1858the camera device uses the last frame's AWB values
1859(or defaults if AWB has never been run).<wbr/></p></span>
1860 </li>
1861 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08001862 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07001863 <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001864quality but the capture rate might be reduced (relative to sensor
1865raw output rate)</p>
Zhijun He602d3702014-05-02 17:38:15 -07001866<p>Advanced white balance adjustments above and beyond
1867the specified white balance pipeline may be applied.<wbr/></p>
1868<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
1869the camera device uses the last frame's AWB values
1870(or defaults if AWB has never been run).<wbr/></p></span>
1871 </li>
1872 </ul>
1873
1874 </td> <!-- entry_type -->
1875
1876 <td class="entry_description">
1877 <p>The mode control selects how the image data is converted from the
1878sensor's native color into linear sRGB color.<wbr/></p>
1879 </td>
1880
1881 <td class="entry_units">
1882 </td>
1883
1884 <td class="entry_range">
1885 </td>
1886
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001887 <td class="entry_hal_version">
1888 <p>3.<wbr/>2</p>
1889 </td>
1890
Zhijun He602d3702014-05-02 17:38:15 -07001891 <td class="entry_tags">
1892 </td>
1893
1894 </tr>
1895 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001896 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07001897 </tr>
1898 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001899 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07001900 <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
Zhijun He602d3702014-05-02 17:38:15 -07001901control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1902application controls how the color mapping is performed.<wbr/></p>
1903<p>We define the expected processing pipeline below.<wbr/> For consistency
1904across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -07001905<p>When either FAST or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
Zhijun He602d3702014-05-02 17:38:15 -07001906do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1907<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1908camera device (in the results) and be roughly correct.<wbr/></p>
1909<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1910FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1911as what was produced by the camera device in the earlier frame.<wbr/></p>
1912<p>The expected processing pipeline is as follows:</p>
1913<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1914<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1915gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1916matrix (applied after demosaic).<wbr/></p>
1917<p>The 4-channel white-balance gains are defined as:</p>
1918<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1919</code></pre>
1920<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1921output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1922These may be identical for a given camera device implementation; if
1923the camera device does not support a separate gain for even/<wbr/>odd green
1924channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1925<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1926<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1927<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 ]
1928</code></pre>
1929<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1930to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1931<p>with colors as follows:</p>
1932<pre><code>r' = I0r + I1g + I2b
1933g' = I3r + I4g + I5b
1934b' = I6r + I7g + I8b
1935</code></pre>
1936<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1937values are clipped to fit within the range.<wbr/></p>
1938 </td>
1939 </tr>
1940
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001941 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001942 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001943 </tr>
1944 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001945 <td class="entry_details" colspan="6">
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07001946 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1947on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1948That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1949capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1950 </td>
1951 </tr>
Zhijun He602d3702014-05-02 17:38:15 -07001952
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001953 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -07001954 <!-- end of entry -->
1955
1956
Zhijun He69fc0ea2013-07-17 09:42:58 -07001957 <tr class="entry" id="dynamic_android.colorCorrection.transform">
Igor Murashkin6c936c12014-05-13 14:51:49 -07001958 <td class="entry_name
1959 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08001960 android.<wbr/>color<wbr/>Correction.<wbr/>transform
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001961 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001962 <td class="entry_type">
Zhijun He69fc0ea2013-07-17 09:42:58 -07001963 <span class="entry_type_name">rational</span>
1964 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001965
Zhijun He69fc0ea2013-07-17 09:42:58 -07001966 <span class="entry_type_array">
1967 3 x 3
1968 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07001969 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07001970
1971
Igor Murashkinca256272014-10-02 15:27:09 -07001972 <span class="entry_type_hwlevel">[full] </span>
1973
Igor Murashkin6c936c12014-05-13 14:51:49 -07001974
Igor Murashkin0b080452013-12-27 15:30:25 -08001975 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001976
Igor Murashkin08b8aad2012-11-29 15:23:03 -08001977
1978 </td> <!-- entry_type -->
1979
1980 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -08001981 <p>A color transform matrix to use to transform
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07001982from sensor RGB color space to output linear sRGB color space.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -07001983 </td>
1984
1985 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07001986 Unitless scale factors
Zhijun He69fc0ea2013-07-17 09:42:58 -07001987 </td>
1988
1989 <td class="entry_range">
Zhijun He69fc0ea2013-07-17 09:42:58 -07001990 </td>
1991
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08001992 <td class="entry_hal_version">
1993 <p>3.<wbr/>2</p>
1994 </td>
1995
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08001996 <td class="entry_tags">
1997 </td>
1998
1999 </tr>
2000 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002001 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002002 </tr>
2003 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002004 <td class="entry_details" colspan="6">
Zhijun He44d0b3d2014-02-04 16:42:46 -08002005 <p>This matrix is either set by the camera device when the request
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08002006<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
Igor Murashkin8aa2a112013-12-09 12:06:17 -08002007directly by the application in the request when the
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08002008<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
Zhijun He44d0b3d2014-02-04 16:42:46 -08002009<p>In the latter case,<wbr/> the camera device may round the matrix to account
2010for precision issues; the final rounded matrix should be reported back
2011in this matrix result metadata.<wbr/> The transform should keep the magnitude
2012of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
2013values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -08002014<p>The valid range of each matrix element varies on different devices,<wbr/> but
2015values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -07002016 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002017 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002018
2019
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002020 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002021 <!-- end of entry -->
Zhijun He69fc0ea2013-07-17 09:42:58 -07002022
2023
2024 <tr class="entry" id="dynamic_android.colorCorrection.gains">
Igor Murashkin6c936c12014-05-13 14:51:49 -07002025 <td class="entry_name
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07002026 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08002027 android.<wbr/>color<wbr/>Correction.<wbr/>gains
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002028 </td>
Zhijun He69fc0ea2013-07-17 09:42:58 -07002029 <td class="entry_type">
2030 <span class="entry_type_name">float</span>
2031 <span class="entry_type_container">x</span>
2032
2033 <span class="entry_type_array">
2034 4
2035 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07002036 <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07002037
2038
Igor Murashkinca256272014-10-02 15:27:09 -07002039 <span class="entry_type_hwlevel">[full] </span>
2040
Igor Murashkin6c936c12014-05-13 14:51:49 -07002041
Igor Murashkin0b080452013-12-27 15:30:25 -08002042 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
Zhijun He69fc0ea2013-07-17 09:42:58 -07002043
2044
2045 </td> <!-- entry_type -->
2046
2047 <td class="entry_description">
Igor Murashkin43817ad2014-01-10 15:58:35 -08002048 <p>Gains applying to Bayer raw color channels for
Zhijun He25b8ac52014-02-24 09:49:37 -08002049white-balance.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002050 </td>
2051
2052 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002053 Unitless gain factors
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002054 </td>
2055
2056 <td class="entry_range">
2057 </td>
2058
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002059 <td class="entry_hal_version">
2060 <p>3.<wbr/>2</p>
2061 </td>
2062
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002063 <td class="entry_tags">
2064 </td>
2065
2066 </tr>
2067 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002068 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002069 </tr>
2070 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002071 <td class="entry_details" colspan="6">
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07002072 <p>These per-channel gains are either set by the camera device
2073when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
2074TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
2075request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
2076TRANSFORM_<wbr/>MATRIX.<wbr/></p>
2077<p>The gains in the result metadata are the gains actually
2078applied by the camera device to the current frame.<wbr/></p>
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -08002079<p>The valid range of gains varies on different devices,<wbr/> but gains
2080between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
2081device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
2082this can create color artifacts.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002083 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002084 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002085
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07002086 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002087 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07002088 </tr>
2089 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002090 <td class="entry_details" colspan="6">
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07002091 <p>The 4-channel white-balance gains are defined in
2092the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
2093for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
2094is the gain for green pixels on the odd rows.<wbr/></p>
2095<p>If a HAL does not support a separate gain for even/<wbr/>odd green
2096channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
2097<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
2098 </td>
2099 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002100
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002101 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002102 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002103
Zhijun He450e01c2014-07-01 18:27:42 -07002104
Zhijun He33776412014-08-18 10:55:33 -07002105 <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
Zhijun He450e01c2014-07-01 18:27:42 -07002106 <td class="entry_name
2107 " rowspan="3">
Zhijun He33776412014-08-18 10:55:33 -07002108 android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
Zhijun He450e01c2014-07-01 18:27:42 -07002109 </td>
2110 <td class="entry_type">
2111 <span class="entry_type_name entry_type_name_enum">byte</span>
2112
2113 <span class="entry_type_visibility"> [public]</span>
2114
2115
Igor Murashkinca256272014-10-02 15:27:09 -07002116 <span class="entry_type_hwlevel">[legacy] </span>
2117
Zhijun He450e01c2014-07-01 18:27:42 -07002118
2119
2120 <ul class="entry_type_enum">
2121 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002122 <span class="entry_type_enum_name">OFF (v3.2)</span>
Zhijun He450e01c2014-07-01 18:27:42 -07002123 <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
2124 </li>
2125 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002126 <span class="entry_type_enum_name">FAST (v3.2)</span>
Zhijun He450e01c2014-07-01 18:27:42 -07002127 <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
2128relative to sensor raw output.<wbr/></p></span>
2129 </li>
2130 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002131 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07002132 <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
2133reduced (relative to sensor raw output rate)</p></span>
Zhijun He450e01c2014-07-01 18:27:42 -07002134 </li>
2135 </ul>
2136
2137 </td> <!-- entry_type -->
2138
2139 <td class="entry_description">
2140 <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
2141 </td>
2142
2143 <td class="entry_units">
2144 </td>
2145
2146 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002147 <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
Zhijun He450e01c2014-07-01 18:27:42 -07002148 </td>
2149
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002150 <td class="entry_hal_version">
2151 <p>3.<wbr/>2</p>
2152 </td>
2153
Zhijun He450e01c2014-07-01 18:27:42 -07002154 <td class="entry_tags">
2155 </td>
2156
2157 </tr>
2158 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002159 <th class="th_details" colspan="6">Details</th>
Zhijun He450e01c2014-07-01 18:27:42 -07002160 </tr>
2161 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002162 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002163 <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
Zhijun He450e01c2014-07-01 18:27:42 -07002164can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
2165the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
2166minimize the chromatic artifacts that may occur along the object boundaries in an
2167image.<wbr/></p>
2168<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
2169correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
2170use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
2171capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
2172applying aberration correction.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -07002173<p>LEGACY devices will always be in FAST mode.<wbr/></p>
Zhijun He450e01c2014-07-01 18:27:42 -07002174 </td>
2175 </tr>
2176
2177
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002178 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He450e01c2014-07-01 18:27:42 -07002179 <!-- end of entry -->
2180
2181
2182
2183 <!-- end of kind -->
2184 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002185 <tr><td colspan="7" class="kind">static</td></tr>
Zhijun He450e01c2014-07-01 18:27:42 -07002186
2187 <thead class="entries_header">
2188 <tr>
2189 <th class="th_name">Property Name</th>
2190 <th class="th_type">Type</th>
2191 <th class="th_description">Description</th>
2192 <th class="th_units">Units</th>
2193 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002194 <th class="th_hal_version">Initial HIDL HAL version</th>
Zhijun He450e01c2014-07-01 18:27:42 -07002195 <th class="th_tags">Tags</th>
2196 </tr>
2197 </thead>
2198
2199 <tbody>
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
Zhijun He33776412014-08-18 10:55:33 -07002210 <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
Zhijun He450e01c2014-07-01 18:27:42 -07002211 <td class="entry_name
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07002212 " rowspan="5">
Zhijun He33776412014-08-18 10:55:33 -07002213 android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
Zhijun He450e01c2014-07-01 18:27:42 -07002214 </td>
2215 <td class="entry_type">
2216 <span class="entry_type_name">byte</span>
2217 <span class="entry_type_container">x</span>
2218
2219 <span class="entry_type_array">
2220 n
2221 </span>
2222 <span class="entry_type_visibility"> [public as enumList]</span>
2223
2224
Igor Murashkinca256272014-10-02 15:27:09 -07002225 <span class="entry_type_hwlevel">[legacy] </span>
2226
Zhijun He450e01c2014-07-01 18:27:42 -07002227
2228 <div class="entry_type_notes">list of enums</div>
2229
2230
2231 </td> <!-- entry_type -->
2232
2233 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002234 <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
2235supported by this camera device.<wbr/></p>
Zhijun He450e01c2014-07-01 18:27:42 -07002236 </td>
2237
2238 <td class="entry_units">
2239 </td>
2240
2241 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002242 <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
Zhijun He450e01c2014-07-01 18:27:42 -07002243 </td>
2244
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002245 <td class="entry_hal_version">
2246 <p>3.<wbr/>2</p>
2247 </td>
2248
Zhijun He450e01c2014-07-01 18:27:42 -07002249 <td class="entry_tags">
2250 <ul class="entry_tags">
2251 <li><a href="#tag_V1">V1</a></li>
2252 </ul>
2253 </td>
2254
2255 </tr>
2256 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002257 <th class="th_details" colspan="6">Details</th>
Zhijun He450e01c2014-07-01 18:27:42 -07002258 </tr>
2259 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002260 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002261 <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
2262aberration correction modes are available for a device,<wbr/> this list will solely include
Yin-Chia Yehaed8cea2015-01-06 10:30:16 -08002263OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2264<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2265OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -07002266<p>LEGACY devices will always only support FAST mode.<wbr/></p>
Zhijun He450e01c2014-07-01 18:27:42 -07002267 </td>
2268 </tr>
2269
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07002270 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002271 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07002272 </tr>
2273 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002274 <td class="entry_details" colspan="6">
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -07002275 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2276on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2277That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2278capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2279 </td>
2280 </tr>
Zhijun He450e01c2014-07-01 18:27:42 -07002281
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002282 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He450e01c2014-07-01 18:27:42 -07002283 <!-- end of entry -->
2284
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002285
2286
2287 <!-- end of kind -->
2288 </tbody>
2289
2290 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002291 <tr><td colspan="7" id="section_control" class="section">control</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002292
2293
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002294 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002295
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07002296 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002297 <tr>
2298 <th class="th_name">Property Name</th>
2299 <th class="th_type">Type</th>
2300 <th class="th_description">Description</th>
2301 <th class="th_units">Units</th>
2302 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002303 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002304 <th class="th_tags">Tags</th>
2305 </tr>
2306 </thead>
2307
2308 <tbody>
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319 <tr class="entry" id="controls_android.control.aeAntibandingMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07002320 <td class="entry_name
2321 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08002322 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002323 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002324 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08002325 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002326
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07002327 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002328
Igor Murashkin6c936c12014-05-13 14:51:49 -07002329
Igor Murashkinca256272014-10-02 15:27:09 -07002330 <span class="entry_type_hwlevel">[legacy] </span>
2331
Igor Murashkin6c936c12014-05-13 14:51:49 -07002332
2333
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002334 <ul class="entry_type_enum">
2335 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002336 <span class="entry_type_enum_name">OFF (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08002337 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2338avoid banding problems.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002339 </li>
2340 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002341 <span class="entry_type_enum_name">50HZ (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08002342 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2343avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002344 </li>
2345 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002346 <span class="entry_type_enum_name">60HZ (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08002347 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2348avoid banding problems with 60Hz illumination
2349sources.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002350 </li>
2351 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002352 <span class="entry_type_enum_name">AUTO (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08002353 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2354antibanding routine to the current illumination
Yin-Chia Yeh9d1b4522014-11-25 11:51:48 -08002355condition.<wbr/> This is the default mode if AUTO is
2356available on given camera device.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002357 </li>
2358 </ul>
2359
2360 </td> <!-- entry_type -->
2361
2362 <td class="entry_description">
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002363 <p>The desired setting for the camera device's auto-exposure
2364algorithm's antibanding compensation.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002365 </td>
2366
2367 <td class="entry_units">
2368 </td>
2369
2370 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08002371 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002372 </td>
2373
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002374 <td class="entry_hal_version">
2375 <p>3.<wbr/>2</p>
2376 </td>
2377
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002378 <td class="entry_tags">
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002379 <ul class="entry_tags">
2380 <li><a href="#tag_BC">BC</a></li>
2381 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002382 </td>
2383
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002384 </tr>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002385 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002386 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002387 </tr>
2388 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002389 <td class="entry_details" colspan="6">
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002390 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2391lights,<wbr/> flicker at the rate of the power supply frequency
2392(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2393typically not noticeable to a person,<wbr/> it can be visible to
2394a camera device.<wbr/> If a camera sets its exposure time to the
2395wrong value,<wbr/> the flicker may become visible in the
2396viewfinder as flicker or in a final captured image,<wbr/> as a
2397set of variable-brightness bands across the image.<wbr/></p>
2398<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2399include antibanding routines that ensure that the chosen
2400exposure value will not cause such banding.<wbr/> The choice of
2401exposure time depends on the rate of flicker,<wbr/> which the
2402camera device can detect automatically,<wbr/> or the expected
2403rate can be selected by the application using this
2404control.<wbr/></p>
2405<p>A given camera device may not support all of the possible
2406options for the antibanding mode.<wbr/> The
2407<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2408the available modes for a given camera device.<wbr/></p>
Yin-Chia Yeh9d1b4522014-11-25 11:51:48 -08002409<p>AUTO mode is the default if it is available on given
2410camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2411default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2412and 60HZ will be available.<wbr/></p>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002413<p>If manual exposure control is enabled (by setting
2414<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/>
2415then this setting has no effect,<wbr/> and the application must
2416ensure it selects exposure times that do not cause banding
2417issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2418the application in this.<wbr/></p>
2419 </td>
2420 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002421
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002422 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002423 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002424 </tr>
2425 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002426 <td class="entry_details" colspan="6">
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002427 <p>For all capture request templates,<wbr/> this field must be set
Yin-Chia Yeh9d1b4522014-11-25 11:51:48 -08002428to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2429the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
243060HZ must be available.<wbr/></p>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08002431<p>If manual exposure control is enabled (by setting
2432<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/>
2433then the exposure values provided by the application must not be
2434adjusted for antibanding.<wbr/></p>
2435 </td>
2436 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002437
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002438 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002439 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002440
2441
2442 <tr class="entry" id="controls_android.control.aeExposureCompensation">
Igor Murashkin6c936c12014-05-13 14:51:49 -07002443 <td class="entry_name
2444 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08002445 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002446 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002447 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08002448 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002449
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07002450 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002451
2452
Igor Murashkinca256272014-10-02 15:27:09 -07002453 <span class="entry_type_hwlevel">[legacy] </span>
2454
Igor Murashkin6c936c12014-05-13 14:51:49 -07002455
2456
2457
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002458 </td> <!-- entry_type -->
2459
2460 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07002461 <p>Adjustment to auto-exposure (AE) target image
2462brightness.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002463 </td>
2464
2465 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002466 Compensation steps
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002467 </td>
2468
2469 <td class="entry_range">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07002470 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002471 </td>
2472
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002473 <td class="entry_hal_version">
2474 <p>3.<wbr/>2</p>
2475 </td>
2476
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002477 <td class="entry_tags">
2478 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08002479 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002480 </ul>
2481 </td>
2482
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002483 </tr>
2484 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002485 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002486 </tr>
2487 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002488 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07002489 <p>The adjustment is measured as a count of steps,<wbr/> with the
2490step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2491allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2492<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2493will mean an exposure compensation of +2 EV; -3 will mean an
2494exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2495of image brightness.<wbr/> Note that this control will only be
2496effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2497will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
Yin-Chia Yeh7754e6a2014-05-05 14:26:03 -07002498<p>In the event of exposure compensation value being changed,<wbr/> camera device
2499may take several frames to reach the newly requested exposure target.<wbr/>
Igor Murashkin6c936c12014-05-13 14:51:49 -07002500During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
Yin-Chia Yeh7754e6a2014-05-05 14:26:03 -07002501state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2502change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
Igor Murashkin6c936c12014-05-13 14:51:49 -07002503FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002504 </td>
2505 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002506
2507
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002508 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002509 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002510
2511
2512 <tr class="entry" id="controls_android.control.aeLock">
Igor Murashkin6c936c12014-05-13 14:51:49 -07002513 <td class="entry_name
2514 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08002515 android.<wbr/>control.<wbr/>ae<wbr/>Lock
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002516 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002517 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08002518 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002519
Igor Murashkinb8dc8812013-07-17 16:29:34 -07002520 <span class="entry_type_visibility"> [public as boolean]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002521
Igor Murashkin6c936c12014-05-13 14:51:49 -07002522
Igor Murashkinca256272014-10-02 15:27:09 -07002523 <span class="entry_type_hwlevel">[legacy] </span>
2524
Igor Murashkin6c936c12014-05-13 14:51:49 -07002525
2526
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002527 <ul class="entry_type_enum">
2528 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002529 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07002530 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
Igor Murashkina10351a2014-01-15 17:05:22 -08002531is free to update its parameters.<wbr/></p></span>
Eino-Ville Talvala76548fe2013-01-11 13:57:19 -08002532 </li>
2533 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002534 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07002535 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
Igor Murashkina10351a2014-01-15 17:05:22 -08002536must not update the exposure and sensitivity parameters
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07002537while the lock is active.<wbr/></p>
2538<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
Igor Murashkinca256272014-10-02 15:27:09 -07002539will still take effect while auto-exposure is locked.<wbr/></p>
2540<p>Some rare LEGACY devices may not support
2541this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002542 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002543 </ul>
2544
2545 </td> <!-- entry_type -->
2546
2547 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07002548 <p>Whether auto-exposure (AE) is currently locked to its latest
Zhijun He44d0b3d2014-02-04 16:42:46 -08002549calculated values.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002550 </td>
2551
2552 <td class="entry_units">
2553 </td>
2554
2555 <td class="entry_range">
2556 </td>
2557
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002558 <td class="entry_hal_version">
2559 <p>3.<wbr/>2</p>
2560 </td>
2561
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002562 <td class="entry_tags">
2563 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08002564 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002565 </ul>
2566 </td>
2567
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002568 </tr>
2569 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002570 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002571 </tr>
2572 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002573 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002574 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2575and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2576<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2577the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2578ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
Yin-Chia Yeh7754e6a2014-05-05 14:26:03 -07002579<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
2580is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
Zhijun He44d0b3d2014-02-04 16:42:46 -08002581<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2582when AE is already locked,<wbr/> the camera device will not change the exposure time
2583(<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>)
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -08002584parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
Zhijun He44d0b3d2014-02-04 16:42:46 -08002585is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
Zhijun Hee7cd5562015-02-05 14:32:57 -08002586<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/>
2587Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2588<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2589the AE if AE is locked by the camera device internally during precapture metering
2590sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2591ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2592will never succeed in a sequence of preview requests where AE lock is always set
2593to <code>false</code>.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002594<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2595get locked do not necessarily correspond to the settings that were present in the
2596latest capture result received from the camera device,<wbr/> since additional captures
2597and AE updates may have occurred even before the result was sent out.<wbr/> If an
2598application is switching between automatic and manual control and wishes to eliminate
2599any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2600<ol>
2601<li>Starting in auto-AE mode:</li>
2602<li>Lock AE</li>
2603<li>Wait for the first result to be output that has the AE locked</li>
2604<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2605<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2606</ol>
Zhijun He44d0b3d2014-02-04 16:42:46 -08002607<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>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002608 </td>
2609 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002610
2611
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002612 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002613 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002614
2615
2616 <tr class="entry" id="controls_android.control.aeMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07002617 <td class="entry_name
2618 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08002619 android.<wbr/>control.<wbr/>ae<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002620 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002621 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08002622 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002623
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07002624 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002625
Igor Murashkin6c936c12014-05-13 14:51:49 -07002626
Igor Murashkinca256272014-10-02 15:27:09 -07002627 <span class="entry_type_hwlevel">[legacy] </span>
2628
Igor Murashkin6c936c12014-05-13 14:51:49 -07002629
2630
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002631 <ul class="entry_type_enum">
2632 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002633 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07002634 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2635<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
Igor Murashkina10351a2014-01-15 17:05:22 -08002636<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2637<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2638device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
Igor Murashkinca256272014-10-02 15:27:09 -07002639a flash unit for this camera device.<wbr/></p>
Yin-Chia Yeh668e43c2014-11-12 11:38:10 -08002640<p>Note that auto-white balance (AWB) and auto-focus (AF)
2641behavior is device dependent when AE is in OFF mode.<wbr/>
2642To have consistent behavior across different devices,<wbr/>
2643it is recommended to either set AWB and AF to OFF mode
2644or lock AWB and AF before setting AE to OFF.<wbr/>
2645See <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/>
2646<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>
2647for more details.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -07002648<p>LEGACY devices do not support the OFF mode and will
2649override attempts to use this value to ON.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002650 </li>
2651 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002652 <span class="entry_type_enum_name">ON (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08002653 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07002654with no flash control.<wbr/></p>
2655<p>The application's values for
Igor Murashkina10351a2014-01-15 17:05:22 -08002656<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2657<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2658<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2659application has control over the various
2660android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002661 </li>
2662 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002663 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08002664 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2665the camera's flash unit,<wbr/> firing it in low-light
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07002666conditions.<wbr/></p>
2667<p>The flash may be fired during a precapture sequence
2668(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2669may be fired for captures for which the
Igor Murashkina10351a2014-01-15 17:05:22 -08002670<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2671STILL_<wbr/>CAPTURE</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002672 </li>
2673 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002674 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08002675 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2676the camera's flash unit,<wbr/> always firing it for still
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07002677captures.<wbr/></p>
2678<p>The flash may be fired during a precapture sequence
2679(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2680will always be fired for captures for which the
Igor Murashkina10351a2014-01-15 17:05:22 -08002681<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2682STILL_<wbr/>CAPTURE</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002683 </li>
2684 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002685 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08002686 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07002687reduction.<wbr/></p>
2688<p>If deemed necessary by the camera device,<wbr/> a red eye
2689reduction flash will fire during the precapture
2690sequence.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002691 </li>
Chien-Yu Chen11f62a52018-01-11 11:32:52 -08002692 <li>
2693 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2694 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2695<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2696metering (and continuous focus if active) should be quickly recaculated to account
2697for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2698<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2699other available AE modes.<wbr/></p>
Chien-Yu Chen06513f12018-03-15 11:17:20 -07002700<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
2701be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
Chien-Yu Chen11f62a52018-01-11 11:32:52 -08002702flash.<wbr/></p></span>
2703 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002704 </ul>
2705
2706 </td> <!-- entry_type -->
2707
2708 <td class="entry_description">
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08002709 <p>The desired mode for the camera device's
2710auto-exposure routine.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002711 </td>
2712
2713 <td class="entry_units">
2714 </td>
2715
2716 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08002717 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002718 </td>
2719
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002720 <td class="entry_hal_version">
2721 <p>3.<wbr/>2</p>
2722 </td>
2723
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002724 <td class="entry_tags">
2725 <ul class="entry_tags">
2726 <li><a href="#tag_BC">BC</a></li>
2727 </ul>
2728 </td>
2729
2730 </tr>
2731 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002732 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002733 </tr>
2734 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002735 <td class="entry_details" colspan="6">
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08002736 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2737AUTO.<wbr/></p>
2738<p>When set to any of the ON modes,<wbr/> the camera device's
2739auto-exposure routine is enabled,<wbr/> overriding the
2740application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2741and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2742<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2743<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2744is selected,<wbr/> the camera device's flash unit controls are
2745also overridden.<wbr/></p>
2746<p>The FLASH modes are only available if the camera device
2747has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2748<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2749ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2750<p>When set to any of the ON modes,<wbr/> the values chosen by the
2751camera device auto-exposure routine for the overridden
2752fields for a given capture will be available in its
2753CaptureResult.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002754 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002755 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002756
2757
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002758 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002759 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002760
2761
2762 <tr class="entry" id="controls_android.control.aeRegions">
Igor Murashkin6c936c12014-05-13 14:51:49 -07002763 <td class="entry_name
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07002764 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08002765 android.<wbr/>control.<wbr/>ae<wbr/>Regions
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002766 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002767 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08002768 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002769 <span class="entry_type_container">x</span>
2770
2771 <span class="entry_type_array">
2772 5 x area_count
2773 </span>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07002774 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002775
2776
Igor Murashkin6c936c12014-05-13 14:51:49 -07002777
2778
2779
Igor Murashkinca256272014-10-02 15:27:09 -07002780
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002781 </td> <!-- entry_type -->
2782
2783 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002784 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002785 </td>
2786
2787 <td class="entry_units">
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07002788 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
2789 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
2790 distortion correction capability and mode
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002791 </td>
2792
2793 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002794 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07002795<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
2796depending on distortion correction capability and mode</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002797 </td>
2798
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002799 <td class="entry_hal_version">
2800 <p>3.<wbr/>2</p>
2801 </td>
2802
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002803 <td class="entry_tags">
2804 <ul class="entry_tags">
2805 <li><a href="#tag_BC">BC</a></li>
2806 </ul>
2807 </td>
2808
2809 </tr>
2810 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002811 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002812 </tr>
2813 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002814 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002815 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
Yin-Chia Yeh8554ed52014-09-04 09:33:34 -07002816Otherwise will always be present.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002817<p>The maximum number of regions supported by the device is determined by the value
2818of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07002819<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
2820system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
2821the top-left pixel in the active pixel array,<wbr/> and
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08002822(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07002823<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
2824active pixel array.<wbr/></p>
2825<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
2826system depends on the mode being set.<wbr/>
2827When the distortion correction mode is OFF,<wbr/> the coordinate system follows
2828<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
2829<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
2830(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2831<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
2832pixel in the pre-correction active pixel array.<wbr/>
2833When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
2834<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
2835<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
2836(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2837<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
2838active pixel array.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002839<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
Yin-Chia Yehdc182572014-05-14 14:05:20 -07002840for every pixel in the area.<wbr/> This means that a large metering area
2841with the same weight as a smaller area will have more effect in
2842the metering result.<wbr/> Metering areas can partially overlap and the
2843camera device will add the weights in the overlap region.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002844<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2845region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2846weight is ignored.<wbr/></p>
2847<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2848camera device.<wbr/></p>
2849<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
2850capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2851region and output only the intersection rectangle as the metering region in the result
2852metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2853not reported in the result metadata.<wbr/></p>
Shuzhen Wangfc392322022-03-28 12:41:41 -07002854<p>When setting the AE metering regions,<wbr/> the application must consider the additional
2855crop resulted from the aspect ratio differences between the preview stream and
2856<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
2857active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
2858the boundary of AE regions will be [0,<wbr/> y_<wbr/>crop] and
2859[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
2860[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
2861mismatch.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08002862<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
2863preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
2864pre-zoom field of view.<wbr/> This means that the same aeRegions values at different
2865<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions
2866coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
2867zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
2868aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
2869scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
2870activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
2871mode.<wbr/></p>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -08002872<p>For camera devices with the
2873<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
2874capability,<wbr/>
2875<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
2876<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
2877coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
2878<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002879 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002880 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002881
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07002882 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002883 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07002884 </tr>
2885 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002886 <td class="entry_details" colspan="6">
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07002887 <p>The HAL level representation of MeteringRectangle[] is a
2888int[5 * area_<wbr/>count].<wbr/>
2889Every five elements represent a metering region of
2890(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2891The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07002892exclusive on xmax and ymax.<wbr/>
2893HAL must always report metering regions in the coordinate system of pre-correction
2894active array.<wbr/></p>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07002895 </td>
2896 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002897
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002898 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002899 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002900
2901
2902 <tr class="entry" id="controls_android.control.aeTargetFpsRange">
Igor Murashkin6c936c12014-05-13 14:51:49 -07002903 <td class="entry_name
2904 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08002905 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002906 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002907 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08002908 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002909 <span class="entry_type_container">x</span>
2910
2911 <span class="entry_type_array">
2912 2
2913 </span>
Igor Murashkin35a108f2014-05-27 10:51:25 -07002914 <span class="entry_type_visibility"> [public as rangeInt]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002915
2916
Igor Murashkinca256272014-10-02 15:27:09 -07002917 <span class="entry_type_hwlevel">[legacy] </span>
2918
Igor Murashkin6c936c12014-05-13 14:51:49 -07002919
2920
2921
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002922 </td> <!-- entry_type -->
2923
2924 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002925 <p>Range over which the auto-exposure routine can
2926adjust the capture frame rate to maintain good
2927exposure.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002928 </td>
2929
2930 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002931 Frames per second (FPS)
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002932 </td>
2933
2934 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002935 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002936 </td>
2937
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002938 <td class="entry_hal_version">
2939 <p>3.<wbr/>2</p>
2940 </td>
2941
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002942 <td class="entry_tags">
2943 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08002944 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002945 </ul>
2946 </td>
2947
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002948 </tr>
2949 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002950 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002951 </tr>
2952 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002953 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07002954 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07002955manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2956<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002957 </td>
2958 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002959
2960
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08002961 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08002962 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08002963
2964
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07002965 <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
Igor Murashkin6c936c12014-05-13 14:51:49 -07002966 <td class="entry_name
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07002967 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08002968 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002969 </td>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07002970 <td class="entry_type">
2971 <span class="entry_type_name entry_type_name_enum">byte</span>
2972
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07002973 <span class="entry_type_visibility"> [public]</span>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07002974
Igor Murashkin6c936c12014-05-13 14:51:49 -07002975
Igor Murashkinca256272014-10-02 15:27:09 -07002976 <span class="entry_type_hwlevel">[limited] </span>
2977
Igor Murashkin6c936c12014-05-13 14:51:49 -07002978
2979
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07002980 <ul class="entry_type_enum">
2981 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002982 <span class="entry_type_enum_name">IDLE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08002983 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07002984 </li>
2985 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002986 <span class="entry_type_enum_name">START (v3.2)</span>
Zhijun He92e698d2014-01-13 16:24:31 -08002987 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07002988by the camera device.<wbr/></p>
2989<p>The exact effect of the precapture trigger depends on
2990the current AE mode and state.<wbr/></p></span>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07002991 </li>
Zhijun Hee7cd5562015-02-05 14:32:57 -08002992 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08002993 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
Zhijun Hee7cd5562015-02-05 14:32:57 -08002994 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2995precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2996initial state.<wbr/></p></span>
2997 </li>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07002998 </ul>
2999
3000 </td> <!-- entry_type -->
3001
3002 <td class="entry_description">
Zhijun He92e698d2014-01-13 16:24:31 -08003003 <p>Whether the camera device will trigger a precapture
3004metering sequence when it processes this request.<wbr/></p>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003005 </td>
3006
3007 <td class="entry_units">
3008 </td>
3009
3010 <td class="entry_range">
3011 </td>
3012
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003013 <td class="entry_hal_version">
3014 <p>3.<wbr/>2</p>
3015 </td>
3016
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003017 <td class="entry_tags">
3018 <ul class="entry_tags">
3019 <li><a href="#tag_BC">BC</a></li>
3020 </ul>
3021 </td>
3022
3023 </tr>
3024 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003025 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003026 </tr>
3027 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003028 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -08003029 <p>This entry is normally set to IDLE,<wbr/> or is not
3030included at all in the request settings.<wbr/> When included and
Zhijun Hecad66192015-02-06 13:42:40 -08003031set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
Igor Murashkin0b080452013-12-27 15:30:25 -08003032precapture metering sequence.<wbr/></p>
Zhijun Hee7cd5562015-02-05 14:32:57 -08003033<p>When set to CANCEL,<wbr/> the camera device will cancel any active
3034precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
3035If a precapture metering sequence is already completed,<wbr/> and the camera
3036device has implicitly locked the AE for subsequent still capture,<wbr/> the
3037CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
Zhijun Hecad66192015-02-06 13:42:40 -08003038<p>The precapture sequence should be triggered before starting a
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003039high-quality still capture for final metering decisions to
3040be made,<wbr/> and for firing pre-capture flash pulses to estimate
3041scene brightness and required final capture flash power,<wbr/> when
3042the flash is enabled.<wbr/></p>
3043<p>Normally,<wbr/> this entry should be set to START for only a
3044single request,<wbr/> and the application should wait until the
3045sequence completes before starting a new one.<wbr/></p>
Zhijun Hecad66192015-02-06 13:42:40 -08003046<p>When a precapture metering sequence is finished,<wbr/> the camera device
3047may lock the auto-exposure routine internally to be able to accurately expose the
3048subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
3049For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
3050submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
3051submit 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
3052with <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
Zhijun Hee7cd5562015-02-05 14:32:57 -08003053still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
3054API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
3055internally locked AE if the application doesn't submit a still capture request after
3056the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
3057be used in devices that have earlier API levels.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003058<p>The exact effect of auto-exposure (AE) precapture trigger
3059depends on the current AE mode and state; see
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07003060<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
3061details.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003062<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
3063capturing a high-resolution JPEG image will automatically trigger a
3064precapture sequence before the high-resolution capture,<wbr/> including
3065potentially firing a pre-capture flash.<wbr/></p>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07003066<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
3067simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3068the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3069focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3070trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3071changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
3072example.<wbr/></p>
3073<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
3074the camera device will complete them in the optimal order for that device.<wbr/></p>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003075 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003076 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003077
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07003078 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003079 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07003080 </tr>
3081 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003082 <td class="entry_details" colspan="6">
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07003083 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
3084(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
3085treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3086AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3087to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3088 </td>
3089 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003090
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003091 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003092 <!-- end of entry -->
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003093
3094
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003095 <tr class="entry" id="controls_android.control.afMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07003096 <td class="entry_name
Zhijun Hea19ede82014-05-27 15:06:42 -07003097 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08003098 android.<wbr/>control.<wbr/>af<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003099 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003100 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08003101 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003102
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07003103 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003104
Igor Murashkin6c936c12014-05-13 14:51:49 -07003105
Igor Murashkinca256272014-10-02 15:27:09 -07003106 <span class="entry_type_hwlevel">[legacy] </span>
3107
Igor Murashkin6c936c12014-05-13 14:51:49 -07003108
3109
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003110 <ul class="entry_type_enum">
3111 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003112 <span class="entry_type_enum_name">OFF (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08003113 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
3114<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003115application.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003116 </li>
3117 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003118 <span class="entry_type_enum_name">AUTO (v3.2)</span>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07003119 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
3120<p>In this mode,<wbr/> the lens does not move unless
Igor Murashkina10351a2014-01-15 17:05:22 -08003121the autofocus trigger action is called.<wbr/> When that trigger
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07003122is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
Igor Murashkina10351a2014-01-15 17:05:22 -08003123the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07003124<p>Always supported if lens is not fixed focus.<wbr/></p>
3125<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
3126is fixed-focus.<wbr/></p>
Igor Murashkina10351a2014-01-15 17:05:22 -08003127<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
3128and sets the AF state to INACTIVE.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003129 </li>
3130 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003131 <span class="entry_type_enum_name">MACRO (v3.2)</span>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07003132 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
3133<p>In this mode,<wbr/> the lens does not move unless the
3134autofocus trigger action is called.<wbr/> When that trigger is
3135activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
3136the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
3137mode is optimized for focusing on objects very close to
3138the camera.<wbr/></p>
3139<p>When that trigger is activated,<wbr/> AF will transition to
Igor Murashkina10351a2014-01-15 17:05:22 -08003140ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07003141NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
Igor Murashkina10351a2014-01-15 17:05:22 -08003142position to default,<wbr/> and sets the AF state to
3143INACTIVE.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003144 </li>
3145 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003146 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08003147 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
3148position continually to attempt to provide a
3149constantly-in-focus image stream.<wbr/></p>
3150<p>The focusing behavior should be suitable for good quality
3151video recording; typically this means slower focus
3152movement and no overshoots.<wbr/> When the AF trigger is not
3153involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
3154and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
3155states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
3156the algorithm should immediately transition into
3157AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
3158lens position until a cancel AF trigger is received.<wbr/></p>
3159<p>Once cancel is received,<wbr/> the algorithm should transition
3160back to INACTIVE and resume passive scan.<wbr/> Note that this
3161behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
3162ongoing PASSIVE_<wbr/>SCAN must immediately be
3163canceled.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003164 </li>
3165 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003166 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08003167 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
3168position continually to attempt to provide a
3169constantly-in-focus image stream.<wbr/></p>
3170<p>The focusing behavior should be suitable for still image
3171capture; typically this means focusing as fast as
3172possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
3173algorithm should start in INACTIVE state,<wbr/> and then
3174transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
3175appropriate as it attempts to maintain focus.<wbr/> When the AF
3176trigger is activated,<wbr/> the algorithm should finish its
3177PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
3178AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
3179lens position until a cancel AF trigger is received.<wbr/></p>
3180<p>When the AF cancel trigger is activated,<wbr/> the algorithm
3181should transition back to INACTIVE and then act as if it
3182has just been started.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003183 </li>
3184 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003185 <span class="entry_type_enum_name">EDOF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003186 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
3187<p>The camera device will produce images with an extended
3188depth of field automatically; no special focusing
3189operations need to be done before taking a picture.<wbr/></p>
3190<p>AF triggers are ignored,<wbr/> and the AF state will always be
Igor Murashkina10351a2014-01-15 17:05:22 -08003191INACTIVE.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003192 </li>
3193 </ul>
3194
3195 </td> <!-- entry_type -->
3196
3197 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07003198 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
3199mode it is set to.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003200 </td>
3201
3202 <td class="entry_units">
3203 </td>
3204
3205 <td class="entry_range">
Zhijun He7787f7f2014-01-14 16:30:31 -08003206 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003207 </td>
3208
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003209 <td class="entry_hal_version">
3210 <p>3.<wbr/>2</p>
3211 </td>
3212
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003213 <td class="entry_tags">
3214 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08003215 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003216 </ul>
3217 </td>
3218
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003219 </tr>
3220 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003221 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003222 </tr>
3223 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003224 <td class="entry_details" colspan="6">
Zhijun He25b8ac52014-02-24 09:49:37 -08003225 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
Yin-Chia Yeh668e43c2014-11-12 11:38:10 -08003226(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
3227when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
3228dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
3229setting <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>
Zhijun Hef163fa92014-01-14 09:59:04 -08003230<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -08003231the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
Zhijun Hef163fa92014-01-14 09:59:04 -08003232in result metadata.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003233 </td>
3234 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003235
Zhijun Hea19ede82014-05-27 15:06:42 -07003236 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003237 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun Hea19ede82014-05-27 15:06:42 -07003238 </tr>
3239 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003240 <td class="entry_details" colspan="6">
Zhijun Hea19ede82014-05-27 15:06:42 -07003241 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
3242request (<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
3243up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
3244<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
3245locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
3246after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
3247the same focal plane remains in focus.<wbr/></p>
3248<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
3249scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
3250(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
3251same lock behavior as above.<wbr/></p>
3252<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
3253focus 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/>
3254However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
3255manual control.<wbr/></p>
3256<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
3257camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
3258remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
3259by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
3260that will arise on camera modules with open-loop VCMs.<wbr/></p>
3261 </td>
3262 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003263
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003264 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003265 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003266
3267
3268 <tr class="entry" id="controls_android.control.afRegions">
Igor Murashkin6c936c12014-05-13 14:51:49 -07003269 <td class="entry_name
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003270 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08003271 android.<wbr/>control.<wbr/>af<wbr/>Regions
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003272 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003273 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08003274 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003275 <span class="entry_type_container">x</span>
3276
3277 <span class="entry_type_array">
3278 5 x area_count
3279 </span>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003280 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003281
3282
Igor Murashkin6c936c12014-05-13 14:51:49 -07003283
3284
3285
Igor Murashkinca256272014-10-02 15:27:09 -07003286
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003287 </td> <!-- entry_type -->
3288
3289 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003290 <p>List of metering areas to use for auto-focus.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003291 </td>
3292
3293 <td class="entry_units">
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003294 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
3295 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
3296 distortion correction capability and mode
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003297 </td>
3298
3299 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003300 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003301<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
3302depending on distortion correction capability and mode</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003303 </td>
3304
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003305 <td class="entry_hal_version">
3306 <p>3.<wbr/>2</p>
3307 </td>
3308
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003309 <td class="entry_tags">
3310 <ul class="entry_tags">
3311 <li><a href="#tag_BC">BC</a></li>
3312 </ul>
3313 </td>
3314
3315 </tr>
3316 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003317 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003318 </tr>
3319 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003320 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003321 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
Yin-Chia Yeh8554ed52014-09-04 09:33:34 -07003322Otherwise will always be present.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003323<p>The maximum number of focus areas supported by the device is determined by the value
3324of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003325<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3326system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
3327the top-left pixel in the active pixel array,<wbr/> and
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08003328(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003329<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
3330active pixel array.<wbr/></p>
3331<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3332system depends on the mode being set.<wbr/>
3333When the distortion correction mode is OFF,<wbr/> the coordinate system follows
3334<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3335<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
3336(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3337<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
3338pixel in the pre-correction active pixel array.<wbr/>
3339When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
3340<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3341<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
3342(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3343<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
3344active pixel array.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003345<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
Yin-Chia Yehdc182572014-05-14 14:05:20 -07003346for every pixel in the area.<wbr/> This means that a large metering area
3347with the same weight as a smaller area will have more effect in
3348the metering result.<wbr/> Metering areas can partially overlap and the
3349camera device will add the weights in the overlap region.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003350<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3351is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3352ignored.<wbr/></p>
3353<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
Shuzhen Wang608e0582018-02-08 12:03:09 -08003354camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
3355the region selected by the camera device as the focus area of interest.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003356<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
3357capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3358region and output only the intersection rectangle as the metering region in the result
3359metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3360not reported in the result metadata.<wbr/></p>
Shuzhen Wangfc392322022-03-28 12:41:41 -07003361<p>When setting the AF metering regions,<wbr/> the application must consider the additional
3362crop resulted from the aspect ratio differences between the preview stream and
3363<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
3364active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
3365the boundary of AF regions will be [0,<wbr/> y_<wbr/>crop] and
3366[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
3367[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
3368mismatch.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08003369<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
3370preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
3371pre-zoom field of view.<wbr/> This means that the same afRegions values at different
3372<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions
3373coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
3374zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
3375afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
3376scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
3377activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
3378mode.<wbr/></p>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -08003379<p>For camera devices with the
3380<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
3381capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
3382<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
3383coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
3384<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003385 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003386 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003387
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003388 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003389 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003390 </tr>
3391 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003392 <td class="entry_details" colspan="6">
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003393 <p>The HAL level representation of MeteringRectangle[] is a
3394int[5 * area_<wbr/>count].<wbr/>
3395Every five elements represent a metering region of
3396(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3397The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003398exclusive on xmax and ymax.<wbr/>
3399HAL must always report metering regions in the coordinate system of pre-correction
3400active array.<wbr/></p>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003401 </td>
3402 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003403
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003404 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003405 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003406
3407
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003408 <tr class="entry" id="controls_android.control.afTrigger">
Igor Murashkin6c936c12014-05-13 14:51:49 -07003409 <td class="entry_name
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07003410 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08003411 android.<wbr/>control.<wbr/>af<wbr/>Trigger
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003412 </td>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003413 <td class="entry_type">
3414 <span class="entry_type_name entry_type_name_enum">byte</span>
3415
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07003416 <span class="entry_type_visibility"> [public]</span>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003417
Igor Murashkin6c936c12014-05-13 14:51:49 -07003418
Igor Murashkinca256272014-10-02 15:27:09 -07003419 <span class="entry_type_hwlevel">[legacy] </span>
3420
Igor Murashkin6c936c12014-05-13 14:51:49 -07003421
3422
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003423 <ul class="entry_type_enum">
3424 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003425 <span class="entry_type_enum_name">IDLE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08003426 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003427 </li>
3428 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003429 <span class="entry_type_enum_name">START (v3.2)</span>
Zhijun He92e698d2014-01-13 16:24:31 -08003430 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003431 </li>
3432 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003433 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
Zhijun He92e698d2014-01-13 16:24:31 -08003434 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3435state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003436 </li>
3437 </ul>
3438
3439 </td> <!-- entry_type -->
3440
3441 <td class="entry_description">
Zhijun He92e698d2014-01-13 16:24:31 -08003442 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003443 </td>
3444
3445 <td class="entry_units">
3446 </td>
3447
3448 <td class="entry_range">
3449 </td>
3450
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003451 <td class="entry_hal_version">
3452 <p>3.<wbr/>2</p>
3453 </td>
3454
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003455 <td class="entry_tags">
3456 <ul class="entry_tags">
3457 <li><a href="#tag_BC">BC</a></li>
3458 </ul>
3459 </td>
3460
3461 </tr>
3462 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003463 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003464 </tr>
3465 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003466 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -08003467 <p>This entry is normally set to IDLE,<wbr/> or is not
3468included at all in the request settings.<wbr/></p>
Zhijun He92e698d2014-01-13 16:24:31 -08003469<p>When included and set to START,<wbr/> the camera device will trigger the
3470autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3471<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3472and return to its initial AF state.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003473<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3474single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3475START for multiple captures in a row means restarting the AF operation over
3476and over again.<wbr/></p>
3477<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>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07003478<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>
3479simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3480the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3481focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3482trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3483changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003484 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003485 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003486
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07003487 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003488 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07003489 </tr>
3490 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003491 <td class="entry_details" colspan="6">
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07003492 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3493(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
3494treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3495AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3496to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3497 </td>
3498 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003499
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003500 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003501 <!-- end of entry -->
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -07003502
3503
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003504 <tr class="entry" id="controls_android.control.awbLock">
Igor Murashkin6c936c12014-05-13 14:51:49 -07003505 <td class="entry_name
3506 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08003507 android.<wbr/>control.<wbr/>awb<wbr/>Lock
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003508 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003509 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08003510 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003511
Igor Murashkinb8dc8812013-07-17 16:29:34 -07003512 <span class="entry_type_visibility"> [public as boolean]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003513
Igor Murashkin6c936c12014-05-13 14:51:49 -07003514
Igor Murashkinca256272014-10-02 15:27:09 -07003515 <span class="entry_type_hwlevel">[legacy] </span>
3516
Igor Murashkin6c936c12014-05-13 14:51:49 -07003517
3518
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003519 <ul class="entry_type_enum">
3520 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003521 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003522 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
Igor Murashkina10351a2014-01-15 17:05:22 -08003523algorithm is free to update its parameters if in AUTO
3524mode.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003525 </li>
Eino-Ville Talvala76548fe2013-01-11 13:57:19 -08003526 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003527 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003528 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3529algorithm will not update its parameters while the lock
Zhijun He4412faa2014-02-06 00:28:22 -08003530is active.<wbr/></p></span>
Eino-Ville Talvala76548fe2013-01-11 13:57:19 -08003531 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003532 </ul>
3533
3534 </td> <!-- entry_type -->
3535
3536 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07003537 <p>Whether auto-white balance (AWB) is currently locked to its
Zhijun He4412faa2014-02-06 00:28:22 -08003538latest calculated values.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003539 </td>
3540
3541 <td class="entry_units">
3542 </td>
3543
3544 <td class="entry_range">
3545 </td>
3546
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003547 <td class="entry_hal_version">
3548 <p>3.<wbr/>2</p>
3549 </td>
3550
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003551 <td class="entry_tags">
3552 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08003553 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003554 </ul>
3555 </td>
3556
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003557 </tr>
3558 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003559 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003560 </tr>
3561 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003562 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003563 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3564and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3565<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3566get locked do not necessarily correspond to the settings that were present in the
3567latest capture result received from the camera device,<wbr/> since additional captures
3568and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3569application is switching between automatic and manual control and wishes to eliminate
3570any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3571<ol>
3572<li>Starting in auto-AWB mode:</li>
3573<li>Lock AWB</li>
3574<li>Wait for the first result to be output that has the AWB locked</li>
3575<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3576<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3577</ol>
3578<p>Note that AWB lock is only meaningful when
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003579<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3580AWB is already fixed to a specific setting.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -07003581<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003582 </td>
3583 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003584
3585
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003586 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003587 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003588
3589
3590 <tr class="entry" id="controls_android.control.awbMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07003591 <td class="entry_name
3592 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08003593 android.<wbr/>control.<wbr/>awb<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003594 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003595 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08003596 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003597
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07003598 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003599
Igor Murashkin6c936c12014-05-13 14:51:49 -07003600
Igor Murashkinca256272014-10-02 15:27:09 -07003601 <span class="entry_type_hwlevel">[legacy] </span>
3602
Igor Murashkin6c936c12014-05-13 14:51:49 -07003603
3604
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003605 <ul class="entry_type_enum">
3606 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003607 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003608 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3609<p>The application-selected color transform matrix
Igor Murashkina10351a2014-01-15 17:05:22 -08003610(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3611(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3612device for manual white balance control.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003613 </li>
3614 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003615 <span class="entry_type_enum_name">AUTO (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003616 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3617<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3618and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3619For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3620values used by the camera device for the transform and gains
3621will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003622 </li>
3623 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003624 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003625 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08003626the camera device uses incandescent light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003627illumination for white balance.<wbr/></p>
3628<p>While the exact white balance transforms are up to the
3629camera device,<wbr/> they will approximately match the CIE
3630standard illuminant A.<wbr/></p>
3631<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3632and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3633For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3634values used by the camera device for the transform and gains
3635will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003636 </li>
3637 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003638 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003639 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08003640the camera device uses fluorescent light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003641illumination for white balance.<wbr/></p>
3642<p>While the exact white balance transforms are up to the
3643camera device,<wbr/> they will approximately match the CIE
3644standard illuminant F2.<wbr/></p>
3645<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3646and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3647For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3648values used by the camera device for the transform and gains
3649will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003650 </li>
3651 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003652 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003653 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08003654the camera device uses warm fluorescent light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003655illumination for white balance.<wbr/></p>
3656<p>While the exact white balance transforms are up to the
3657camera device,<wbr/> they will approximately match the CIE
3658standard illuminant F4.<wbr/></p>
3659<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3660and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3661For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3662values used by the camera device for the transform and gains
3663will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003664 </li>
3665 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003666 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003667 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08003668the camera device uses daylight light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003669illumination for white balance.<wbr/></p>
3670<p>While the exact white balance transforms are up to the
3671camera device,<wbr/> they will approximately match the CIE
3672standard illuminant D65.<wbr/></p>
3673<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3674and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3675For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3676values used by the camera device for the transform and gains
3677will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003678 </li>
3679 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003680 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003681 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08003682the camera device uses cloudy daylight light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003683illumination for white balance.<wbr/></p>
3684<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3685and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3686For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3687values used by the camera device for the transform and gains
3688will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003689 </li>
3690 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003691 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003692 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08003693the camera device uses twilight light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003694illumination for white balance.<wbr/></p>
3695<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3696and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3697For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3698values used by the camera device for the transform and gains
3699will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003700 </li>
3701 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003702 <span class="entry_type_enum_name">SHADE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003703 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08003704the camera device uses shade light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003705illumination for white balance.<wbr/></p>
3706<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3707and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3708For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3709values used by the camera device for the transform and gains
3710will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003711 </li>
3712 </ul>
3713
3714 </td> <!-- entry_type -->
3715
3716 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07003717 <p>Whether auto-white balance (AWB) is currently setting the color
Igor Murashkin0b080452013-12-27 15:30:25 -08003718transform fields,<wbr/> and what its illumination target
Zhijun He25b8ac52014-02-24 09:49:37 -08003719is.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003720 </td>
3721
3722 <td class="entry_units">
3723 </td>
3724
3725 <td class="entry_range">
Zhijun He7787f7f2014-01-14 16:30:31 -08003726 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003727 </td>
3728
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003729 <td class="entry_hal_version">
3730 <p>3.<wbr/>2</p>
3731 </td>
3732
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003733 <td class="entry_tags">
3734 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08003735 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003736 </ul>
3737 </td>
3738
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003739 </tr>
3740 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003741 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003742 </tr>
3743 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003744 <td class="entry_details" colspan="6">
Zhijun He7787f7f2014-01-14 16:30:31 -08003745 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
Jayant Chowdhary62a91932021-01-06 16:56:26 -08003746<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance
Zhijun He7787f7f2014-01-14 16:30:31 -08003747routine is enabled,<wbr/> overriding the application's selected
3748<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
Yin-Chia Yeh668e43c2014-11-12 11:38:10 -08003749<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>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07003750is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommended to
Yin-Chia Yeh668e43c2014-11-12 11:38:10 -08003751also 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
3752setting AE mode to OFF.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003753<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
Zhijun He25b8ac52014-02-24 09:49:37 -08003754routine is disabled.<wbr/> The application manually controls the white
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -08003755balance 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>
Zhijun He7787f7f2014-01-14 16:30:31 -08003756and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003757<p>When set to any other modes,<wbr/> the camera device's auto-white
3758balance routine is disabled.<wbr/> The camera device uses each
3759particular illumination target for white balance
3760adjustment.<wbr/> The application's values for
3761<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3762<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3763<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003764 </td>
3765 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003766
3767
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003768 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003769 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003770
3771
3772 <tr class="entry" id="controls_android.control.awbRegions">
Igor Murashkin6c936c12014-05-13 14:51:49 -07003773 <td class="entry_name
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003774 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08003775 android.<wbr/>control.<wbr/>awb<wbr/>Regions
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003776 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003777 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08003778 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003779 <span class="entry_type_container">x</span>
3780
3781 <span class="entry_type_array">
3782 5 x area_count
3783 </span>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003784 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003785
3786
Igor Murashkin6c936c12014-05-13 14:51:49 -07003787
3788
3789
Igor Murashkinca256272014-10-02 15:27:09 -07003790
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003791 </td> <!-- entry_type -->
3792
3793 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003794 <p>List of metering areas to use for auto-white-balance illuminant
Ruben Brunk76e4c7d2014-01-31 11:05:30 -08003795estimation.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003796 </td>
3797
3798 <td class="entry_units">
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003799 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
3800 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
3801 distortion correction capability and mode
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003802 </td>
3803
3804 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003805 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003806<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
3807depending on distortion correction capability and mode</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003808 </td>
3809
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003810 <td class="entry_hal_version">
3811 <p>3.<wbr/>2</p>
3812 </td>
3813
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003814 <td class="entry_tags">
3815 <ul class="entry_tags">
3816 <li><a href="#tag_BC">BC</a></li>
3817 </ul>
3818 </td>
3819
3820 </tr>
3821 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003822 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003823 </tr>
3824 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003825 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003826 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
Yin-Chia Yeh8554ed52014-09-04 09:33:34 -07003827Otherwise will always be present.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003828<p>The maximum number of regions supported by the device is determined by the value
3829of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003830<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3831system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
3832the top-left pixel in the active pixel array,<wbr/> and
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08003833(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003834<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
3835active pixel array.<wbr/></p>
3836<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
3837system depends on the mode being set.<wbr/>
3838When the distortion correction mode is OFF,<wbr/> the coordinate system follows
3839<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3840<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
3841(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3842<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
3843pixel in the pre-correction active pixel array.<wbr/>
3844When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
3845<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
3846<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
3847(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3848<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
3849active pixel array.<wbr/></p>
Yin-Chia Yehdc182572014-05-14 14:05:20 -07003850<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3851for every pixel in the area.<wbr/> This means that a large metering area
3852with the same weight as a smaller area will have more effect in
3853the metering result.<wbr/> Metering areas can partially overlap and the
3854camera device will add the weights in the overlap region.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07003855<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3856only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
38570 weight is ignored.<wbr/></p>
3858<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3859camera device.<wbr/></p>
3860<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
3861capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3862region and output only the intersection rectangle as the metering region in the result
3863metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3864not reported in the result metadata.<wbr/></p>
Shuzhen Wangfc392322022-03-28 12:41:41 -07003865<p>When setting the AWB metering regions,<wbr/> the application must consider the additional
3866crop resulted from the aspect ratio differences between the preview stream and
3867<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
3868active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
3869the boundary of AWB regions will be [0,<wbr/> y_<wbr/>crop] and
3870[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
3871[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
3872mismatch.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08003873<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
3874preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
3875pre-zoom field of view.<wbr/> This means that the same awbRegions values at different
3876<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions
3877coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
3878zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
3879awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of
3880the scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
3881activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
3882mode.<wbr/></p>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -08003883<p>For camera devices with the
3884<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
3885capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
3886<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
3887coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
3888<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003889 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003890 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003891
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003892 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003893 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003894 </tr>
3895 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003896 <td class="entry_details" colspan="6">
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003897 <p>The HAL level representation of MeteringRectangle[] is a
3898int[5 * area_<wbr/>count].<wbr/>
3899Every five elements represent a metering region of
3900(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3901The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07003902exclusive on xmax and ymax.<wbr/>
3903HAL must always report metering regions in the coordinate system of pre-correction
3904active array.<wbr/></p>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07003905 </td>
3906 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003907
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003908 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08003909 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003910
3911
3912 <tr class="entry" id="controls_android.control.captureIntent">
Igor Murashkin6c936c12014-05-13 14:51:49 -07003913 <td class="entry_name
3914 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08003915 android.<wbr/>control.<wbr/>capture<wbr/>Intent
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003916 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003917 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08003918 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003919
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07003920 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003921
Igor Murashkin6c936c12014-05-13 14:51:49 -07003922
Igor Murashkinca256272014-10-02 15:27:09 -07003923 <span class="entry_type_hwlevel">[legacy] </span>
3924
Igor Murashkin6c936c12014-05-13 14:51:49 -07003925
3926
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003927 <ul class="entry_type_enum">
3928 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003929 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003930 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3931categories.<wbr/> The camera device will default to preview-like
Igor Murashkina10351a2014-01-15 17:05:22 -08003932behavior.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003933 </li>
3934 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003935 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003936 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3937<p>The precapture trigger may be used to start off a metering
3938w/<wbr/>flash sequence.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003939 </li>
3940 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003941 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08003942 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003943use case.<wbr/></p>
3944<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003945 </li>
3946 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003947 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08003948 <span class="entry_type_enum_notes"><p>This request is for a video recording
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003949use case.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003950 </li>
3951 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003952 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08003953 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003954image while recording video) use case.<wbr/></p>
3955<p>The camera device should take the highest-quality image
3956possible (given the other settings) without disrupting the
Eino-Ville Talvala0f0d7952014-10-02 18:27:34 -07003957frame rate of video recording.<wbr/> </p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003958 </li>
3959 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003960 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08003961 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3962application will stream full-resolution images and
3963reprocess one or several later for a final
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003964capture.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003965 </li>
Zhijun Hee713fa62014-04-09 10:55:50 -07003966 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08003967 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
Zhijun Hee713fa62014-04-09 10:55:50 -07003968 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07003969the applications want to directly control the capture parameters.<wbr/></p>
3970<p>For example,<wbr/> the application may wish to manually control
3971<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>
Zhijun Hee713fa62014-04-09 10:55:50 -07003972 </li>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -08003973 <li>
3974 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3975 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3976the application will use camera and inertial sensor data to
3977locate and track objects in the world.<wbr/></p>
3978<p>The camera device auto-exposure routine will limit the exposure time
3979of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3980 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003981 </ul>
3982
3983 </td> <!-- entry_type -->
3984
3985 <td class="entry_description">
Zhijun Heea27bc32014-01-15 13:47:59 -08003986 <p>Information to the camera device 3A (auto-exposure,<wbr/>
3987auto-focus,<wbr/> auto-white balance) routines about the purpose
3988of this capture,<wbr/> to help the camera device to decide optimal 3A
3989strategy.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003990 </td>
3991
3992 <td class="entry_units">
3993 </td>
3994
3995 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -08003996 </td>
3997
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08003998 <td class="entry_hal_version">
3999 <p>3.<wbr/>2</p>
4000 </td>
4001
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004002 <td class="entry_tags">
4003 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08004004 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004005 </ul>
4006 </td>
4007
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004008 </tr>
4009 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004010 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004011 </tr>
4012 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004013 <td class="entry_details" colspan="6">
Zhijun Hee713fa62014-04-09 10:55:50 -07004014 <p>This control (except for MANUAL) is only effective if
4015<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07004016<p>All intents are supported by all devices,<wbr/> except that:</p>
4017<ul>
4018<li>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
4019PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/></li>
4020<li>MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
4021MANUAL_<wbr/>SENSOR.<wbr/></li>
4022<li>MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
4023MOTION_<wbr/>TRACKING.<wbr/></li>
4024</ul>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004025 </td>
4026 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004027
4028
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004029 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004030 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004031
4032
4033 <tr class="entry" id="controls_android.control.effectMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07004034 <td class="entry_name
4035 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08004036 android.<wbr/>control.<wbr/>effect<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004037 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004038 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08004039 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004040
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07004041 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004042
Igor Murashkin6c936c12014-05-13 14:51:49 -07004043
Igor Murashkinca256272014-10-02 15:27:09 -07004044 <span class="entry_type_hwlevel">[legacy] </span>
4045
Igor Murashkin6c936c12014-05-13 14:51:49 -07004046
4047
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004048 <ul class="entry_type_enum">
4049 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004050 <span class="entry_type_enum_name">OFF (v3.2)</span>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004051 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004052 </li>
4053 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004054 <span class="entry_type_enum_name">MONO (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004055 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004056 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004057a single color.<wbr/></p>
4058<p>This will typically be grayscale.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004059 </li>
4060 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004061 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004062 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004063 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
4064are inverted.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004065 </li>
4066 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004067 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004068 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004069 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
4070image is wholly or partially reversed in
4071tone.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004072 </li>
4073 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004074 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004075 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004076 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
4077gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004078 </li>
4079 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004080 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004081 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004082 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
4083discrete regions of tone rather than a continuous
4084gradient of tones.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004085 </li>
4086 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004087 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004088 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004089 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
4090as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004091 </li>
4092 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004093 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004094 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004095 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
4096as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004097 </li>
4098 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004099 <span class="entry_type_enum_name">AQUA (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004100 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004101 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004102 </li>
4103 </ul>
4104
4105 </td> <!-- entry_type -->
4106
4107 <td class="entry_description">
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004108 <p>A special color effect to apply.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004109 </td>
4110
4111 <td class="entry_units">
4112 </td>
4113
4114 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08004115 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004116 </td>
4117
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004118 <td class="entry_hal_version">
4119 <p>3.<wbr/>2</p>
4120 </td>
4121
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004122 <td class="entry_tags">
4123 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08004124 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004125 </ul>
4126 </td>
4127
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004128 </tr>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004129 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004130 <th class="th_details" colspan="6">Details</th>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004131 </tr>
4132 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004133 <td class="entry_details" colspan="6">
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004134 <p>When this mode is set,<wbr/> a color effect will be applied
4135to images produced by the camera device.<wbr/> The interpretation
4136and implementation of these color effects is left to the
4137implementor of the camera device,<wbr/> and should not be
4138depended on to be consistent (or present) across all
4139devices.<wbr/></p>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08004140 </td>
4141 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004142
4143
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004144 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004145 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004146
4147
4148 <tr class="entry" id="controls_android.control.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07004149 <td class="entry_name
4150 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08004151 android.<wbr/>control.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004152 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004153 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08004154 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004155
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07004156 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004157
Igor Murashkin6c936c12014-05-13 14:51:49 -07004158
Igor Murashkinca256272014-10-02 15:27:09 -07004159 <span class="entry_type_hwlevel">[legacy] </span>
4160
Igor Murashkin6c936c12014-05-13 14:51:49 -07004161
4162
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004163 <ul class="entry_type_enum">
4164 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004165 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004166 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
4167<p>All control by the device's metering and focusing (3A)
4168routines is disabled,<wbr/> and no other settings in
4169android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
4170<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
4171device to select post-processing values for processing
4172blocks that do not allow for manual control,<wbr/> or are not
4173exposed by the camera API.<wbr/></p>
4174<p>However,<wbr/> the camera device's 3A routines may continue to
4175collect statistics and update their internal state so that
4176when control is switched to AUTO mode,<wbr/> good control values
4177can be immediately applied.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004178 </li>
4179 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004180 <span class="entry_type_enum_name">AUTO (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004181 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
4182<p>Manual control of capture parameters is disabled.<wbr/> All
Igor Murashkina10351a2014-01-15 17:05:22 -08004183controls in android.<wbr/>control.<wbr/>* besides sceneMode take
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004184effect.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004185 </li>
4186 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004187 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -08004188 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004189 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
4190<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
4191control.<wbr/>afMode controls; the camera device will ignore
4192those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
Zhijun He1a71d0d2015-06-16 19:44:18 -07004193FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07004194This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
Zhijun He1a71d0d2015-06-16 19:44:18 -07004195<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004196contain some modes other than DISABLED).<wbr/></p>
4197<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004198 </li>
Zhijun He4412faa2014-02-06 00:28:22 -08004199 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004200 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -08004201 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He4412faa2014-02-06 00:28:22 -08004202 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
4203used by camera device background auto-exposure,<wbr/> auto-white balance and
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004204auto-focus algorithms (3A) to update their statistics.<wbr/></p>
4205<p>Specifically,<wbr/> the 3A routines are locked to the last
4206values set from a request with AUTO,<wbr/> OFF,<wbr/> or
4207USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
4208collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
4209discarded by the camera device.<wbr/></p></span>
Zhijun He4412faa2014-02-06 00:28:22 -08004210 </li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004211 <li>
4212 <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span>
4213 <span class="entry_type_enum_optional">[optional]</span>
4214 <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p>
4215<p>When extended scene mode is on,<wbr/> the camera device may override certain control
4216parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and
4217quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level
4218are guaranteed.<wbr/></p>
4219<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/>
4220android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes
4221contains some modes other than DISABLED).<wbr/></p></span>
4222 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004223 </ul>
4224
4225 </td> <!-- entry_type -->
4226
4227 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07004228 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
Zhijun He25b8ac52014-02-24 09:49:37 -08004229routines.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004230 </td>
4231
4232 <td class="entry_units">
4233 </td>
4234
4235 <td class="entry_range">
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -08004236 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004237 </td>
4238
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004239 <td class="entry_hal_version">
4240 <p>3.<wbr/>2</p>
4241 </td>
4242
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004243 <td class="entry_tags">
4244 <ul class="entry_tags">
4245 <li><a href="#tag_BC">BC</a></li>
4246 </ul>
4247 </td>
4248
4249 </tr>
4250 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004251 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004252 </tr>
4253 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004254 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07004255 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
Zhijun Hef90eeaf2014-01-16 12:13:35 -08004256by the camera device is disabled.<wbr/> The application must set the fields for
Igor Murashkin0b080452013-12-27 15:30:25 -08004257capture parameters itself.<wbr/></p>
4258<p>When set to AUTO,<wbr/> the individual algorithm controls in
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08004259android.<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>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004260<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004261android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004262implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/>
4263SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080042643A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
Zhijun He4412faa2014-02-06 00:28:22 -08004265<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
4266is that this frame will not be used by camera device background 3A statistics
4267update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
4268where the application doesn't want a 3A manual control capture to affect
4269the subsequent auto 3A capture results.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004270 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004271 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004272
4273
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004274 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004275 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004276
4277
4278 <tr class="entry" id="controls_android.control.sceneMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07004279 <td class="entry_name
4280 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08004281 android.<wbr/>control.<wbr/>scene<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004282 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004283 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08004284 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004285
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07004286 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004287
Igor Murashkin6c936c12014-05-13 14:51:49 -07004288
Igor Murashkinca256272014-10-02 15:27:09 -07004289 <span class="entry_type_hwlevel">[legacy] </span>
4290
Igor Murashkin6c936c12014-05-13 14:51:49 -07004291
4292
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004293 <ul class="entry_type_enum">
4294 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004295 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004296 <span class="entry_type_enum_value">0</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004297 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004298 </li>
4299 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004300 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004301 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
4302detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004303auto-exposure routines.<wbr/></p>
4304<p>If face detection statistics are disabled
4305(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/>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004306this should still operate correctly (but will not return
4307face detection statistics to the framework).<wbr/></p>
4308<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -08004309<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>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004310remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004311 </li>
4312 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004313 <span class="entry_type_enum_name">ACTION (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004314 <span class="entry_type_enum_optional">[optional]</span>
4315 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
4316<p>Similar to SPORTS.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004317 </li>
4318 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004319 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004320 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004321 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004322 </li>
4323 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004324 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004325 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004326 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004327 </li>
4328 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004329 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004330 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004331 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004332 </li>
4333 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004334 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004335 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004336 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
4337settings.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004338 </li>
4339 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004340 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004341 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004342 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
4343remain off.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004344 </li>
4345 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004346 <span class="entry_type_enum_name">BEACH (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004347 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004348 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004349 </li>
4350 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004351 <span class="entry_type_enum_name">SNOW (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004352 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004353 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004354 </li>
4355 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004356 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004357 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004358 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004359 </li>
4360 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004361 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004362 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004363 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
4364device motion (for example: due to hand shake).<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004365 </li>
4366 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004367 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004368 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004369 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004370 </li>
4371 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004372 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004373 <span class="entry_type_enum_optional">[optional]</span>
4374 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
4375<p>Similar to ACTION.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004376 </li>
4377 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004378 <span class="entry_type_enum_name">PARTY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004379 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004380 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4381people.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004382 </li>
4383 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004384 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004385 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004386 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
Shuzhen Wang36ad8802018-10-10 17:58:13 -07004387is a candle.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004388 </li>
4389 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004390 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004391 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004392 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4393for use by camera applications that wish to read the
4394barcode value.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004395 </li>
Zhijun He17f2d2c2014-06-10 18:21:34 -07004396 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004397 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
Zhijun He7defc682015-05-22 17:04:15 -07004398 <span class="entry_type_enum_deprecated">[deprecated]</span>
Zhijun He17f2d2c2014-06-10 18:21:34 -07004399 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -07004400 <span class="entry_type_enum_hidden">[java_public]</span>
Eino-Ville Talvalaf55c1a82015-06-30 13:32:09 -07004401 <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>
4402and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
Zhijun He7defc682015-05-22 17:04:15 -07004403for high speed video recording.<wbr/></p>
4404<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
Zhijun He17f2d2c2014-06-10 18:21:34 -07004405<p>The supported high speed video sizes and fps ranges are specified in
4406<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4407output frame rates,<wbr/> the application is only allowed to select video size
4408and fps range combinations listed in this static metadata.<wbr/> The fps range
4409can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4410<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4411ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4412controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4413and post-processing parameters is possible.<wbr/> All other controls operate the
4414same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4415android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4416<ul>
4417<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4418<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4419<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4420<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4421<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4422<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4423<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4424<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4425<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4426<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
Shuzhen Wangb6149792019-11-07 15:59:22 -08004427<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
Zhijun He17f2d2c2014-06-10 18:21:34 -07004428</ul>
4429<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4430<ul>
4431<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>
4432<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4433<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4434<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4435</ul>
4436<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4437be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4438the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4439the application need check if the video encoder is capable of supporting the
4440high frame rate for a given video size,<wbr/> or it will end up with lower recording
4441frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4442rate will be bounded by the screen refresh rate.<wbr/></p>
4443<p>The camera device will only support up to 2 output high speed streams
4444(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4445in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4446<ul>
4447<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4448format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4449min(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>
4450<li>The stream sizes are selected from the sizes reported by
4451<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4452<li>No processed non-stalling or raw streams are configured.<wbr/></li>
4453</ul>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07004454<p>When above conditions are NOT satisfied,<wbr/> the controls of this mode and
Zhijun He17f2d2c2014-06-10 18:21:34 -07004455<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/>
4456the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07004457and the returned capture result metadata will give the fps range chosen
Zhijun He17f2d2c2014-06-10 18:21:34 -07004458by the camera device.<wbr/></p>
4459<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4460reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4461the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4462 </li>
Ruben Brunk17b1dd52014-08-28 17:16:38 -07004463 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004464 <span class="entry_type_enum_name">HDR (v3.2)</span>
Ruben Brunk17b1dd52014-08-28 17:16:38 -07004465 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala14cd0982014-12-05 10:46:45 -08004466 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4467<p>In this scene mode,<wbr/> the camera device captures images
4468that keep a larger range of scene illumination levels
4469visible in the final image.<wbr/> For example,<wbr/> when taking a
4470picture of a object in front of a bright window,<wbr/> both
4471the object and the scene through the window may be
4472visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4473one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4474HDR mode generally takes much longer to capture a single
4475image,<wbr/> has no user control,<wbr/> and may have other artifacts
4476depending on the HDR method used.<wbr/></p>
4477<p>Therefore,<wbr/> HDR captures operate at a much slower rate
4478than regular captures.<wbr/></p>
4479<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4480is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4481STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4482using a high dynamic range capture technique.<wbr/> On LEGACY
4483devices,<wbr/> captures that target a JPEG-format output will
4484be captured with HDR,<wbr/> and the capture intent is not
4485relevant.<wbr/></p>
4486<p>The HDR capture may involve the device capturing a burst
4487of images internally and combining them into one,<wbr/> or it
4488may involve the device using specialized high dynamic
4489range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4490produced in response to a capture request submitted
4491while in HDR mode.<wbr/></p>
4492<p>Since substantial post-processing is generally needed to
Eino-Ville Talvala1f883d42016-04-04 10:47:43 -07004493produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4494outputs are supported for LIMITED/<wbr/>FULL device HDR
4495captures,<wbr/> and only JPEG outputs are supported for LEGACY
4496HDR captures.<wbr/> Using a RAW output for HDR capture is not
4497supported.<wbr/></p>
4498<p>Some devices may also support always-on HDR,<wbr/> which
4499applies HDR processing at full frame rate.<wbr/> For these
4500devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4501produce an HDR output with no frame rate impact compared
4502to normal operation,<wbr/> though the quality may be lower
4503than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4504<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4505or capture intents,<wbr/> the images captured will be as if
4506the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
Ruben Brunk17b1dd52014-08-28 17:16:38 -07004507 </li>
Zhijun He1a71d0d2015-06-16 19:44:18 -07004508 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004509 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
Zhijun He1a71d0d2015-06-16 19:44:18 -07004510 <span class="entry_type_enum_optional">[optional]</span>
4511 <span class="entry_type_enum_hidden">[hidden]</span>
4512 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
Andy Huibersce1319b2015-07-11 08:36:42 -07004513device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
Zhijun He1a71d0d2015-06-16 19:44:18 -07004514under low light conditions.<wbr/></p>
4515<p>The camera device may be tuned to expose the images in a reduced
4516sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4517if 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/>
4518the camera device auto-exposure routine tuning process may limit the actual
Andy Huibersce1319b2015-07-11 08:36:42 -07004519exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07004520excessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
Zhijun He1a71d0d2015-06-16 19:44:18 -07004521low light may be under-exposed when the sensor max exposure time (bounded by the
4522<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
Andy Huibersce1319b2015-07-11 08:36:42 -07004523ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
Zhijun He1a71d0d2015-06-16 19:44:18 -07004524camera device auto-exposure routine to increase the sensitivity up to the max
4525sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
4526dark and the max exposure time is reached.<wbr/> The captured images may be noisier
Andy Huibersce1319b2015-07-11 08:36:42 -07004527compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
Zhijun He1a71d0d2015-06-16 19:44:18 -07004528recommended that the application only use this scene mode when it is capable of
4529reducing the noise level of the captured images.<wbr/></p>
4530<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4531<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>
4532remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4533 </li>
Yin-Chia Yehff19a622016-03-09 14:44:14 -08004534 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004535 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
Yin-Chia Yehff19a622016-03-09 14:44:14 -08004536 <span class="entry_type_enum_optional">[optional]</span>
4537 <span class="entry_type_enum_hidden">[hidden]</span>
4538 <span class="entry_type_enum_value">100</span>
4539 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4540<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4541customized scene modes.<wbr/></p></span>
4542 </li>
4543 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004544 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
Yin-Chia Yehff19a622016-03-09 14:44:14 -08004545 <span class="entry_type_enum_optional">[optional]</span>
4546 <span class="entry_type_enum_hidden">[hidden]</span>
4547 <span class="entry_type_enum_value">127</span>
4548 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4549<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4550customized scene modes.<wbr/></p></span>
4551 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004552 </ul>
4553
4554 </td> <!-- entry_type -->
4555
4556 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07004557 <p>Control for which scene mode is currently active.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004558 </td>
4559
4560 <td class="entry_units">
4561 </td>
4562
4563 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08004564 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004565 </td>
4566
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004567 <td class="entry_hal_version">
4568 <p>3.<wbr/>2</p>
4569 </td>
4570
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004571 <td class="entry_tags">
4572 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08004573 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004574 </ul>
4575 </td>
4576
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004577 </tr>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004578 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004579 <th class="th_details" colspan="6">Details</th>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004580 </tr>
4581 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004582 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07004583 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4584capture settings.<wbr/></p>
4585<p>This is the mode that that is active when
Zhijun He1a71d0d2015-06-16 19:44:18 -07004586<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
4587disable <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>
4588while in use.<wbr/></p>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004589<p>The interpretation and implementation of these scene modes is left
4590to the implementor of the camera device.<wbr/> Their behavior will not be
4591consistent across all devices,<wbr/> and any given device may only implement
4592a subset of these modes.<wbr/></p>
4593 </td>
4594 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004595
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004596 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004597 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004598 </tr>
4599 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004600 <td class="entry_details" colspan="6">
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004601 <p>HAL implementations that include scene modes are expected to provide
4602the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4603<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
4604<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004605<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
4606HAL must list supported video size and fps range in
4607<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/>
4608if the HAL has two different sensor configurations for normal streaming mode and high
4609speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4610HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
4611HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
Zhijun He7defc682015-05-22 17:04:15 -07004612<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
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07004613capability defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08004614 </td>
4615 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004616
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004617 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004618 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004619
4620
4621 <tr class="entry" id="controls_android.control.videoStabilizationMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07004622 <td class="entry_name
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -07004623 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08004624 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004625 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004626 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08004627 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004628
Zhijun He036b91c2014-04-29 15:24:16 -07004629 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004630
Igor Murashkin6c936c12014-05-13 14:51:49 -07004631
Igor Murashkinca256272014-10-02 15:27:09 -07004632 <span class="entry_type_hwlevel">[legacy] </span>
4633
Igor Murashkin6c936c12014-05-13 14:51:49 -07004634
4635
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004636 <ul class="entry_type_enum">
4637 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004638 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004639 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004640 </li>
4641 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004642 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004643 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004644 </li>
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -07004645 <li>
4646 <span class="entry_type_enum_name">PREVIEW_STABILIZATION (v3.8)</span>
4647 <span class="entry_type_enum_optional">[optional]</span>
4648 <span class="entry_type_enum_notes"><p>Preview stabilization,<wbr/> where the preview in addition to all other non-RAW streams are
4649stabilized with the same quality of stabilization,<wbr/> is enabled.<wbr/> This mode aims to give
4650clients a 'what you see is what you get' effect.<wbr/> In this mode,<wbr/> the FoV reduction will
4651be a maximum of 20 % both horizontally and vertically
4652(10% from left,<wbr/> right,<wbr/> top,<wbr/> bottom) for the given zoom ratio /<wbr/> crop region.<wbr/>
4653The resultant FoV will also be the same across all processed streams
4654(that have the same aspect ratio).<wbr/></p></span>
4655 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004656 </ul>
4657
4658 </td> <!-- entry_type -->
4659
4660 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -08004661 <p>Whether video stabilization is
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07004662active.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004663 </td>
4664
4665 <td class="entry_units">
4666 </td>
4667
4668 <td class="entry_range">
4669 </td>
4670
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004671 <td class="entry_hal_version">
4672 <p>3.<wbr/>2</p>
4673 </td>
4674
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004675 <td class="entry_tags">
4676 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08004677 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004678 </ul>
4679 </td>
4680
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004681 </tr>
4682 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004683 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004684 </tr>
4685 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004686 <td class="entry_details" colspan="6">
Jianing Wei2d950892015-09-29 14:01:43 -07004687 <p>Video stabilization automatically warps images from
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07004688the camera in order to stabilize motion between consecutive frames.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07004689<p>If enabled,<wbr/> video stabilization can modify the
Zhijun He91449c82014-06-12 10:43:32 -07004690<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07004691<p>Switching between different video stabilization modes may take several
4692frames to initialize,<wbr/> the camera device will report the current mode
4693in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4694the video stabilization modes in the first several capture results may
4695still be "OFF",<wbr/> and it will become "ON" when the initialization is
4696done.<wbr/></p>
Jianing Wei2d950892015-09-29 14:01:43 -07004697<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4698stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4699that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4700the recording resolution is less than or equal to 1920 x 1080 (width less than
4701or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4702frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
4703<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4704OFF if the recording output is not stabilized,<wbr/> or if there are no output
4705Surface types that can be stabilized.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07004706<p>If a camera device supports both this mode and OIS
4707(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4708produce undesirable interaction,<wbr/> so it is recommended not to enable
4709both at the same time.<wbr/></p>
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -07004710<p>If video stabilization is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
4711<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose
4712to turn on hardware based image stabilization in addition to software based stabilization
4713if it deems that appropriate.<wbr/>
4714This key may be a part of the available session keys,<wbr/> which camera clients may
4715query via
4716<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/>
4717If this is the case,<wbr/> changing this key over the life-time of a capture session may
4718cause delays /<wbr/> glitches.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004719 </td>
4720 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004721
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -07004722 <tr class="entries_header">
4723 <th class="th_details" colspan="6">HAL Implementation Details</th>
4724 </tr>
4725 <tr class="entry_cont">
4726 <td class="entry_details" colspan="6">
4727 <p>When this key is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
Jayant Chowdhary316b5312021-12-15 14:35:14 -08004728for non-stalling buffers returned without errors,<wbr/> the time interval between notify readout
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -07004729timestamp and when buffers are returned to the camera framework,<wbr/> must be no more than 1
4730extra frame interval,<wbr/> relative to the case where this key is set to "OFF".<wbr/></p>
4731<p>This is in order for look-ahead time period to be short enough
4732for preview to match video recording for real-time usage.<wbr/></p>
4733 </td>
4734 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004735
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004736 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08004737 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08004738
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08004739
4740 <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4741 <td class="entry_name
4742 " rowspan="3">
4743 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4744 </td>
4745 <td class="entry_type">
4746 <span class="entry_type_name">int32</span>
4747
4748 <span class="entry_type_visibility"> [public]</span>
4749
4750
4751
4752
4753
4754
4755 </td> <!-- entry_type -->
4756
4757 <td class="entry_description">
Yin-Chia Yeh84a51a42016-04-11 16:37:49 -07004758 <p>The amount of additional sensitivity boost applied to output images
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08004759after RAW sensor data is captured.<wbr/></p>
4760 </td>
4761
4762 <td class="entry_units">
4763 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4764 </td>
4765
4766 <td class="entry_range">
4767 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4768 </td>
4769
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004770 <td class="entry_hal_version">
4771 <p>3.<wbr/>2</p>
4772 </td>
4773
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08004774 <td class="entry_tags">
4775 </td>
4776
4777 </tr>
4778 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004779 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08004780 </tr>
4781 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004782 <td class="entry_details" colspan="6">
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08004783 <p>Some camera devices support additional digital sensitivity boosting in the
4784camera processing pipeline after sensor RAW image is captured.<wbr/>
4785Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4786have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
Yin-Chia Yeh84a51a42016-04-11 16:37:49 -07004787<p>This key will be <code>null</code> for devices that do not support any RAW format
4788outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4789present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4790list <code>100</code> in this key.<wbr/></p>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08004791<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4792boost to the nearest supported value.<wbr/>
4793The final boost value used will be available in the output capture result.<wbr/></p>
4794<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4795of such device will have the total sensitivity of
Yin-Chia Yeh5a12e622016-01-26 13:26:56 -08004796<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>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08004797The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4798<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
4799OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4800 </td>
4801 </tr>
4802
4803
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004804 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08004805 <!-- end of entry -->
4806
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004807
4808 <tr class="entry" id="controls_android.control.enableZsl">
4809 <td class="entry_name
4810 " rowspan="5">
4811 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4812 </td>
4813 <td class="entry_type">
4814 <span class="entry_type_name entry_type_name_enum">byte</span>
4815
4816 <span class="entry_type_visibility"> [public as boolean]</span>
4817
4818
4819
4820
4821
4822 <ul class="entry_type_enum">
4823 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004824 <span class="entry_type_enum_name">FALSE (v3.2)</span>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004825 <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
4826after previous requests.<wbr/></p></span>
4827 </li>
4828 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08004829 <span class="entry_type_enum_name">TRUE (v3.2)</span>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004830 <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
4831captured before previous requests.<wbr/></p></span>
4832 </li>
4833 </ul>
4834
4835 </td> <!-- entry_type -->
4836
4837 <td class="entry_description">
4838 <p>Allow camera device to enable zero-shutter-lag mode for requests with
4839<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4840 </td>
4841
4842 <td class="entry_units">
4843 </td>
4844
4845 <td class="entry_range">
4846 </td>
4847
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004848 <td class="entry_hal_version">
4849 <p>3.<wbr/>2</p>
4850 </td>
4851
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004852 <td class="entry_tags">
4853 </td>
4854
4855 </tr>
4856 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004857 <th class="th_details" colspan="6">Details</th>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004858 </tr>
4859 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004860 <td class="entry_details" colspan="6">
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004861 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4862STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4863produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4864<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4865Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4866compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4867capture intents.<wbr/></p>
4868<p>For example,<wbr/> when requests are submitted in the following order:
4869 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4870 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>
4871<p>The output images for request B may have contents captured before the output images for
4872request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4873request A.<wbr/></p>
Chien-Yu Chen47272802017-04-18 15:17:15 -07004874<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4875the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4876<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4877TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4878<code>false</code> if present.<wbr/></p>
4879<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4880capture templates is always <code>false</code> if present.<wbr/></p>
Chien-Yu Chen853e0dd2017-05-03 12:17:47 -07004881<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004882 </td>
4883 </tr>
4884
4885 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004886 <th class="th_details" colspan="6">HAL Implementation Details</th>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004887 </tr>
4888 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004889 <td class="entry_details" colspan="6">
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004890 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4891capture intent.<wbr/></p>
4892 </td>
4893 </tr>
4894
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08004895 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -08004896 <!-- end of entry -->
4897
Shuzhen Wanga1725492019-07-08 15:03:24 -07004898
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004899 <tr class="entry" id="controls_android.control.extendedSceneMode">
Shuzhen Wanga1725492019-07-08 15:03:24 -07004900 <td class="entry_name
4901 " rowspan="3">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004902 android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode
Shuzhen Wanga1725492019-07-08 15:03:24 -07004903 </td>
4904 <td class="entry_type">
4905 <span class="entry_type_name entry_type_name_enum">byte</span>
4906
4907 <span class="entry_type_visibility"> [public]</span>
4908
4909
4910
4911
4912
4913 <ul class="entry_type_enum">
4914 <li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004915 <span class="entry_type_enum_name">DISABLED (v3.5)</span>
4916 <span class="entry_type_enum_value">0</span>
4917 <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span>
Shuzhen Wanga1725492019-07-08 15:03:24 -07004918 </li>
4919 <li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004920 <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span>
Shuzhen Wanga1725492019-07-08 15:03:24 -07004921 <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/>
4922JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the
4923extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/>
4924This mode should be used in high quality still capture use case.<wbr/></p></span>
4925 </li>
4926 <li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004927 <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span>
Shuzhen Wanga1725492019-07-08 15:03:24 -07004928 <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/>
4929and the effect is applied to all processed streams no larger than the maximum
4930streaming dimension.<wbr/> This mode should be used if performance and power are a
4931priority,<wbr/> such as video recording.<wbr/></p></span>
4932 </li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004933 <li>
4934 <span class="entry_type_enum_name">VENDOR_START (v3.5)</span>
4935 <span class="entry_type_enum_hidden">[hidden]</span>
4936 <span class="entry_type_enum_value">0x40</span>
4937 <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span>
4938 </li>
Shuzhen Wanga1725492019-07-08 15:03:24 -07004939 </ul>
4940
4941 </td> <!-- entry_type -->
4942
4943 <td class="entry_description">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004944 <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -07004945 </td>
4946
4947 <td class="entry_units">
4948 </td>
4949
4950 <td class="entry_range">
4951 </td>
4952
4953 <td class="entry_hal_version">
4954 <p>3.<wbr/>5</p>
4955 </td>
4956
4957 <td class="entry_tags">
4958 </td>
4959
4960 </tr>
4961 <tr class="entries_header">
4962 <th class="th_details" colspan="6">Details</th>
4963 </tr>
4964 <tr class="entry_cont">
4965 <td class="entry_details" colspan="6">
4966 <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in
4967focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004968<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra
Shuzhen Wanga1725492019-07-08 15:03:24 -07004969processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when
4970capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004971<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -07004972<ul>
4973<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of
4974BURST_<wbr/>CAPTURE must still be met.<wbr/></li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004975<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode
4976(queried via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES">Camera<wbr/>Characteristics#CONTROL_<wbr/>AVAILABLE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE_<wbr/>CAPABILITIES</a>)
Shuzhen Wanga1725492019-07-08 15:03:24 -07004977will have preview bokeh effect applied.<wbr/></li>
4978</ul>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004979<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's
Shuzhen Wanga1725492019-07-08 15:03:24 -07004980maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not
4981be available for streams larger than the maximum streaming dimension.<wbr/></p>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004982<p>Switching between different extended scene modes may involve reconfiguration of the camera
Shuzhen Wanga1725492019-07-08 15:03:24 -07004983pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the
4984available session keys queried via
4985<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -07004986<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras
4987with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device
Shuzhen Wang327c86e2020-03-16 11:39:27 -07004988may override <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the field of
4989view may be smaller than when bokeh mode is off.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -07004990 </td>
4991 </tr>
4992
4993
4994 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4995 <!-- end of entry -->
4996
Shuzhen Wangb6149792019-11-07 15:59:22 -08004997
4998 <tr class="entry" id="controls_android.control.zoomRatio">
4999 <td class="entry_name
5000 " rowspan="5">
5001 android.<wbr/>control.<wbr/>zoom<wbr/>Ratio
5002 </td>
5003 <td class="entry_type">
5004 <span class="entry_type_name">float</span>
5005
5006 <span class="entry_type_visibility"> [public]</span>
5007
5008
5009 <span class="entry_type_hwlevel">[limited] </span>
5010
5011
5012
5013
5014 </td> <!-- entry_type -->
5015
5016 <td class="entry_description">
5017 <p>The desired zoom ratio</p>
5018 </td>
5019
5020 <td class="entry_units">
5021 </td>
5022
5023 <td class="entry_range">
5024 <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p>
5025 </td>
5026
5027 <td class="entry_hal_version">
5028 <p>3.<wbr/>5</p>
5029 </td>
5030
5031 <td class="entry_tags">
5032 </td>
5033
5034 </tr>
5035 <tr class="entries_header">
5036 <th class="th_details" colspan="6">Details</th>
5037 </tr>
5038 <tr class="entry_cont">
5039 <td class="entry_details" colspan="6">
Shuzhen Wang37705612020-09-14 11:40:07 -07005040 <p>Instead of using <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> for zoom,<wbr/> the application can now choose to
5041use this tag to specify the desired zoom level.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08005042<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can
Shuzhen Wangd36ef432020-03-12 21:36:18 -07005043be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may
5044contain more than one lens with different focal lengths,<wbr/> and the user can use optical
Eino-Ville Talvalaa5213a22020-05-10 16:57:36 -07005045zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p>
5046<ul>
5047<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides
5048 better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li>
5049<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas
5050 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li>
5051</ul>
Shuzhen Wangd36ef432020-03-12 21:36:18 -07005052<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/>
5053and output streams,<wbr/> for a hypothetical camera device with an active array of size
5054<code>(2000,<wbr/>1500)</code>.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08005055<ul>
Shuzhen Wangd36ef432020-03-12 21:36:18 -07005056<li>Camera Configuration:<ul>
5057<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
5058<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
5059<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
Shuzhen Wangb6149792019-11-07 15:59:22 -08005060</ul>
Shuzhen Wangd36ef432020-03-12 21:36:18 -07005061</li>
5062<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul>
5063<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
5064<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li>
5065</ul>
5066</li>
5067<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul>
5068<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li>
5069<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li>
5070</ul>
5071</li>
5072<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul>
5073<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
5074<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li>
5075<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li>
5076<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li>
5077<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li>
5078</ul>
5079</li>
5080<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul>
5081<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li>
5082<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li>
5083<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li>
5084<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li>
5085<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li>
5086</ul>
5087</li>
5088</ul>
5089<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the
5090effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/>
5091activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/>
5092This coordinate system change isn't applicable to RAW capture and its related
5093metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p>
5094<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is
5095the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p>
5096<ul>
5097<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li>
5098<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li>
5099</ul>
5100<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder
5101field-of-view,<wbr/> the <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a> should be set to (0,<wbr/> 0,<wbr/> 1000,<wbr/> 750) with
Shuzhen Wangb6149792019-11-07 15:59:22 -08005102zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent
Shuzhen Wangd36ef432020-03-12 21:36:18 -07005103region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't
Shuzhen Wangb6149792019-11-07 15:59:22 -08005104explicitly set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> its value defaults to 1.<wbr/>0.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08005105<p>One limitation of controlling zoom using zoomRatio is that the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
5106must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no
Shuzhen Wang0ca63162020-11-30 20:11:27 -08005107FREEFORM cropping can be used with <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> other than 1.<wbr/>0.<wbr/> If
5108<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is not 1.<wbr/>0,<wbr/> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is set to be
5109windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be
5110the active array.<wbr/></p>
Shuzhen Wangbd3ad5f2021-06-30 16:09:35 -07005111<p>In the capture request,<wbr/> if the application sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to a
5112value != 1.<wbr/>0,<wbr/> the <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the capture result reflects the
5113effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
5114adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application
5115sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> or does not set it at all,<wbr/> the
5116<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the result metadata will also be 1.<wbr/>0.<wbr/></p>
5117<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the
5118<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in the physical camera result metadata will be 1.<wbr/>0,<wbr/> and
5119the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag reflects the amount of zoom and crop done by the
5120physical camera device.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08005121 </td>
5122 </tr>
5123
5124 <tr class="entries_header">
5125 <th class="th_details" colspan="6">HAL Implementation Details</th>
5126 </tr>
5127 <tr class="entry_cont">
5128 <td class="entry_details" colspan="6">
5129 <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have
5130consistent field of views between different modes.<wbr/></p>
5131 </td>
5132 </tr>
5133
5134 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5135 <!-- end of entry -->
5136
Jayant Chowdhary33211462021-07-21 11:26:51 -07005137
5138 <tr class="entry" id="controls_android.control.afRegionsSet">
5139 <td class="entry_name
5140 " rowspan="3">
5141 android.<wbr/>control.<wbr/>af<wbr/>Regions<wbr/>Set
5142 </td>
5143 <td class="entry_type">
5144 <span class="entry_type_name entry_type_name_enum">byte</span>
5145
5146 <span class="entry_type_visibility"> [fwk_only as boolean]</span>
5147
5148
5149
5150
5151
5152 <ul class="entry_type_enum">
5153 <li>
Jayant Chowdhary33211462021-07-21 11:26:51 -07005154 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5155 <span class="entry_type_enum_notes"><p>AF regions (<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span>
5156 </li>
Jayant Chowdharyee096d62021-09-13 11:29:10 -07005157 <li>
5158 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5159 <span class="entry_type_enum_notes"><p>AF regions (<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span>
5160 </li>
Jayant Chowdhary33211462021-07-21 11:26:51 -07005161 </ul>
5162
5163 </td> <!-- entry_type -->
5164
5165 <td class="entry_description">
5166 <p>Framework-only private key which informs camera fwk that the AF regions has been set
5167by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
5168set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
5169 </td>
5170
5171 <td class="entry_units">
5172 </td>
5173
5174 <td class="entry_range">
5175 </td>
5176
5177 <td class="entry_hal_version">
5178 <p>3.<wbr/>2</p>
5179 </td>
5180
5181 <td class="entry_tags">
5182 </td>
5183
5184 </tr>
5185 <tr class="entries_header">
5186 <th class="th_details" colspan="6">Details</th>
5187 </tr>
5188 <tr class="entry_cont">
5189 <td class="entry_details" colspan="6">
5190 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
5191<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5192 </td>
5193 </tr>
5194
5195
5196 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5197 <!-- end of entry -->
5198
5199
5200 <tr class="entry" id="controls_android.control.aeRegionsSet">
5201 <td class="entry_name
5202 " rowspan="3">
5203 android.<wbr/>control.<wbr/>ae<wbr/>Regions<wbr/>Set
5204 </td>
5205 <td class="entry_type">
5206 <span class="entry_type_name entry_type_name_enum">byte</span>
5207
5208 <span class="entry_type_visibility"> [fwk_only as boolean]</span>
5209
5210
5211
5212
5213
5214 <ul class="entry_type_enum">
5215 <li>
Jayant Chowdhary33211462021-07-21 11:26:51 -07005216 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5217 <span class="entry_type_enum_notes"><p>AE regions (<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span>
5218 </li>
Jayant Chowdharyee096d62021-09-13 11:29:10 -07005219 <li>
5220 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5221 <span class="entry_type_enum_notes"><p>AE regions (<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span>
5222 </li>
Jayant Chowdhary33211462021-07-21 11:26:51 -07005223 </ul>
5224
5225 </td> <!-- entry_type -->
5226
5227 <td class="entry_description">
5228 <p>Framework-only private key which informs camera fwk that the AE regions has been set
5229by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
5230set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
5231 </td>
5232
5233 <td class="entry_units">
5234 </td>
5235
5236 <td class="entry_range">
5237 </td>
5238
5239 <td class="entry_hal_version">
5240 <p>3.<wbr/>2</p>
5241 </td>
5242
5243 <td class="entry_tags">
5244 </td>
5245
5246 </tr>
5247 <tr class="entries_header">
5248 <th class="th_details" colspan="6">Details</th>
5249 </tr>
5250 <tr class="entry_cont">
5251 <td class="entry_details" colspan="6">
5252 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
5253<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5254 </td>
5255 </tr>
5256
5257
5258 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5259 <!-- end of entry -->
5260
5261
5262 <tr class="entry" id="controls_android.control.awbRegionsSet">
5263 <td class="entry_name
5264 " rowspan="3">
5265 android.<wbr/>control.<wbr/>awb<wbr/>Regions<wbr/>Set
5266 </td>
5267 <td class="entry_type">
5268 <span class="entry_type_name entry_type_name_enum">byte</span>
5269
5270 <span class="entry_type_visibility"> [fwk_only as boolean]</span>
5271
5272
5273
5274
5275
5276 <ul class="entry_type_enum">
5277 <li>
Jayant Chowdhary33211462021-07-21 11:26:51 -07005278 <span class="entry_type_enum_name">FALSE (v3.2)</span>
5279 <span class="entry_type_enum_notes"><p>AWB regions (<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span>
5280 </li>
Jayant Chowdharyee096d62021-09-13 11:29:10 -07005281 <li>
5282 <span class="entry_type_enum_name">TRUE (v3.2)</span>
5283 <span class="entry_type_enum_notes"><p>AWB regions (<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span>
5284 </li>
Jayant Chowdhary33211462021-07-21 11:26:51 -07005285 </ul>
5286
5287 </td> <!-- entry_type -->
5288
5289 <td class="entry_description">
5290 <p>Framework-only private key which informs camera fwk that the AF regions has been set
5291by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
5292set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
5293 </td>
5294
5295 <td class="entry_units">
5296 </td>
5297
5298 <td class="entry_range">
5299 </td>
5300
5301 <td class="entry_hal_version">
5302 <p>3.<wbr/>2</p>
5303 </td>
5304
5305 <td class="entry_tags">
5306 </td>
5307
5308 </tr>
5309 <tr class="entries_header">
5310 <th class="th_details" colspan="6">Details</th>
5311 </tr>
5312 <tr class="entry_cont">
5313 <td class="entry_details" colspan="6">
5314 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
5315<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5316 </td>
5317 </tr>
5318
5319
5320 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5321 <!-- end of entry -->
5322
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005323
5324
5325 <!-- end of kind -->
5326 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005327 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005328
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07005329 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005330 <tr>
5331 <th class="th_name">Property Name</th>
5332 <th class="th_type">Type</th>
5333 <th class="th_description">Description</th>
5334 <th class="th_units">Units</th>
5335 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005336 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005337 <th class="th_tags">Tags</th>
5338 </tr>
5339 </thead>
5340
5341 <tbody>
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352 <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005353 <td class="entry_name
5354 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08005355 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005356 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005357 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005358 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005359 <span class="entry_type_container">x</span>
5360
5361 <span class="entry_type_array">
5362 n
5363 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07005364 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07005365
5366
Igor Murashkinca256272014-10-02 15:27:09 -07005367 <span class="entry_type_hwlevel">[legacy] </span>
5368
Igor Murashkin6c936c12014-05-13 14:51:49 -07005369
Igor Murashkin0b080452013-12-27 15:30:25 -08005370 <div class="entry_type_notes">list of enums</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005371
5372
5373 </td> <!-- entry_type -->
5374
5375 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005376 <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
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08005377supported by this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005378 </td>
5379
5380 <td class="entry_units">
5381 </td>
5382
5383 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005384 <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005385 </td>
5386
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005387 <td class="entry_hal_version">
5388 <p>3.<wbr/>2</p>
5389 </td>
5390
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005391 <td class="entry_tags">
Zhijun He5fb671c2014-05-21 17:51:05 -07005392 <ul class="entry_tags">
5393 <li><a href="#tag_BC">BC</a></li>
5394 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005395 </td>
5396
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005397 </tr>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08005398 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005399 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08005400 </tr>
5401 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005402 <td class="entry_details" colspan="6">
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08005403 <p>Not all of the auto-exposure anti-banding modes may be
5404supported by a given camera device.<wbr/> This field lists the
5405valid anti-banding modes that the application may request
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005406for this camera device with the
Yin-Chia Yeh9d1b4522014-11-25 11:51:48 -08005407<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08005408 </td>
5409 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005410
5411
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005412 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005413 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005414
5415
5416 <tr class="entry" id="static_android.control.aeAvailableModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005417 <td class="entry_name
5418 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08005419 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005420 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005421 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005422 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005423 <span class="entry_type_container">x</span>
5424
5425 <span class="entry_type_array">
5426 n
5427 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07005428 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07005429
5430
Igor Murashkinca256272014-10-02 15:27:09 -07005431 <span class="entry_type_hwlevel">[legacy] </span>
5432
Igor Murashkin6c936c12014-05-13 14:51:49 -07005433
Igor Murashkin0b080452013-12-27 15:30:25 -08005434 <div class="entry_type_notes">list of enums</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005435
5436
5437 </td> <!-- entry_type -->
5438
5439 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005440 <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
5441device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005442 </td>
5443
5444 <td class="entry_units">
5445 </td>
5446
5447 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005448 <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005449 </td>
5450
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005451 <td class="entry_hal_version">
5452 <p>3.<wbr/>2</p>
5453 </td>
5454
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005455 <td class="entry_tags">
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08005456 <ul class="entry_tags">
5457 <li><a href="#tag_BC">BC</a></li>
5458 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005459 </td>
5460
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005461 </tr>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08005462 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005463 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08005464 </tr>
5465 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005466 <td class="entry_details" colspan="6">
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08005467 <p>Not all the auto-exposure modes may be supported by a
5468given camera device,<wbr/> especially if no flash unit is
5469available.<wbr/> This entry lists the valid modes for
5470<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -07005471<p>All camera devices support ON,<wbr/> and all camera devices with flash
5472units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -08005473<p>FULL mode camera devices always support OFF mode,<wbr/>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08005474which enables application control of camera exposure time,<wbr/>
5475sensitivity,<wbr/> and frame duration.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -07005476<p>LEGACY mode camera devices never support OFF mode.<wbr/>
5477LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
5478capability.<wbr/></p>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08005479 </td>
5480 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005481
5482
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005483 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005484 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005485
5486
5487 <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005488 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005489 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08005490 android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005491 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005492 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005493 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005494 <span class="entry_type_container">x</span>
5495
5496 <span class="entry_type_array">
5497 2 x n
5498 </span>
Igor Murashkin35a108f2014-05-27 10:51:25 -07005499 <span class="entry_type_visibility"> [public as rangeInt]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07005500
5501
Igor Murashkinca256272014-10-02 15:27:09 -07005502 <span class="entry_type_hwlevel">[legacy] </span>
5503
Igor Murashkin6c936c12014-05-13 14:51:49 -07005504
Igor Murashkin0b080452013-12-27 15:30:25 -08005505 <div class="entry_type_notes">list of pairs of frame rates</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005506
5507
5508 </td> <!-- entry_type -->
5509
5510 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005511 <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
5512this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005513 </td>
5514
5515 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005516 Frames per second (FPS)
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005517 </td>
5518
5519 <td class="entry_range">
5520 </td>
5521
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005522 <td class="entry_hal_version">
5523 <p>3.<wbr/>2</p>
5524 </td>
5525
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005526 <td class="entry_tags">
Zhijun He5fb671c2014-05-21 17:51:05 -07005527 <ul class="entry_tags">
5528 <li><a href="#tag_BC">BC</a></li>
5529 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005530 </td>
5531
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005532 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005533 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005534 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005535 </tr>
5536 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005537 <td class="entry_details" colspan="6">
Yin-Chia Yeh11aee3e2015-05-21 11:23:48 -07005538 <p>For devices at the LEGACY level or above:</p>
5539<ul>
Yin-Chia Yeh30bf75b2015-11-20 15:16:05 -08005540<li>
5541<p>For constant-framerate recording,<wbr/> for each normal
5542<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
Yin-Chia Yeh11aee3e2015-05-21 11:23:48 -07005543<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
5544<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
5545the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
5546<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
5547supported by the device and has
5548<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
Yin-Chia Yeh30bf75b2015-11-20 15:16:05 -08005549always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
5550</li>
5551<li>
5552<p>Also,<wbr/> a camera device must either not support any
5553<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
5554or support at least one
5555normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
5556<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
5557</li>
Yin-Chia Yeh11aee3e2015-05-21 11:23:48 -07005558</ul>
5559<p>For devices at the LIMITED level or above:</p>
5560<ul>
Yin-Chia Yeh56a51f32019-06-12 14:45:21 -07005561<li>For devices that advertise NIR color filter arrangement in
5562<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>,<wbr/> this list will always include
5563(<code>max</code>,<wbr/> <code>max</code>) where <code>max</code> = the maximum output frame rate of the maximum YUV_<wbr/>420_<wbr/>888
5564output size.<wbr/></li>
5565<li>For devices advertising any color filter arrangement other than NIR,<wbr/> or devices not
5566advertising color filter arrangement,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) and
5567(<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
Yin-Chia Yeh11aee3e2015-05-21 11:23:48 -07005568maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
5569</ul>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005570 </td>
5571 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005572
5573
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005574 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005575 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005576
5577
5578 <tr class="entry" id="static_android.control.aeCompensationRange">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005579 <td class="entry_name
5580 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -08005581 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005582 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005583 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005584 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005585 <span class="entry_type_container">x</span>
5586
5587 <span class="entry_type_array">
5588 2
5589 </span>
Igor Murashkin35a108f2014-05-27 10:51:25 -07005590 <span class="entry_type_visibility"> [public as rangeInt]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005591
5592
Igor Murashkinca256272014-10-02 15:27:09 -07005593 <span class="entry_type_hwlevel">[legacy] </span>
5594
Igor Murashkin6c936c12014-05-13 14:51:49 -07005595
5596
5597
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005598 </td> <!-- entry_type -->
5599
5600 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005601 <p>Maximum and minimum exposure compensation values for
5602<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/>
5603that are supported by this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005604 </td>
5605
5606 <td class="entry_units">
5607 </td>
5608
5609 <td class="entry_range">
Zhijun Hefa73c082015-02-04 13:51:22 -08005610 <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
5611<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
5612compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
5613<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>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005614<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>
Zhijun Hefa73c082015-02-04 13:51:22 -08005615<p>LEGACY devices may support a smaller range than this.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005616 </td>
5617
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005618 <td class="entry_hal_version">
5619 <p>3.<wbr/>2</p>
5620 </td>
5621
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005622 <td class="entry_tags">
5623 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08005624 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005625 </ul>
5626 </td>
5627
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005628 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005629
5630
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005631 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005632 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005633
5634
5635 <tr class="entry" id="static_android.control.aeCompensationStep">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005636 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005637 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08005638 android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005639 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005640 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005641 <span class="entry_type_name">rational</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005642
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07005643 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005644
5645
Igor Murashkinca256272014-10-02 15:27:09 -07005646 <span class="entry_type_hwlevel">[legacy] </span>
5647
Igor Murashkin6c936c12014-05-13 14:51:49 -07005648
5649
5650
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005651 </td> <!-- entry_type -->
5652
5653 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005654 <p>Smallest step by which the exposure compensation
5655can be changed.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005656 </td>
5657
5658 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005659 Exposure Value (EV)
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005660 </td>
5661
5662 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005663 </td>
5664
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005665 <td class="entry_hal_version">
5666 <p>3.<wbr/>2</p>
5667 </td>
5668
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005669 <td class="entry_tags">
5670 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08005671 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005672 </ul>
5673 </td>
5674
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005675 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005676 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005677 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005678 </tr>
5679 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005680 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005681 <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
5682a 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
5683that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
5684<p>One unit of EV compensation changes the brightness of the captured image by a factor
5685of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
5686 </td>
5687 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005688
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005689 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005690 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005691 </tr>
5692 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005693 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005694 <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
5695 </td>
5696 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005697
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005698 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005699 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005700
5701
5702 <tr class="entry" id="static_android.control.afAvailableModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005703 <td class="entry_name
5704 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08005705 android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005706 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005707 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005708 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005709 <span class="entry_type_container">x</span>
5710
5711 <span class="entry_type_array">
5712 n
5713 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07005714 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07005715
5716
Igor Murashkinca256272014-10-02 15:27:09 -07005717 <span class="entry_type_hwlevel">[legacy] </span>
5718
Igor Murashkin6c936c12014-05-13 14:51:49 -07005719
Igor Murashkin0b080452013-12-27 15:30:25 -08005720 <div class="entry_type_notes">List of enums</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005721
5722
5723 </td> <!-- entry_type -->
5724
5725 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005726 <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
5727supported by this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005728 </td>
5729
5730 <td class="entry_units">
5731 </td>
5732
5733 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005734 <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005735 </td>
5736
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005737 <td class="entry_hal_version">
5738 <p>3.<wbr/>2</p>
5739 </td>
5740
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005741 <td class="entry_tags">
5742 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08005743 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005744 </ul>
5745 </td>
5746
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005747 </tr>
Zhijun Hef163fa92014-01-14 09:59:04 -08005748 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005749 <th class="th_details" colspan="6">Details</th>
Zhijun Hef163fa92014-01-14 09:59:04 -08005750 </tr>
5751 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005752 <td class="entry_details" colspan="6">
Zhijun Hef163fa92014-01-14 09:59:04 -08005753 <p>Not all the auto-focus modes may be supported by a
5754given camera device.<wbr/> This entry lists the valid modes for
5755<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
Ruben Brunka5bcb402014-09-22 16:11:06 -07005756<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
5757camera devices with adjustable focuser units
5758(<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>
Igor Murashkinca256272014-10-02 15:27:09 -07005759<p>LEGACY devices will support OFF mode only if they support
5760focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
5761<code>0.<wbr/>0f</code>).<wbr/></p>
Zhijun Hef163fa92014-01-14 09:59:04 -08005762 </td>
5763 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005764
5765
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005766 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005767 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005768
5769
5770 <tr class="entry" id="static_android.control.availableEffects">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005771 <td class="entry_name
5772 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08005773 android.<wbr/>control.<wbr/>available<wbr/>Effects
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005774 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005775 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005776 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005777 <span class="entry_type_container">x</span>
5778
5779 <span class="entry_type_array">
5780 n
5781 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07005782 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07005783
5784
Igor Murashkinca256272014-10-02 15:27:09 -07005785 <span class="entry_type_hwlevel">[legacy] </span>
5786
Igor Murashkin6c936c12014-05-13 14:51:49 -07005787
Ruben Brunkb28b35f2014-01-14 17:17:19 -08005788 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005789
5790
5791 </td> <!-- entry_type -->
5792
5793 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005794 <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
5795device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005796 </td>
5797
5798 <td class="entry_units">
5799 </td>
5800
5801 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005802 <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005803 </td>
5804
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005805 <td class="entry_hal_version">
5806 <p>3.<wbr/>2</p>
5807 </td>
5808
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005809 <td class="entry_tags">
5810 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08005811 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005812 </ul>
5813 </td>
5814
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005815 </tr>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08005816 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005817 <th class="th_details" colspan="6">Details</th>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08005818 </tr>
5819 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005820 <td class="entry_details" colspan="6">
Ruben Brunkb28b35f2014-01-14 17:17:19 -08005821 <p>This list contains the color effect modes that can be applied to
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005822images produced by the camera device.<wbr/>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08005823Implementations are not expected to be consistent across all devices.<wbr/>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005824If no color effect modes are available for a device,<wbr/> this will only list
5825OFF.<wbr/></p>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08005826<p>A color effect will only be applied if
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005827<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p>
5828<p>This control has no effect on the operation of other control routines such
5829as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08005830 </td>
5831 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005832
5833
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005834 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005835 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005836
5837
5838 <tr class="entry" id="static_android.control.availableSceneModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005839 <td class="entry_name
5840 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08005841 android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005842 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005843 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005844 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005845 <span class="entry_type_container">x</span>
5846
5847 <span class="entry_type_array">
5848 n
5849 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07005850 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07005851
5852
Igor Murashkinca256272014-10-02 15:27:09 -07005853 <span class="entry_type_hwlevel">[legacy] </span>
5854
Igor Murashkin6c936c12014-05-13 14:51:49 -07005855
Ruben Brunkbf870fc2014-01-14 17:46:58 -08005856 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005857
5858
5859 </td> <!-- entry_type -->
5860
5861 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005862 <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
5863device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005864 </td>
5865
5866 <td class="entry_units">
5867 </td>
5868
5869 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005870 <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005871 </td>
5872
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005873 <td class="entry_hal_version">
5874 <p>3.<wbr/>2</p>
5875 </td>
5876
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005877 <td class="entry_tags">
5878 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08005879 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005880 </ul>
5881 </td>
5882
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005883 </tr>
Ruben Brunkbf870fc2014-01-14 17:46:58 -08005884 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005885 <th class="th_details" colspan="6">Details</th>
Ruben Brunkbf870fc2014-01-14 17:46:58 -08005886 </tr>
5887 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005888 <td class="entry_details" colspan="6">
Ruben Brunkbf870fc2014-01-14 17:46:58 -08005889 <p>This list contains scene modes that can be set for the camera device.<wbr/>
5890Only scene modes that have been fully implemented for the
5891camera device may be included here.<wbr/> Implementations are not expected
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005892to be consistent across all devices.<wbr/></p>
5893<p>If no scene modes are supported by the camera device,<wbr/> this
5894will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5895<p>FACE_<wbr/>PRIORITY is always listed if face detection is
5896supported (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;
58970</code>).<wbr/></p>
Ruben Brunkbf870fc2014-01-14 17:46:58 -08005898 </td>
5899 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005900
5901
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005902 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005903 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005904
5905
5906 <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005907 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005908 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08005909 android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005910 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005911 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005912 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005913 <span class="entry_type_container">x</span>
5914
5915 <span class="entry_type_array">
5916 n
5917 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07005918 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07005919
5920
Igor Murashkinca256272014-10-02 15:27:09 -07005921 <span class="entry_type_hwlevel">[legacy] </span>
5922
Igor Murashkin6c936c12014-05-13 14:51:49 -07005923
Igor Murashkin0b080452013-12-27 15:30:25 -08005924 <div class="entry_type_notes">List of enums.<wbr/></div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005925
5926
5927 </td> <!-- entry_type -->
5928
5929 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005930 <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5931that are supported by this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005932 </td>
5933
5934 <td class="entry_units">
5935 </td>
5936
5937 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005938 <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005939 </td>
5940
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005941 <td class="entry_hal_version">
5942 <p>3.<wbr/>2</p>
5943 </td>
5944
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005945 <td class="entry_tags">
5946 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08005947 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005948 </ul>
5949 </td>
5950
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005951 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005952 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005953 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005954 </tr>
5955 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005956 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005957 <p>OFF will always be listed.<wbr/></p>
5958 </td>
5959 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005960
5961
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08005962 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08005963 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005964
5965
5966 <tr class="entry" id="static_android.control.awbAvailableModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -07005967 <td class="entry_name
5968 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08005969 android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08005970 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005971 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08005972 <span class="entry_type_name">byte</span>
Alex Raya4251d92013-04-30 16:43:44 -07005973 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005974
Alex Raya4251d92013-04-30 16:43:44 -07005975 <span class="entry_type_array">
5976 n
5977 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -07005978 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -07005979
5980
Igor Murashkinca256272014-10-02 15:27:09 -07005981 <span class="entry_type_hwlevel">[legacy] </span>
5982
Igor Murashkin6c936c12014-05-13 14:51:49 -07005983
Zhijun He7787f7f2014-01-14 16:30:31 -08005984 <div class="entry_type_notes">List of enums</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005985
5986
5987 </td> <!-- entry_type -->
5988
5989 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005990 <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
5991camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005992 </td>
5993
5994 <td class="entry_units">
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005995 </td>
5996
5997 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07005998 <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08005999 </td>
6000
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006001 <td class="entry_hal_version">
6002 <p>3.<wbr/>2</p>
6003 </td>
6004
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006005 <td class="entry_tags">
6006 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08006007 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006008 </ul>
6009 </td>
6010
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08006011 </tr>
Zhijun He7787f7f2014-01-14 16:30:31 -08006012 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006013 <th class="th_details" colspan="6">Details</th>
Zhijun He7787f7f2014-01-14 16:30:31 -08006014 </tr>
6015 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006016 <td class="entry_details" colspan="6">
Zhijun He7787f7f2014-01-14 16:30:31 -08006017 <p>Not all the auto-white-balance modes may be supported by a
6018given camera device.<wbr/> This entry lists the valid modes for
6019<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
6020<p>All camera devices will support ON mode.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006021<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
6022mode,<wbr/> which enables application control of white balance,<wbr/> by using
6023<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
6024mode camera devices.<wbr/></p>
Zhijun He7787f7f2014-01-14 16:30:31 -08006025 </td>
6026 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08006027
6028
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006029 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08006030 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006031
6032
6033 <tr class="entry" id="static_android.control.maxRegions">
Igor Murashkin6c936c12014-05-13 14:51:49 -07006034 <td class="entry_name
6035 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -08006036 android.<wbr/>control.<wbr/>max<wbr/>Regions
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08006037 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006038 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08006039 <span class="entry_type_name">int32</span>
Ruben Brunk120eea42014-01-15 15:55:08 -08006040 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006041
Ruben Brunk120eea42014-01-15 15:55:08 -08006042 <span class="entry_type_array">
6043 3
6044 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -07006045 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006046
6047
Igor Murashkinca256272014-10-02 15:27:09 -07006048 <span class="entry_type_hwlevel">[legacy] </span>
6049
Igor Murashkin6c936c12014-05-13 14:51:49 -07006050
6051
6052
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006053 </td> <!-- entry_type -->
6054
6055 <td class="entry_description">
Ruben Brunk120eea42014-01-15 15:55:08 -08006056 <p>List of the maximum number of regions that can be used for metering in
6057auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
Yin-Chia Yehadae7132019-10-07 15:16:15 -07006058this corresponds to the maximum number of elements in
Ruben Brunk120eea42014-01-15 15:55:08 -08006059<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/>
6060and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006061 </td>
6062
6063 <td class="entry_units">
6064 </td>
6065
6066 <td class="entry_range">
Ruben Brunk120eea42014-01-15 15:55:08 -08006067 <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
6068this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
6069<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006070 </td>
6071
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006072 <td class="entry_hal_version">
6073 <p>3.<wbr/>2</p>
6074 </td>
6075
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006076 <td class="entry_tags">
6077 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08006078 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006079 </ul>
6080 </td>
6081
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08006082 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08006083
6084
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006085 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08006086 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006087
6088
Igor Murashkin35a108f2014-05-27 10:51:25 -07006089 <tr class="entry" id="static_android.control.maxRegionsAe">
6090 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006091 " rowspan="5">
Igor Murashkin35a108f2014-05-27 10:51:25 -07006092 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
6093 </td>
6094 <td class="entry_type">
6095 <span class="entry_type_name">int32</span>
6096
Yin-Chia Yehc6c24162016-04-02 16:30:30 -07006097 <span class="entry_type_visibility"> [java_public]</span>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006098
6099 <span class="entry_type_synthetic">[synthetic] </span>
6100
Igor Murashkinca256272014-10-02 15:27:09 -07006101 <span class="entry_type_hwlevel">[legacy] </span>
6102
Igor Murashkin35a108f2014-05-27 10:51:25 -07006103
6104
6105
6106 </td> <!-- entry_type -->
6107
6108 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006109 <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
6110routine.<wbr/></p>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006111 </td>
6112
6113 <td class="entry_units">
6114 </td>
6115
6116 <td class="entry_range">
6117 <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
6118value will be &gt;= 1.<wbr/></p>
6119 </td>
6120
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006121 <td class="entry_hal_version">
6122 <p>3.<wbr/>2</p>
6123 </td>
6124
Igor Murashkin35a108f2014-05-27 10:51:25 -07006125 <td class="entry_tags">
6126 </td>
6127
6128 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006129 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006130 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006131 </tr>
6132 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006133 <td class="entry_details" colspan="6">
Yin-Chia Yehadae7132019-10-07 15:16:15 -07006134 <p>This corresponds to the maximum allowed number of elements in
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006135<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
6136 </td>
6137 </tr>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006138
6139 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006140 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006141 </tr>
6142 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006143 <td class="entry_details" colspan="6">
Igor Murashkin35a108f2014-05-27 10:51:25 -07006144 <p>This entry is private to the framework.<wbr/> Fill in
6145maxRegions to have this entry be automatically populated.<wbr/></p>
6146 </td>
6147 </tr>
6148
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006149 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006150 <!-- end of entry -->
6151
6152
6153 <tr class="entry" id="static_android.control.maxRegionsAwb">
6154 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006155 " rowspan="5">
Igor Murashkin35a108f2014-05-27 10:51:25 -07006156 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
6157 </td>
6158 <td class="entry_type">
6159 <span class="entry_type_name">int32</span>
6160
Yin-Chia Yehc6c24162016-04-02 16:30:30 -07006161 <span class="entry_type_visibility"> [java_public]</span>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006162
6163 <span class="entry_type_synthetic">[synthetic] </span>
6164
Igor Murashkinca256272014-10-02 15:27:09 -07006165 <span class="entry_type_hwlevel">[legacy] </span>
6166
Igor Murashkin35a108f2014-05-27 10:51:25 -07006167
6168
6169
6170 </td> <!-- entry_type -->
6171
6172 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006173 <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
6174routine.<wbr/></p>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006175 </td>
6176
6177 <td class="entry_units">
6178 </td>
6179
6180 <td class="entry_range">
6181 <p>Value will be &gt;= 0.<wbr/></p>
6182 </td>
6183
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006184 <td class="entry_hal_version">
6185 <p>3.<wbr/>2</p>
6186 </td>
6187
Igor Murashkin35a108f2014-05-27 10:51:25 -07006188 <td class="entry_tags">
6189 </td>
6190
6191 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006192 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006193 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006194 </tr>
6195 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006196 <td class="entry_details" colspan="6">
Yin-Chia Yehadae7132019-10-07 15:16:15 -07006197 <p>This corresponds to the maximum allowed number of elements in
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006198<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
6199 </td>
6200 </tr>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006201
6202 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006203 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006204 </tr>
6205 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006206 <td class="entry_details" colspan="6">
Igor Murashkin35a108f2014-05-27 10:51:25 -07006207 <p>This entry is private to the framework.<wbr/> Fill in
6208maxRegions to have this entry be automatically populated.<wbr/></p>
6209 </td>
6210 </tr>
6211
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006212 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006213 <!-- end of entry -->
6214
6215
6216 <tr class="entry" id="static_android.control.maxRegionsAf">
6217 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006218 " rowspan="5">
Igor Murashkin35a108f2014-05-27 10:51:25 -07006219 android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
6220 </td>
6221 <td class="entry_type">
6222 <span class="entry_type_name">int32</span>
6223
Yin-Chia Yehc6c24162016-04-02 16:30:30 -07006224 <span class="entry_type_visibility"> [java_public]</span>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006225
6226 <span class="entry_type_synthetic">[synthetic] </span>
6227
Igor Murashkinca256272014-10-02 15:27:09 -07006228 <span class="entry_type_hwlevel">[legacy] </span>
6229
Igor Murashkin35a108f2014-05-27 10:51:25 -07006230
6231
6232
6233 </td> <!-- entry_type -->
6234
6235 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006236 <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006237 </td>
6238
6239 <td class="entry_units">
6240 </td>
6241
6242 <td class="entry_range">
6243 <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
6244value will be &gt;= 1.<wbr/></p>
6245 </td>
6246
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006247 <td class="entry_hal_version">
6248 <p>3.<wbr/>2</p>
6249 </td>
6250
Igor Murashkin35a108f2014-05-27 10:51:25 -07006251 <td class="entry_tags">
6252 </td>
6253
6254 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006255 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006256 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006257 </tr>
6258 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006259 <td class="entry_details" colspan="6">
Yin-Chia Yehadae7132019-10-07 15:16:15 -07006260 <p>This corresponds to the maximum allowed number of elements in
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07006261<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
6262 </td>
6263 </tr>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006264
6265 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006266 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006267 </tr>
6268 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006269 <td class="entry_details" colspan="6">
Igor Murashkin35a108f2014-05-27 10:51:25 -07006270 <p>This entry is private to the framework.<wbr/> Fill in
6271maxRegions to have this entry be automatically populated.<wbr/></p>
6272 </td>
6273 </tr>
6274
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006275 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin35a108f2014-05-27 10:51:25 -07006276 <!-- end of entry -->
6277
6278
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006279 <tr class="entry" id="static_android.control.sceneModeOverrides">
Igor Murashkin6c936c12014-05-13 14:51:49 -07006280 <td class="entry_name
6281 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08006282 android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08006283 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006284 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08006285 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006286 <span class="entry_type_container">x</span>
6287
6288 <span class="entry_type_array">
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07006289 3 x length(availableSceneModes)
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006290 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07006291 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006292
6293
Igor Murashkinca256272014-10-02 15:27:09 -07006294 <span class="entry_type_hwlevel">[limited] </span>
6295
Igor Murashkin6c936c12014-05-13 14:51:49 -07006296
6297
6298
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006299 </td> <!-- entry_type -->
6300
6301 <td class="entry_description">
Ruben Brunkcf77fe92014-01-14 19:31:21 -08006302 <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
6303settings to use with each available scene mode.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006304 </td>
6305
6306 <td class="entry_units">
6307 </td>
6308
6309 <td class="entry_range">
Ruben Brunkcf77fe92014-01-14 19:31:21 -08006310 <p>For each available scene mode,<wbr/> the list must contain three
6311entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
6312<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
6313by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
6314where aeMode has the lowest index position.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006315 </td>
6316
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006317 <td class="entry_hal_version">
6318 <p>3.<wbr/>2</p>
6319 </td>
6320
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08006321 <td class="entry_tags">
6322 <ul class="entry_tags">
6323 <li><a href="#tag_BC">BC</a></li>
6324 </ul>
6325 </td>
6326
6327 </tr>
6328 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006329 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08006330 </tr>
6331 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006332 <td class="entry_details" colspan="6">
Ruben Brunkcf77fe92014-01-14 19:31:21 -08006333 <p>When a scene mode is enabled,<wbr/> the camera device is expected
6334to 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/>
6335and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
6336that scene mode.<wbr/></p>
6337<p>The order of this list matches that of availableSceneModes,<wbr/>
6338with 3 entries for each mode.<wbr/> The overrides listed
Zhijun He1a71d0d2015-06-16 19:44:18 -07006339for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
6340since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
Ruben Brunkcf77fe92014-01-14 19:31:21 -08006341<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
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -08006342used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
Zhijun He1a71d0d2015-06-16 19:44:18 -07006343is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
6344FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
Ruben Brunkcf77fe92014-01-14 19:31:21 -08006345<p>For example,<wbr/> if availableSceneModes contains
6346<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework
6347expects sceneModeOverrides to have 9 entries formatted like:
6348<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
6349ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006350 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08006351 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08006352
Ruben Brunkcf77fe92014-01-14 19:31:21 -08006353 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006354 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunkcf77fe92014-01-14 19:31:21 -08006355 </tr>
6356 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006357 <td class="entry_details" colspan="6">
Ruben Brunkcf77fe92014-01-14 19:31:21 -08006358 <p>To maintain backward compatibility,<wbr/> this list will be made available
6359in the static metadata of the camera service.<wbr/> The camera service will
6360use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
6361<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
Zhijun He1a71d0d2015-06-16 19:44:18 -07006362mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
Ruben Brunkcf77fe92014-01-14 19:31:21 -08006363 </td>
6364 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08006365
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006366 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08006367 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08006368
Zhijun He17f2d2c2014-06-10 18:21:34 -07006369
6370 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
6371 <td class="entry_name
6372 " rowspan="5">
6373 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
6374 </td>
6375 <td class="entry_type">
6376 <span class="entry_type_name">int32</span>
6377 <span class="entry_type_container">x</span>
6378
6379 <span class="entry_type_array">
Zhijun He7defc682015-05-22 17:04:15 -07006380 5 x n
Zhijun He17f2d2c2014-06-10 18:21:34 -07006381 </span>
Yin-Chia Yeh35bdd4b2014-07-15 10:42:05 -07006382 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
Zhijun He17f2d2c2014-06-10 18:21:34 -07006383
6384
Igor Murashkinca256272014-10-02 15:27:09 -07006385 <span class="entry_type_hwlevel">[limited] </span>
6386
Zhijun He17f2d2c2014-06-10 18:21:34 -07006387
6388
6389
6390 </td> <!-- entry_type -->
6391
6392 <td class="entry_description">
Zhijun He7defc682015-05-22 17:04:15 -07006393 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
6394supported 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>
Zhijun He17f2d2c2014-06-10 18:21:34 -07006395 </td>
6396
6397 <td class="entry_units">
6398 </td>
6399
6400 <td class="entry_range">
Zhijun He7defc682015-05-22 17:04:15 -07006401 <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
Zhijun He17f2d2c2014-06-10 18:21:34 -07006402 </td>
6403
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006404 <td class="entry_hal_version">
6405 <p>3.<wbr/>2</p>
6406 </td>
6407
Zhijun He17f2d2c2014-06-10 18:21:34 -07006408 <td class="entry_tags">
6409 <ul class="entry_tags">
6410 <li><a href="#tag_V1">V1</a></li>
6411 </ul>
6412 </td>
6413
6414 </tr>
6415 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006416 <th class="th_details" colspan="6">Details</th>
Zhijun He17f2d2c2014-06-10 18:21:34 -07006417 </tr>
6418 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006419 <td class="entry_details" colspan="6">
Zhijun He4b466e72015-06-23 07:59:24 -07006420 <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/>
Zhijun He7defc682015-05-22 17:04:15 -07006421this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
6422configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
6423reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
6424for processed non-stalling formats.<wbr/></p>
6425<p>For the high speed video use case,<wbr/> the application must
Zhijun He17f2d2c2014-06-10 18:21:34 -07006426select the video size and fps range from this metadata to configure the recording and
6427preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
6428to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
6429configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
6430by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
Yin-Chia Yeh35bdd4b2014-07-15 10:42:05 -07006431recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
Zhijun He7defc682015-05-22 17:04:15 -07006432must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
6433must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
6434<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07006435<p>High speed video streaming extends significant performance pressure to camera hardware,<wbr/>
Zhijun He7defc682015-05-22 17:04:15 -07006436to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
6437multiple frames together and send to camera device for processing where the request
6438controls are same for all the frames in this batch.<wbr/> Max batch size indicates
6439the max possible number of frames the camera device will group together for this high
6440speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
6441recording request list by
Eino-Ville Talvalaf55c1a82015-06-30 13:32:09 -07006442<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
Zhijun He7defc682015-05-22 17:04:15 -07006443The max batch size for each configuration will satisfy below conditions:</p>
6444<ul>
6445<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
6446if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
6447<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
6448the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
6449size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
6450<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
6451</ul>
6452<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
6453in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
6454<p>This fps ranges in this configuration list can only be used to create requests
6455that are submitted to a high speed camera capture session created by
6456<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
6457The fps ranges reported in this metadata must not be used to setup capture requests for
6458normal capture session,<wbr/> or it will cause request error.<wbr/></p>
Zhijun He17f2d2c2014-06-10 18:21:34 -07006459 </td>
6460 </tr>
6461
6462 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006463 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He17f2d2c2014-06-10 18:21:34 -07006464 </tr>
6465 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006466 <td class="entry_details" colspan="6">
Zhijun He17f2d2c2014-06-10 18:21:34 -07006467 <p>All the sizes listed in this configuration will be a subset of the sizes reported by
Yin-Chia Yeh35bdd4b2014-07-15 10:42:05 -07006468<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
6469Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
6470of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
Zhijun He7defc682015-05-22 17:04:15 -07006471<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
6472sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
6473usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
6474stutter when starting recording as much as possible,<wbr/> the application may want to ensure
6475the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
6476the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
6477For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
6478[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
6479do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
6480recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
Rucha Katakwarfe95b882022-02-02 16:36:50 -08006481values that are suitable for smooth preview streaming.<wbr/>
6482If the HAL sees different max_<wbr/>fps values that fall into different sensor modes in a
6483sequence of requests,<wbr/> the HAL must switch the sensor mode as quick as possible to minimize
6484the mode switch caused stutter.<wbr/></p>
6485<p>HAL can also support 60fps preview during high speed recording session by advertising
6486[60,<wbr/> max_<wbr/>fps] for preview and [max_<wbr/>fps,<wbr/> max_<wbr/>fps] for recording.<wbr/> However,<wbr/> HAL must not
6487advertise both 30fps preview and 60fps preview for the same recording frame rate.<wbr/></p>
Zhijun He17f2d2c2014-06-10 18:21:34 -07006488 </td>
6489 </tr>
6490
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006491 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He17f2d2c2014-06-10 18:21:34 -07006492 <!-- end of entry -->
6493
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006494
6495 <tr class="entry" id="static_android.control.aeLockAvailable">
6496 <td class="entry_name
6497 " rowspan="3">
6498 android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
6499 </td>
6500 <td class="entry_type">
6501 <span class="entry_type_name entry_type_name_enum">byte</span>
6502
6503 <span class="entry_type_visibility"> [public as boolean]</span>
6504
6505
6506 <span class="entry_type_hwlevel">[legacy] </span>
6507
6508
6509
6510 <ul class="entry_type_enum">
6511 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08006512 <span class="entry_type_enum_name">FALSE (v3.2)</span>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006513 </li>
6514 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08006515 <span class="entry_type_enum_name">TRUE (v3.2)</span>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006516 </li>
6517 </ul>
6518
6519 </td> <!-- entry_type -->
6520
6521 <td class="entry_description">
6522 <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
6523 </td>
6524
6525 <td class="entry_units">
6526 </td>
6527
6528 <td class="entry_range">
6529 </td>
6530
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006531 <td class="entry_hal_version">
6532 <p>3.<wbr/>2</p>
6533 </td>
6534
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006535 <td class="entry_tags">
6536 <ul class="entry_tags">
6537 <li><a href="#tag_BC">BC</a></li>
6538 </ul>
6539 </td>
6540
6541 </tr>
6542 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006543 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006544 </tr>
6545 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006546 <td class="entry_details" colspan="6">
Yin-Chia Yehe36c5ed2015-04-02 14:31:53 -07006547 <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
6548list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006549 </td>
6550 </tr>
6551
6552
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006553 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006554 <!-- end of entry -->
6555
6556
6557 <tr class="entry" id="static_android.control.awbLockAvailable">
6558 <td class="entry_name
6559 " rowspan="3">
6560 android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
6561 </td>
6562 <td class="entry_type">
6563 <span class="entry_type_name entry_type_name_enum">byte</span>
6564
6565 <span class="entry_type_visibility"> [public as boolean]</span>
6566
6567
6568 <span class="entry_type_hwlevel">[legacy] </span>
6569
6570
6571
6572 <ul class="entry_type_enum">
6573 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08006574 <span class="entry_type_enum_name">FALSE (v3.2)</span>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006575 </li>
6576 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08006577 <span class="entry_type_enum_name">TRUE (v3.2)</span>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006578 </li>
6579 </ul>
6580
6581 </td> <!-- entry_type -->
6582
6583 <td class="entry_description">
6584 <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
6585 </td>
6586
6587 <td class="entry_units">
6588 </td>
6589
6590 <td class="entry_range">
6591 </td>
6592
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006593 <td class="entry_hal_version">
6594 <p>3.<wbr/>2</p>
6595 </td>
6596
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006597 <td class="entry_tags">
6598 <ul class="entry_tags">
6599 <li><a href="#tag_BC">BC</a></li>
6600 </ul>
6601 </td>
6602
6603 </tr>
6604 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006605 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006606 </tr>
6607 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006608 <td class="entry_details" colspan="6">
Yin-Chia Yehe36c5ed2015-04-02 14:31:53 -07006609 <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
6610always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006611 </td>
6612 </tr>
6613
6614
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006615 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006616 <!-- end of entry -->
6617
6618
6619 <tr class="entry" id="static_android.control.availableModes">
6620 <td class="entry_name
6621 " rowspan="3">
6622 android.<wbr/>control.<wbr/>available<wbr/>Modes
6623 </td>
6624 <td class="entry_type">
6625 <span class="entry_type_name">byte</span>
6626 <span class="entry_type_container">x</span>
6627
6628 <span class="entry_type_array">
6629 n
6630 </span>
6631 <span class="entry_type_visibility"> [public as enumList]</span>
6632
6633
6634 <span class="entry_type_hwlevel">[legacy] </span>
6635
6636
6637 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
6638
6639
6640 </td> <!-- entry_type -->
6641
6642 <td class="entry_description">
6643 <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
6644device.<wbr/></p>
6645 </td>
6646
6647 <td class="entry_units">
6648 </td>
6649
6650 <td class="entry_range">
6651 <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
6652 </td>
6653
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006654 <td class="entry_hal_version">
6655 <p>3.<wbr/>2</p>
6656 </td>
6657
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006658 <td class="entry_tags">
6659 </td>
6660
6661 </tr>
6662 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006663 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006664 </tr>
6665 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006666 <td class="entry_details" colspan="6">
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006667 <p>This list contains control modes that can be set for the camera device.<wbr/>
6668LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
6669devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
6670 </td>
6671 </tr>
6672
6673
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006674 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -08006675 <!-- end of entry -->
6676
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08006677
6678 <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
6679 <td class="entry_name
6680 " rowspan="5">
6681 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
6682 </td>
6683 <td class="entry_type">
6684 <span class="entry_type_name">int32</span>
6685 <span class="entry_type_container">x</span>
6686
6687 <span class="entry_type_array">
6688 2
6689 </span>
6690 <span class="entry_type_visibility"> [public as rangeInt]</span>
6691
6692
6693
6694
6695 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
6696
6697
6698 </td> <!-- entry_type -->
6699
6700 <td class="entry_description">
6701 <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
6702by this camera device.<wbr/></p>
6703 </td>
6704
6705 <td class="entry_units">
6706 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
6707 </td>
6708
6709 <td class="entry_range">
6710 </td>
6711
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006712 <td class="entry_hal_version">
6713 <p>3.<wbr/>2</p>
6714 </td>
6715
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08006716 <td class="entry_tags">
6717 </td>
6718
6719 </tr>
6720 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006721 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08006722 </tr>
6723 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006724 <td class="entry_details" colspan="6">
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08006725 <p>Devices support post RAW sensitivity boost will advertise
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07006726<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controlling
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08006727post RAW sensitivity boost.<wbr/></p>
6728<p>This key will be <code>null</code> for devices that do not support any RAW format
6729outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
6730present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
6731list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
6732 </td>
6733 </tr>
6734
6735 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006736 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08006737 </tr>
6738 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006739 <td class="entry_details" colspan="6">
6740 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
6741framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
6742formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
6743any of RAW output formats.<wbr/></p>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08006744 </td>
6745 </tr>
6746
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08006747 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -08006748 <!-- end of entry -->
6749
Shuzhen Wanga1725492019-07-08 15:03:24 -07006750
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006751 <tr class="entry" id="static_android.control.availableExtendedSceneModeMaxSizes">
Shuzhen Wanga1725492019-07-08 15:03:24 -07006752 <td class="entry_name
6753 " rowspan="5">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006754 android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Max<wbr/>Sizes
Shuzhen Wanga1725492019-07-08 15:03:24 -07006755 </td>
6756 <td class="entry_type">
6757 <span class="entry_type_name">int32</span>
6758 <span class="entry_type_container">x</span>
6759
6760 <span class="entry_type_array">
6761 3 x n
6762 </span>
Shuzhen Wangb6149792019-11-07 15:59:22 -08006763 <span class="entry_type_visibility"> [ndk_public]</span>
Shuzhen Wanga1725492019-07-08 15:03:24 -07006764
6765
6766 <span class="entry_type_hwlevel">[limited] </span>
6767
6768
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006769 <div class="entry_type_notes">List of extended scene modes and the corresponding max streaming sizes.<wbr/></div>
Shuzhen Wanga1725492019-07-08 15:03:24 -07006770
6771
6772 </td> <!-- entry_type -->
6773
6774 <td class="entry_description">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006775 <p>The list of extended scene modes for <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a> that are supported
6776by this camera device,<wbr/> and each extended scene mode's maximum streaming (non-stall) size
6777with effect.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -07006778 </td>
6779
6780 <td class="entry_units">
6781 (mode,<wbr/> width,<wbr/> height)
6782 </td>
6783
6784 <td class="entry_range">
6785 </td>
6786
6787 <td class="entry_hal_version">
6788 <p>3.<wbr/>5</p>
6789 </td>
6790
6791 <td class="entry_tags">
6792 </td>
6793
6794 </tr>
6795 <tr class="entries_header">
6796 <th class="th_details" colspan="6">Details</th>
6797 </tr>
6798 <tr class="entry_cont">
6799 <td class="entry_details" colspan="6">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006800 <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p>
6801<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit
6802under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture
6803intent is PREVIEW,<wbr/> the bokeh effect may not be as high in quality compared to
6804STILL_<wbr/>CAPTURE intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming
6805dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in
6806availableStreamConfigurations,<wbr/> or (0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the
6807application configures a stream larger than the maximum streaming dimension,<wbr/> bokeh
6808effect may not be applied for this stream for PREVIEW intent.<wbr/></p>
6809<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under
6810which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE
6811resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is
6812larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/>
6813If the application configures a stream with larger dimension,<wbr/> the stream may not have
6814bokeh effect applied.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -07006815 </td>
6816 </tr>
6817
6818 <tr class="entries_header">
6819 <th class="th_details" colspan="6">HAL Implementation Details</th>
6820 </tr>
6821 <tr class="entry_cont">
6822 <td class="entry_details" colspan="6">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006823 <p>For available extended scene modes,<wbr/> DISABLED will always be listed.<wbr/></p>
6824<p>HAL must support at list one non-OFF extended scene mode if extendedSceneMode control is
6825available on the camera device.<wbr/> For DISABLED mode,<wbr/> the maximum streaming resolution must
6826be set to (0,<wbr/> 0).<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -07006827 </td>
6828 </tr>
6829
6830 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6831 <!-- end of entry -->
6832
Shuzhen Wangb6149792019-11-07 15:59:22 -08006833
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006834 <tr class="entry" id="static_android.control.availableExtendedSceneModeZoomRatioRanges">
Shuzhen Wangb6149792019-11-07 15:59:22 -08006835 <td class="entry_name
6836 " rowspan="3">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006837 android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Zoom<wbr/>Ratio<wbr/>Ranges
Shuzhen Wangb6149792019-11-07 15:59:22 -08006838 </td>
6839 <td class="entry_type">
6840 <span class="entry_type_name">float</span>
6841 <span class="entry_type_container">x</span>
6842
6843 <span class="entry_type_array">
6844 2 x n
6845 </span>
6846 <span class="entry_type_visibility"> [ndk_public]</span>
6847
6848
6849 <span class="entry_type_hwlevel">[limited] </span>
6850
6851
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006852 <div class="entry_type_notes">Zoom ranges for all supported non-OFF extended scene modes.<wbr/></div>
Shuzhen Wangb6149792019-11-07 15:59:22 -08006853
6854
6855 </td> <!-- entry_type -->
6856
6857 <td class="entry_description">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006858 <p>The ranges of supported zoom ratio for non-DISABLED <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a>.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08006859 </td>
6860
6861 <td class="entry_units">
6862 (minZoom,<wbr/> maxZoom)
6863 </td>
6864
6865 <td class="entry_range">
6866 </td>
6867
6868 <td class="entry_hal_version">
6869 <p>3.<wbr/>5</p>
6870 </td>
6871
6872 <td class="entry_tags">
6873 </td>
6874
6875 </tr>
6876 <tr class="entries_header">
6877 <th class="th_details" colspan="6">Details</th>
6878 </tr>
6879 <tr class="entry_cont">
6880 <td class="entry_details" colspan="6">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006881 <p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios
6882compared to when extended scene mode is DISABLED.<wbr/> This tag lists the zoom ratio ranges
6883for all supported non-DISABLED extended scene modes,<wbr/> in the same order as in
6884android.<wbr/>control.<wbr/>available<wbr/>Extended.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08006885<p>Range [1.<wbr/>0,<wbr/> 1.<wbr/>0] means that no zoom (optical or digital) is supported.<wbr/></p>
6886 </td>
6887 </tr>
6888
6889
6890 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6891 <!-- end of entry -->
6892
6893
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006894 <tr class="entry" id="static_android.control.availableExtendedSceneModeCapabilities">
Shuzhen Wangb6149792019-11-07 15:59:22 -08006895 <td class="entry_name
6896 " rowspan="3">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006897 android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Capabilities
Shuzhen Wangb6149792019-11-07 15:59:22 -08006898 </td>
6899 <td class="entry_type">
6900 <span class="entry_type_name">int32</span>
6901 <span class="entry_type_container">x</span>
6902
6903 <span class="entry_type_array">
6904 n
6905 </span>
6906 <span class="entry_type_visibility"> [public as capability]</span>
6907
6908 <span class="entry_type_synthetic">[synthetic] </span>
6909
6910
6911
6912
6913
6914 </td> <!-- entry_type -->
6915
6916 <td class="entry_description">
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006917 <p>The list of extended scene modes for <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a> that
6918are supported by this camera device,<wbr/> and each extended scene mode's capabilities such
6919as maximum streaming size,<wbr/> and supported zoom ratio ranges.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08006920 </td>
6921
6922 <td class="entry_units">
6923 </td>
6924
6925 <td class="entry_range">
6926 </td>
6927
6928 <td class="entry_hal_version">
6929 <p>3.<wbr/>5</p>
6930 </td>
6931
6932 <td class="entry_tags">
6933 </td>
6934
6935 </tr>
6936 <tr class="entries_header">
6937 <th class="th_details" colspan="6">Details</th>
6938 </tr>
6939 <tr class="entry_cont">
6940 <td class="entry_details" colspan="6">
Jayant Chowdhary3b8234c2020-10-26 16:45:45 -07006941 <p>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p>
Shuzhen Wang327c86e2020-03-16 11:39:27 -07006942<p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit
6943under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture
6944intent is PREVIEW,<wbr/> the bokeh effect may not be as high quality compared to STILL_<wbr/>CAPTURE
6945intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming dimension must
6946be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in availableStreamConfigurations,<wbr/> or
6947(0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the application configures a stream
6948larger than the maximum streaming dimension,<wbr/> bokeh effect may not be applied for this
6949stream for PREVIEW intent.<wbr/></p>
6950<p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under
6951which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE
6952resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is
6953larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/>
6954If the application configures a stream with larger dimension,<wbr/> the stream may not have
6955bokeh effect applied.<wbr/></p>
6956<p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios
6957compared to when the mode is DISABLED.<wbr/> availableExtendedSceneModeCapabilities lists the
6958zoom ranges for all supported extended modes.<wbr/> A range of (1.<wbr/>0,<wbr/> 1.<wbr/>0) means that no zoom
Shuzhen Wangb6149792019-11-07 15:59:22 -08006959(optical or digital) is supported.<wbr/></p>
6960 </td>
6961 </tr>
6962
6963
6964 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6965 <!-- end of entry -->
6966
6967
6968 <tr class="entry" id="static_android.control.zoomRatioRange">
6969 <td class="entry_name
6970 " rowspan="5">
6971 android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range
6972 </td>
6973 <td class="entry_type">
6974 <span class="entry_type_name">float</span>
6975 <span class="entry_type_container">x</span>
6976
6977 <span class="entry_type_array">
6978 2
6979 </span>
6980 <span class="entry_type_visibility"> [public as rangeFloat]</span>
6981
6982
6983 <span class="entry_type_hwlevel">[limited] </span>
6984
6985
6986 <div class="entry_type_notes">The range of zoom ratios that this camera device supports.<wbr/></div>
6987
6988
6989 </td> <!-- entry_type -->
6990
6991 <td class="entry_description">
6992 <p>Minimum and maximum zoom ratios supported by this camera device.<wbr/></p>
6993 </td>
6994
6995 <td class="entry_units">
Shuzhen Wangd36ef432020-03-12 21:36:18 -07006996 A pair of zoom ratio in floating-points: (minZoom,<wbr/> maxZoom)
Shuzhen Wangb6149792019-11-07 15:59:22 -08006997 </td>
6998
6999 <td class="entry_range">
7000 <p>maxZoom &gt;= 1.<wbr/>0 &gt;= minZoom</p>
7001 </td>
7002
7003 <td class="entry_hal_version">
7004 <p>3.<wbr/>5</p>
7005 </td>
7006
7007 <td class="entry_tags">
7008 </td>
7009
7010 </tr>
7011 <tr class="entries_header">
7012 <th class="th_details" colspan="6">Details</th>
7013 </tr>
7014 <tr class="entry_cont">
7015 <td class="entry_details" colspan="6">
7016 <p>If the camera device supports zoom-out from 1x zoom,<wbr/> minZoom will be less than 1.<wbr/>0,<wbr/> and
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -08007017setting <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to values less than 1.<wbr/>0 increases the camera's field
Shuzhen Wangb6149792019-11-07 15:59:22 -08007018of view.<wbr/></p>
7019 </td>
7020 </tr>
7021
7022 <tr class="entries_header">
7023 <th class="th_details" colspan="6">HAL Implementation Details</th>
7024 </tr>
7025 <tr class="entry_cont">
7026 <td class="entry_details" colspan="6">
Shuzhen Wangc8f27902020-08-11 16:46:36 -07007027 <p>When the key is reported,<wbr/> the camera device's <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>
7028must be less than or equal to maxZoom.<wbr/> The camera framework makes sure to always
7029control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> The <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag is only
7030used to do horizontal or vertical cropping (but not both) to achieve aspect ratio
7031different than the camera sensor's native aspect ratio.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08007032<p>For a logical multi-camera device,<wbr/> this key must either be reported for both the logical
7033camera device and all its physical sub-cameras,<wbr/> or none of them.<wbr/></p>
7034<p>When the key is not reported,<wbr/> camera framework derives the application-facing
7035zoomRatioRange to be (1,<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>).<wbr/></p>
7036 </td>
7037 </tr>
7038
7039 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7040 <!-- end of entry -->
7041
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -08007042
7043 <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">
7044 <td class="entry_name
7045 " rowspan="5">
7046 android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
7047 </td>
7048 <td class="entry_type">
7049 <span class="entry_type_name">int32</span>
7050 <span class="entry_type_container">x</span>
7051
7052 <span class="entry_type_array">
7053 5 x n
7054 </span>
7055 <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
7056
7057
7058
7059
7060
7061
7062 </td> <!-- entry_type -->
7063
7064 <td class="entry_description">
7065 <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
7066supported by the camera device,<wbr/> in the format of
7067(width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max),<wbr/>
7068when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
7069<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
7070 </td>
7071
7072 <td class="entry_units">
7073 </td>
7074
7075 <td class="entry_range">
7076 <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
7077 </td>
7078
7079 <td class="entry_hal_version">
7080 <p>3.<wbr/>6</p>
7081 </td>
7082
7083 <td class="entry_tags">
7084 <ul class="entry_tags">
7085 <li><a href="#tag_V1">V1</a></li>
7086 </ul>
7087 </td>
7088
7089 </tr>
7090 <tr class="entries_header">
7091 <th class="th_details" colspan="6">Details</th>
7092 </tr>
7093 <tr class="entry_cont">
7094 <td class="entry_details" colspan="6">
7095 <p>Analogous to <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>,<wbr/> for configurations
7096which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
7097<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
7098 </td>
7099 </tr>
7100
7101 <tr class="entries_header">
7102 <th class="th_details" colspan="6">HAL Implementation Details</th>
7103 </tr>
7104 <tr class="entry_cont">
7105 <td class="entry_details" colspan="6">
7106 <p>Refer to hal details for <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></p>
7107 </td>
7108 </tr>
7109
7110 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7111 <!-- end of entry -->
7112
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007113
7114
7115 <!-- end of kind -->
7116 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007117 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007118
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07007119 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007120 <tr>
7121 <th class="th_name">Property Name</th>
7122 <th class="th_type">Type</th>
7123 <th class="th_description">Description</th>
7124 <th class="th_units">Units</th>
7125 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007126 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007127 <th class="th_tags">Tags</th>
7128 </tr>
7129 </thead>
7130
7131 <tbody>
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142 <tr class="entry" id="dynamic_android.control.aePrecaptureId">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007143 <td class="entry_name
7144 entry_name_deprecated
7145 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08007146 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08007147 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007148 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08007149 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007150
Igor Murashkin6c936c12014-05-13 14:51:49 -07007151 <span class="entry_type_visibility"> [system]</span>
7152
7153
Igor Murashkinca256272014-10-02 15:27:09 -07007154
Igor Murashkin6c936c12014-05-13 14:51:49 -07007155 <span class="entry_type_deprecated">[deprecated] </span>
7156
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007157
7158
7159 </td> <!-- entry_type -->
7160
7161 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -08007162 <p>The ID sent with the latest
7163CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007164 </td>
7165
7166 <td class="entry_units">
7167 </td>
7168
7169 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007170 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007171 </td>
7172
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007173 <td class="entry_hal_version">
7174 <p>3.<wbr/>2</p>
7175 </td>
7176
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08007177 <td class="entry_tags">
7178 </td>
7179
7180 </tr>
7181 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007182 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08007183 </tr>
7184 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007185 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -08007186 <p>Must be 0 if no
7187CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
7188by HAL.<wbr/> Always updated even if AE algorithm ignores the
7189trigger</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007190 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08007191 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08007192
7193
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007194 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08007195 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007196
7197
Zhijun He602d3702014-05-02 17:38:15 -07007198 <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007199 <td class="entry_name
7200 " rowspan="5">
Zhijun He602d3702014-05-02 17:38:15 -07007201 android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
7202 </td>
7203 <td class="entry_type">
7204 <span class="entry_type_name entry_type_name_enum">byte</span>
7205
7206 <span class="entry_type_visibility"> [public]</span>
7207
Igor Murashkin6c936c12014-05-13 14:51:49 -07007208
Igor Murashkinca256272014-10-02 15:27:09 -07007209 <span class="entry_type_hwlevel">[legacy] </span>
7210
Igor Murashkin6c936c12014-05-13 14:51:49 -07007211
7212
Zhijun He602d3702014-05-02 17:38:15 -07007213 <ul class="entry_type_enum">
7214 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007215 <span class="entry_type_enum_name">OFF (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07007216 <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
7217avoid banding problems.<wbr/></p></span>
7218 </li>
7219 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007220 <span class="entry_type_enum_name">50HZ (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07007221 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
7222avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
7223 </li>
7224 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007225 <span class="entry_type_enum_name">60HZ (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07007226 <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
7227avoid banding problems with 60Hz illumination
7228sources.<wbr/></p></span>
7229 </li>
7230 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007231 <span class="entry_type_enum_name">AUTO (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07007232 <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
7233antibanding routine to the current illumination
Yin-Chia Yeh9d1b4522014-11-25 11:51:48 -08007234condition.<wbr/> This is the default mode if AUTO is
7235available on given camera device.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -07007236 </li>
7237 </ul>
7238
7239 </td> <!-- entry_type -->
7240
7241 <td class="entry_description">
7242 <p>The desired setting for the camera device's auto-exposure
7243algorithm's antibanding compensation.<wbr/></p>
7244 </td>
7245
7246 <td class="entry_units">
7247 </td>
7248
7249 <td class="entry_range">
7250 <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
7251 </td>
7252
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007253 <td class="entry_hal_version">
7254 <p>3.<wbr/>2</p>
7255 </td>
7256
Zhijun He602d3702014-05-02 17:38:15 -07007257 <td class="entry_tags">
7258 <ul class="entry_tags">
7259 <li><a href="#tag_BC">BC</a></li>
7260 </ul>
7261 </td>
7262
7263 </tr>
7264 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007265 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07007266 </tr>
7267 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007268 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -07007269 <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
7270lights,<wbr/> flicker at the rate of the power supply frequency
7271(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
7272typically not noticeable to a person,<wbr/> it can be visible to
7273a camera device.<wbr/> If a camera sets its exposure time to the
7274wrong value,<wbr/> the flicker may become visible in the
7275viewfinder as flicker or in a final captured image,<wbr/> as a
7276set of variable-brightness bands across the image.<wbr/></p>
7277<p>Therefore,<wbr/> the auto-exposure routines of camera devices
7278include antibanding routines that ensure that the chosen
7279exposure value will not cause such banding.<wbr/> The choice of
7280exposure time depends on the rate of flicker,<wbr/> which the
7281camera device can detect automatically,<wbr/> or the expected
7282rate can be selected by the application using this
7283control.<wbr/></p>
7284<p>A given camera device may not support all of the possible
7285options for the antibanding mode.<wbr/> The
7286<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
7287the available modes for a given camera device.<wbr/></p>
Yin-Chia Yeh9d1b4522014-11-25 11:51:48 -08007288<p>AUTO mode is the default if it is available on given
7289camera device.<wbr/> When AUTO mode is not available,<wbr/> the
7290default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
7291and 60HZ will be available.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07007292<p>If manual exposure control is enabled (by setting
7293<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/>
7294then this setting has no effect,<wbr/> and the application must
7295ensure it selects exposure times that do not cause banding
7296issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
7297the application in this.<wbr/></p>
7298 </td>
7299 </tr>
7300
7301 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007302 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07007303 </tr>
7304 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007305 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -07007306 <p>For all capture request templates,<wbr/> this field must be set
Yin-Chia Yeh9d1b4522014-11-25 11:51:48 -08007307to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
7308the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
730960HZ must be available.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07007310<p>If manual exposure control is enabled (by setting
7311<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/>
7312then the exposure values provided by the application must not be
7313adjusted for antibanding.<wbr/></p>
7314 </td>
7315 </tr>
7316
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007317 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -07007318 <!-- end of entry -->
7319
7320
7321 <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007322 <td class="entry_name
7323 " rowspan="3">
Zhijun He602d3702014-05-02 17:38:15 -07007324 android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
7325 </td>
7326 <td class="entry_type">
7327 <span class="entry_type_name">int32</span>
7328
7329 <span class="entry_type_visibility"> [public]</span>
7330
7331
Igor Murashkinca256272014-10-02 15:27:09 -07007332 <span class="entry_type_hwlevel">[legacy] </span>
7333
Igor Murashkin6c936c12014-05-13 14:51:49 -07007334
7335
7336
Zhijun He602d3702014-05-02 17:38:15 -07007337 </td> <!-- entry_type -->
7338
7339 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07007340 <p>Adjustment to auto-exposure (AE) target image
7341brightness.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07007342 </td>
7343
7344 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007345 Compensation steps
Zhijun He602d3702014-05-02 17:38:15 -07007346 </td>
7347
7348 <td class="entry_range">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07007349 <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
Zhijun He602d3702014-05-02 17:38:15 -07007350 </td>
7351
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007352 <td class="entry_hal_version">
7353 <p>3.<wbr/>2</p>
7354 </td>
7355
Zhijun He602d3702014-05-02 17:38:15 -07007356 <td class="entry_tags">
7357 <ul class="entry_tags">
7358 <li><a href="#tag_BC">BC</a></li>
7359 </ul>
7360 </td>
7361
7362 </tr>
7363 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007364 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07007365 </tr>
7366 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007367 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07007368 <p>The adjustment is measured as a count of steps,<wbr/> with the
7369step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
7370allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
7371<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
7372will mean an exposure compensation of +2 EV; -3 will mean an
7373exposure compensation of -1 EV.<wbr/> One EV represents a doubling
7374of image brightness.<wbr/> Note that this control will only be
7375effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
7376will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
Yin-Chia Yeh7754e6a2014-05-05 14:26:03 -07007377<p>In the event of exposure compensation value being changed,<wbr/> camera device
7378may take several frames to reach the newly requested exposure target.<wbr/>
Igor Murashkin6c936c12014-05-13 14:51:49 -07007379During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
Yin-Chia Yeh7754e6a2014-05-05 14:26:03 -07007380state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
7381change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
Igor Murashkin6c936c12014-05-13 14:51:49 -07007382FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07007383 </td>
7384 </tr>
7385
7386
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007387 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -07007388 <!-- end of entry -->
7389
7390
7391 <tr class="entry" id="dynamic_android.control.aeLock">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007392 <td class="entry_name
7393 " rowspan="3">
Zhijun He602d3702014-05-02 17:38:15 -07007394 android.<wbr/>control.<wbr/>ae<wbr/>Lock
7395 </td>
7396 <td class="entry_type">
7397 <span class="entry_type_name entry_type_name_enum">byte</span>
7398
7399 <span class="entry_type_visibility"> [public as boolean]</span>
7400
Igor Murashkin6c936c12014-05-13 14:51:49 -07007401
Igor Murashkinca256272014-10-02 15:27:09 -07007402 <span class="entry_type_hwlevel">[legacy] </span>
7403
Igor Murashkin6c936c12014-05-13 14:51:49 -07007404
7405
Zhijun He602d3702014-05-02 17:38:15 -07007406 <ul class="entry_type_enum">
7407 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007408 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007409 <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
Zhijun He602d3702014-05-02 17:38:15 -07007410is free to update its parameters.<wbr/></p></span>
7411 </li>
7412 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007413 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007414 <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
Zhijun He602d3702014-05-02 17:38:15 -07007415must not update the exposure and sensitivity parameters
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007416while the lock is active.<wbr/></p>
7417<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
Igor Murashkinca256272014-10-02 15:27:09 -07007418will still take effect while auto-exposure is locked.<wbr/></p>
7419<p>Some rare LEGACY devices may not support
7420this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -07007421 </li>
7422 </ul>
7423
7424 </td> <!-- entry_type -->
7425
7426 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07007427 <p>Whether auto-exposure (AE) is currently locked to its latest
Zhijun He602d3702014-05-02 17:38:15 -07007428calculated values.<wbr/></p>
7429 </td>
7430
7431 <td class="entry_units">
7432 </td>
7433
7434 <td class="entry_range">
7435 </td>
7436
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007437 <td class="entry_hal_version">
7438 <p>3.<wbr/>2</p>
7439 </td>
7440
Zhijun He602d3702014-05-02 17:38:15 -07007441 <td class="entry_tags">
7442 <ul class="entry_tags">
7443 <li><a href="#tag_BC">BC</a></li>
7444 </ul>
7445 </td>
7446
7447 </tr>
7448 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007449 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07007450 </tr>
7451 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007452 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007453 <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
7454and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7455<p>Note that even when AE is locked,<wbr/> the flash may be fired if
7456the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
7457ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
Yin-Chia Yeh7754e6a2014-05-05 14:26:03 -07007458<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
7459is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07007460<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
7461when AE is already locked,<wbr/> the camera device will not change the exposure time
7462(<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>)
7463parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
7464is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
Zhijun Hee7cd5562015-02-05 14:32:57 -08007465<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/>
7466Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
7467<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
7468the AE if AE is locked by the camera device internally during precapture metering
7469sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
7470ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
7471will never succeed in a sequence of preview requests where AE lock is always set
7472to <code>false</code>.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007473<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7474get locked do not necessarily correspond to the settings that were present in the
7475latest capture result received from the camera device,<wbr/> since additional captures
7476and AE updates may have occurred even before the result was sent out.<wbr/> If an
7477application is switching between automatic and manual control and wishes to eliminate
7478any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7479<ol>
7480<li>Starting in auto-AE mode:</li>
7481<li>Lock AE</li>
7482<li>Wait for the first result to be output that has the AE locked</li>
7483<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
7484<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
7485</ol>
Zhijun He602d3702014-05-02 17:38:15 -07007486<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>
7487 </td>
7488 </tr>
7489
7490
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007491 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -07007492 <!-- end of entry -->
7493
7494
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007495 <tr class="entry" id="dynamic_android.control.aeMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007496 <td class="entry_name
7497 " rowspan="3">
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007498 android.<wbr/>control.<wbr/>ae<wbr/>Mode
7499 </td>
7500 <td class="entry_type">
7501 <span class="entry_type_name entry_type_name_enum">byte</span>
7502
7503 <span class="entry_type_visibility"> [public]</span>
7504
Igor Murashkin6c936c12014-05-13 14:51:49 -07007505
Igor Murashkinca256272014-10-02 15:27:09 -07007506 <span class="entry_type_hwlevel">[legacy] </span>
7507
Igor Murashkin6c936c12014-05-13 14:51:49 -07007508
7509
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007510 <ul class="entry_type_enum">
7511 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007512 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007513 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
7514<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
Igor Murashkina10351a2014-01-15 17:05:22 -08007515<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
7516<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
7517device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
Igor Murashkinca256272014-10-02 15:27:09 -07007518a flash unit for this camera device.<wbr/></p>
Yin-Chia Yeh668e43c2014-11-12 11:38:10 -08007519<p>Note that auto-white balance (AWB) and auto-focus (AF)
7520behavior is device dependent when AE is in OFF mode.<wbr/>
7521To have consistent behavior across different devices,<wbr/>
7522it is recommended to either set AWB and AF to OFF mode
7523or lock AWB and AF before setting AE to OFF.<wbr/>
7524See <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/>
7525<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>
7526for more details.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -07007527<p>LEGACY devices do not support the OFF mode and will
7528override attempts to use this value to ON.<wbr/></p></span>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007529 </li>
7530 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007531 <span class="entry_type_enum_name">ON (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08007532 <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007533with no flash control.<wbr/></p>
7534<p>The application's values for
Igor Murashkina10351a2014-01-15 17:05:22 -08007535<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
7536<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
7537<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
7538application has control over the various
7539android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007540 </li>
7541 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007542 <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08007543 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
7544the camera's flash unit,<wbr/> firing it in low-light
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007545conditions.<wbr/></p>
7546<p>The flash may be fired during a precapture sequence
7547(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
7548may be fired for captures for which the
Igor Murashkina10351a2014-01-15 17:05:22 -08007549<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
7550STILL_<wbr/>CAPTURE</p></span>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007551 </li>
7552 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007553 <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08007554 <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
7555the camera's flash unit,<wbr/> always firing it for still
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007556captures.<wbr/></p>
7557<p>The flash may be fired during a precapture sequence
7558(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
7559will always be fired for captures for which the
Igor Murashkina10351a2014-01-15 17:05:22 -08007560<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
7561STILL_<wbr/>CAPTURE</p></span>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007562 </li>
7563 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007564 <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08007565 <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007566reduction.<wbr/></p>
7567<p>If deemed necessary by the camera device,<wbr/> a red eye
7568reduction flash will fire during the precapture
7569sequence.<wbr/></p></span>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007570 </li>
Chien-Yu Chen11f62a52018-01-11 11:32:52 -08007571 <li>
7572 <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
7573 <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
7574<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
7575metering (and continuous focus if active) should be quickly recaculated to account
7576for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
7577<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
7578other available AE modes.<wbr/></p>
Chien-Yu Chen06513f12018-03-15 11:17:20 -07007579<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
7580be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
Chien-Yu Chen11f62a52018-01-11 11:32:52 -08007581flash.<wbr/></p></span>
7582 </li>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007583 </ul>
7584
7585 </td> <!-- entry_type -->
7586
7587 <td class="entry_description">
7588 <p>The desired mode for the camera device's
7589auto-exposure routine.<wbr/></p>
7590 </td>
7591
7592 <td class="entry_units">
7593 </td>
7594
7595 <td class="entry_range">
7596 <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
7597 </td>
7598
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007599 <td class="entry_hal_version">
7600 <p>3.<wbr/>2</p>
7601 </td>
7602
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007603 <td class="entry_tags">
7604 <ul class="entry_tags">
7605 <li><a href="#tag_BC">BC</a></li>
7606 </ul>
7607 </td>
7608
7609 </tr>
7610 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007611 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007612 </tr>
7613 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007614 <td class="entry_details" colspan="6">
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007615 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
7616AUTO.<wbr/></p>
7617<p>When set to any of the ON modes,<wbr/> the camera device's
7618auto-exposure routine is enabled,<wbr/> overriding the
7619application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
7620and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
7621<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
7622<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
7623is selected,<wbr/> the camera device's flash unit controls are
7624also overridden.<wbr/></p>
7625<p>The FLASH modes are only available if the camera device
7626has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
7627<p>If flash TORCH mode is desired,<wbr/> this field must be set to
7628ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
7629<p>When set to any of the ON modes,<wbr/> the values chosen by the
7630camera device auto-exposure routine for the overridden
7631fields for a given capture will be available in its
7632CaptureResult.<wbr/></p>
7633 </td>
7634 </tr>
7635
7636
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007637 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08007638 <!-- end of entry -->
7639
7640
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007641 <tr class="entry" id="dynamic_android.control.aeRegions">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007642 <td class="entry_name
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07007643 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08007644 android.<wbr/>control.<wbr/>ae<wbr/>Regions
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08007645 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007646 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08007647 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007648 <span class="entry_type_container">x</span>
7649
7650 <span class="entry_type_array">
7651 5 x area_count
7652 </span>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07007653 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007654
7655
Igor Murashkin6c936c12014-05-13 14:51:49 -07007656
7657
7658
Igor Murashkinca256272014-10-02 15:27:09 -07007659
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007660 </td> <!-- entry_type -->
7661
7662 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007663 <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007664 </td>
7665
7666 <td class="entry_units">
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07007667 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
7668 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
7669 distortion correction capability and mode
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007670 </td>
7671
7672 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007673 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07007674<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
7675depending on distortion correction capability and mode</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007676 </td>
7677
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007678 <td class="entry_hal_version">
7679 <p>3.<wbr/>2</p>
7680 </td>
7681
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08007682 <td class="entry_tags">
7683 <ul class="entry_tags">
7684 <li><a href="#tag_BC">BC</a></li>
7685 </ul>
7686 </td>
7687
7688 </tr>
7689 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007690 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08007691 </tr>
7692 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007693 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007694 <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
Yin-Chia Yeh8554ed52014-09-04 09:33:34 -07007695Otherwise will always be present.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007696<p>The maximum number of regions supported by the device is determined by the value
7697of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07007698<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
7699system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
7700the top-left pixel in the active pixel array,<wbr/> and
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08007701(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07007702<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
7703active pixel array.<wbr/></p>
7704<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
7705system depends on the mode being set.<wbr/>
7706When the distortion correction mode is OFF,<wbr/> the coordinate system follows
7707<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
7708<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
7709(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7710<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
7711pixel in the pre-correction active pixel array.<wbr/>
7712When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
7713<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
7714<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
7715(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7716<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
7717active pixel array.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007718<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
Yin-Chia Yehdc182572014-05-14 14:05:20 -07007719for every pixel in the area.<wbr/> This means that a large metering area
7720with the same weight as a smaller area will have more effect in
7721the metering result.<wbr/> Metering areas can partially overlap and the
7722camera device will add the weights in the overlap region.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007723<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
7724region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
7725weight is ignored.<wbr/></p>
7726<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7727camera device.<wbr/></p>
7728<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
7729capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7730region and output only the intersection rectangle as the metering region in the result
7731metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7732not reported in the result metadata.<wbr/></p>
Shuzhen Wangfc392322022-03-28 12:41:41 -07007733<p>When setting the AE metering regions,<wbr/> the application must consider the additional
7734crop resulted from the aspect ratio differences between the preview stream and
7735<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
7736active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
7737the boundary of AE regions will be [0,<wbr/> y_<wbr/>crop] and
7738[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
7739[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
7740mismatch.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08007741<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
7742preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
7743pre-zoom field of view.<wbr/> This means that the same aeRegions values at different
7744<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions
7745coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
7746zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
7747aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
7748scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
7749activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
7750mode.<wbr/></p>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -08007751<p>For camera devices with the
7752<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
7753capability,<wbr/>
7754<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
7755<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
7756coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
7757<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007758 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08007759 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08007760
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07007761 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007762 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07007763 </tr>
7764 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007765 <td class="entry_details" colspan="6">
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07007766 <p>The HAL level representation of MeteringRectangle[] is a
7767int[5 * area_<wbr/>count].<wbr/>
7768Every five elements represent a metering region of
7769(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7770The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07007771exclusive on xmax and ymax.<wbr/>
7772HAL must always report metering regions in the coordinate system of pre-correction
7773active array.<wbr/></p>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07007774 </td>
7775 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08007776
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007777 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08007778 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007779
7780
Zhijun He602d3702014-05-02 17:38:15 -07007781 <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007782 <td class="entry_name
7783 " rowspan="3">
Zhijun He602d3702014-05-02 17:38:15 -07007784 android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
7785 </td>
7786 <td class="entry_type">
7787 <span class="entry_type_name">int32</span>
7788 <span class="entry_type_container">x</span>
7789
7790 <span class="entry_type_array">
7791 2
7792 </span>
Igor Murashkin35a108f2014-05-27 10:51:25 -07007793 <span class="entry_type_visibility"> [public as rangeInt]</span>
Zhijun He602d3702014-05-02 17:38:15 -07007794
7795
Igor Murashkinca256272014-10-02 15:27:09 -07007796 <span class="entry_type_hwlevel">[legacy] </span>
7797
Igor Murashkin6c936c12014-05-13 14:51:49 -07007798
7799
7800
Zhijun He602d3702014-05-02 17:38:15 -07007801 </td> <!-- entry_type -->
7802
7803 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007804 <p>Range over which the auto-exposure routine can
7805adjust the capture frame rate to maintain good
7806exposure.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07007807 </td>
7808
7809 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007810 Frames per second (FPS)
Zhijun He602d3702014-05-02 17:38:15 -07007811 </td>
7812
7813 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007814 <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>
Zhijun He602d3702014-05-02 17:38:15 -07007815 </td>
7816
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007817 <td class="entry_hal_version">
7818 <p>3.<wbr/>2</p>
7819 </td>
7820
Zhijun He602d3702014-05-02 17:38:15 -07007821 <td class="entry_tags">
7822 <ul class="entry_tags">
7823 <li><a href="#tag_BC">BC</a></li>
7824 </ul>
7825 </td>
7826
7827 </tr>
7828 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007829 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07007830 </tr>
7831 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007832 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07007833 <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007834manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
7835<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07007836 </td>
7837 </tr>
7838
7839
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007840 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -07007841 <!-- end of entry -->
7842
7843
7844 <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007845 <td class="entry_name
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07007846 " rowspan="5">
Zhijun He602d3702014-05-02 17:38:15 -07007847 android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
7848 </td>
7849 <td class="entry_type">
7850 <span class="entry_type_name entry_type_name_enum">byte</span>
7851
7852 <span class="entry_type_visibility"> [public]</span>
7853
Igor Murashkin6c936c12014-05-13 14:51:49 -07007854
Igor Murashkinca256272014-10-02 15:27:09 -07007855 <span class="entry_type_hwlevel">[limited] </span>
7856
Igor Murashkin6c936c12014-05-13 14:51:49 -07007857
7858
Zhijun He602d3702014-05-02 17:38:15 -07007859 <ul class="entry_type_enum">
7860 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007861 <span class="entry_type_enum_name">IDLE (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07007862 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7863 </li>
7864 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007865 <span class="entry_type_enum_name">START (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07007866 <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007867by the camera device.<wbr/></p>
7868<p>The exact effect of the precapture trigger depends on
7869the current AE mode and state.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -07007870 </li>
Zhijun Hee7cd5562015-02-05 14:32:57 -08007871 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007872 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
Zhijun Hee7cd5562015-02-05 14:32:57 -08007873 <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
7874precapture metering sequence,<wbr/> the auto-exposure routine will return to its
7875initial state.<wbr/></p></span>
7876 </li>
Zhijun He602d3702014-05-02 17:38:15 -07007877 </ul>
7878
7879 </td> <!-- entry_type -->
7880
7881 <td class="entry_description">
7882 <p>Whether the camera device will trigger a precapture
7883metering sequence when it processes this request.<wbr/></p>
7884 </td>
7885
7886 <td class="entry_units">
7887 </td>
7888
7889 <td class="entry_range">
7890 </td>
7891
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007892 <td class="entry_hal_version">
7893 <p>3.<wbr/>2</p>
7894 </td>
7895
Zhijun He602d3702014-05-02 17:38:15 -07007896 <td class="entry_tags">
7897 <ul class="entry_tags">
7898 <li><a href="#tag_BC">BC</a></li>
7899 </ul>
7900 </td>
7901
7902 </tr>
7903 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007904 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07007905 </tr>
7906 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007907 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -07007908 <p>This entry is normally set to IDLE,<wbr/> or is not
7909included at all in the request settings.<wbr/> When included and
Zhijun Hecad66192015-02-06 13:42:40 -08007910set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
Zhijun He602d3702014-05-02 17:38:15 -07007911precapture metering sequence.<wbr/></p>
Zhijun Hee7cd5562015-02-05 14:32:57 -08007912<p>When set to CANCEL,<wbr/> the camera device will cancel any active
7913precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
7914If a precapture metering sequence is already completed,<wbr/> and the camera
7915device has implicitly locked the AE for subsequent still capture,<wbr/> the
7916CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
Zhijun Hecad66192015-02-06 13:42:40 -08007917<p>The precapture sequence should be triggered before starting a
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007918high-quality still capture for final metering decisions to
7919be made,<wbr/> and for firing pre-capture flash pulses to estimate
7920scene brightness and required final capture flash power,<wbr/> when
7921the flash is enabled.<wbr/></p>
7922<p>Normally,<wbr/> this entry should be set to START for only a
7923single request,<wbr/> and the application should wait until the
7924sequence completes before starting a new one.<wbr/></p>
Zhijun Hecad66192015-02-06 13:42:40 -08007925<p>When a precapture metering sequence is finished,<wbr/> the camera device
7926may lock the auto-exposure routine internally to be able to accurately expose the
7927subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
7928For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
7929submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
7930submit 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
7931with <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
Zhijun Hee7cd5562015-02-05 14:32:57 -08007932still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
7933API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
7934internally locked AE if the application doesn't submit a still capture request after
7935the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
7936be used in devices that have earlier API levels.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007937<p>The exact effect of auto-exposure (AE) precapture trigger
7938depends on the current AE mode and state; see
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07007939<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
7940details.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07007941<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
7942capturing a high-resolution JPEG image will automatically trigger a
7943precapture sequence before the high-resolution capture,<wbr/> including
7944potentially firing a pre-capture flash.<wbr/></p>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07007945<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
7946simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7947the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7948focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7949trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7950changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
7951example.<wbr/></p>
7952<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
7953the camera device will complete them in the optimal order for that device.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07007954 </td>
7955 </tr>
7956
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07007957 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007958 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07007959 </tr>
7960 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007961 <td class="entry_details" colspan="6">
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07007962 <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
7963(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
7964treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7965AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7966to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7967 </td>
7968 </tr>
Zhijun He602d3702014-05-02 17:38:15 -07007969
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08007970 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -07007971 <!-- end of entry -->
7972
7973
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007974 <tr class="entry" id="dynamic_android.control.aeState">
Igor Murashkin6c936c12014-05-13 14:51:49 -07007975 <td class="entry_name
7976 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08007977 android.<wbr/>control.<wbr/>ae<wbr/>State
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08007978 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007979 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08007980 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007981
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07007982 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007983
Igor Murashkin6c936c12014-05-13 14:51:49 -07007984
Igor Murashkinca256272014-10-02 15:27:09 -07007985 <span class="entry_type_hwlevel">[limited] </span>
7986
Igor Murashkin6c936c12014-05-13 14:51:49 -07007987
7988
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007989 <ul class="entry_type_enum">
7990 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007991 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07007992 <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
7993<p>When a camera device is opened,<wbr/> it starts in
Zhijun He3fc95122014-02-11 17:18:29 -08007994this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
7995this state in capture result.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08007996 </li>
7997 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08007998 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08007999 <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008000for the current scene.<wbr/></p>
8001<p>This is a transient state,<wbr/> the camera device may skip
Zhijun He3fc95122014-02-11 17:18:29 -08008002reporting this state in capture result.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008003 </li>
8004 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008005 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08008006 <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
Zhijun He92e698d2014-01-13 16:24:31 -08008007current scene.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008008 </li>
8009 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008010 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
Zhijun He92e698d2014-01-13 16:24:31 -08008011 <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008012 </li>
8013 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008014 <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08008015 <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
8016needs to be fired for good quality still
Zhijun He92e698d2014-01-13 16:24:31 -08008017capture.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008018 </li>
8019 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008020 <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08008021 <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008022and is currently executing it.<wbr/></p>
8023<p>Precapture can be triggered through setting
Zhijun Hee7cd5562015-02-05 14:32:57 -08008024<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
8025active and completed (if it causes camera device internal AE lock) precapture
8026metering sequence can be canceled through setting
8027<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008028<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
8029or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
8030state,<wbr/> the camera device may skip reporting this state in
8031capture result.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008032 </li>
8033 </ul>
8034
8035 </td> <!-- entry_type -->
8036
8037 <td class="entry_description">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008038 <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008039 </td>
8040
8041 <td class="entry_units">
8042 </td>
8043
8044 <td class="entry_range">
8045 </td>
8046
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008047 <td class="entry_hal_version">
8048 <p>3.<wbr/>2</p>
8049 </td>
8050
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008051 <td class="entry_tags">
8052 </td>
8053
8054 </tr>
8055 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008056 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008057 </tr>
8058 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008059 <td class="entry_details" colspan="6">
Zhijun He92e698d2014-01-13 16:24:31 -08008060 <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
8061resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8062or <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
8063the algorithm states to INACTIVE.<wbr/></p>
8064<p>The camera device can do several state transitions between two results,<wbr/> if it is
8065allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
8066seen in a result.<wbr/></p>
8067<p>The state in the result is the state for this image (in sync with this image): if
8068AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
8069be good to use.<wbr/></p>
8070<p>Below are state transition tables for different AE modes.<wbr/></p>
8071<table>
8072<thead>
8073<tr>
8074<th align="center">State</th>
8075<th align="center">Transition Cause</th>
8076<th align="center">New State</th>
8077<th align="center">Notes</th>
8078</tr>
8079</thead>
8080<tbody>
8081<tr>
8082<td align="center">INACTIVE</td>
8083<td align="center"></td>
8084<td align="center">INACTIVE</td>
8085<td align="center">Camera device auto exposure algorithm is disabled</td>
8086</tr>
8087</tbody>
8088</table>
Chien-Yu Chen11f62a52018-01-11 11:32:52 -08008089<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
Zhijun He92e698d2014-01-13 16:24:31 -08008090<table>
8091<thead>
8092<tr>
8093<th align="center">State</th>
8094<th align="center">Transition Cause</th>
8095<th align="center">New State</th>
8096<th align="center">Notes</th>
8097</tr>
8098</thead>
8099<tbody>
8100<tr>
8101<td align="center">INACTIVE</td>
8102<td align="center">Camera device initiates AE scan</td>
8103<td align="center">SEARCHING</td>
8104<td align="center">Values changing</td>
8105</tr>
8106<tr>
8107<td align="center">INACTIVE</td>
8108<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8109<td align="center">LOCKED</td>
8110<td align="center">Values locked</td>
8111</tr>
8112<tr>
8113<td align="center">SEARCHING</td>
8114<td align="center">Camera device finishes AE scan</td>
8115<td align="center">CONVERGED</td>
8116<td align="center">Good values,<wbr/> not changing</td>
8117</tr>
8118<tr>
8119<td align="center">SEARCHING</td>
8120<td align="center">Camera device finishes AE scan</td>
8121<td align="center">FLASH_<wbr/>REQUIRED</td>
8122<td align="center">Converged but too dark w/<wbr/>o flash</td>
8123</tr>
8124<tr>
8125<td align="center">SEARCHING</td>
8126<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8127<td align="center">LOCKED</td>
8128<td align="center">Values locked</td>
8129</tr>
8130<tr>
8131<td align="center">CONVERGED</td>
8132<td align="center">Camera device initiates AE scan</td>
8133<td align="center">SEARCHING</td>
8134<td align="center">Values changing</td>
8135</tr>
8136<tr>
8137<td align="center">CONVERGED</td>
8138<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8139<td align="center">LOCKED</td>
8140<td align="center">Values locked</td>
8141</tr>
8142<tr>
8143<td align="center">FLASH_<wbr/>REQUIRED</td>
8144<td align="center">Camera device initiates AE scan</td>
8145<td align="center">SEARCHING</td>
8146<td align="center">Values changing</td>
8147</tr>
8148<tr>
8149<td align="center">FLASH_<wbr/>REQUIRED</td>
8150<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8151<td align="center">LOCKED</td>
8152<td align="center">Values locked</td>
8153</tr>
8154<tr>
8155<td align="center">LOCKED</td>
8156<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
8157<td align="center">SEARCHING</td>
8158<td align="center">Values not good after unlock</td>
8159</tr>
8160<tr>
8161<td align="center">LOCKED</td>
8162<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
8163<td align="center">CONVERGED</td>
8164<td align="center">Values good after unlock</td>
8165</tr>
8166<tr>
8167<td align="center">LOCKED</td>
8168<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
8169<td align="center">FLASH_<wbr/>REQUIRED</td>
8170<td align="center">Exposure good,<wbr/> but too dark</td>
8171</tr>
8172<tr>
8173<td align="center">PRECAPTURE</td>
8174<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
8175<td align="center">CONVERGED</td>
8176<td align="center">Ready for high-quality capture</td>
8177</tr>
8178<tr>
8179<td align="center">PRECAPTURE</td>
8180<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
8181<td align="center">LOCKED</td>
8182<td align="center">Ready for high-quality capture</td>
8183</tr>
8184<tr>
Zhijun Hee7cd5562015-02-05 14:32:57 -08008185<td align="center">LOCKED</td>
8186<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
8187<td align="center">LOCKED</td>
8188<td align="center">Precapture trigger is ignored when AE is already locked</td>
8189</tr>
8190<tr>
8191<td align="center">LOCKED</td>
8192<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
8193<td align="center">LOCKED</td>
8194<td align="center">Precapture trigger is ignored when AE is already locked</td>
8195</tr>
8196<tr>
8197<td align="center">Any state (excluding LOCKED)</td>
Zhijun He92e698d2014-01-13 16:24:31 -08008198<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
8199<td align="center">PRECAPTURE</td>
8200<td align="center">Start AE precapture metering sequence</td>
8201</tr>
Zhijun Hee7cd5562015-02-05 14:32:57 -08008202<tr>
8203<td align="center">Any state (excluding LOCKED)</td>
8204<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
8205<td align="center">INACTIVE</td>
8206<td align="center">Currently active precapture metering sequence is canceled</td>
8207</tr>
Zhijun He92e698d2014-01-13 16:24:31 -08008208</tbody>
8209</table>
Chien-Yu Chen11f62a52018-01-11 11:32:52 -08008210<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
Chien-Yu Chen06513f12018-03-15 11:17:20 -07008211<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
8212the camera device finishes AE scan and it's too dark without flash.<wbr/></p>
Zhijun He3fc95122014-02-11 17:18:29 -08008213<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8214without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8215can be skipped in that manner is called a transient state.<wbr/></p>
Chien-Yu Chen11f62a52018-01-11 11:32:52 -08008216<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
Zhijun He3fc95122014-02-11 17:18:29 -08008217listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8218transient states between two results.<wbr/> See below table for examples:</p>
8219<table>
8220<thead>
8221<tr>
8222<th align="center">State</th>
8223<th align="center">Transition Cause</th>
8224<th align="center">New State</th>
8225<th align="center">Notes</th>
8226</tr>
8227</thead>
8228<tbody>
8229<tr>
8230<td align="center">INACTIVE</td>
8231<td align="center">Camera device finished AE scan</td>
8232<td align="center">CONVERGED</td>
8233<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8234</tr>
8235<tr>
Zhijun Hee7cd5562015-02-05 14:32:57 -08008236<td align="center">Any state (excluding LOCKED)</td>
Zhijun He3fc95122014-02-11 17:18:29 -08008237<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>
8238<td align="center">FLASH_<wbr/>REQUIRED</td>
8239<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>
8240</tr>
8241<tr>
Zhijun Hee7cd5562015-02-05 14:32:57 -08008242<td align="center">Any state (excluding LOCKED)</td>
Zhijun He3fc95122014-02-11 17:18:29 -08008243<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>
8244<td align="center">CONVERGED</td>
8245<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
8246</tr>
8247<tr>
Zhijun Hee7cd5562015-02-05 14:32:57 -08008248<td align="center">Any state (excluding LOCKED)</td>
8249<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
8250<td align="center">FLASH_<wbr/>REQUIRED</td>
8251<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>
8252</tr>
8253<tr>
8254<td align="center">Any state (excluding LOCKED)</td>
8255<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
8256<td align="center">CONVERGED</td>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07008257<td align="center">Converged after a precapture sequences canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
Zhijun Hee7cd5562015-02-05 14:32:57 -08008258</tr>
8259<tr>
Zhijun He3fc95122014-02-11 17:18:29 -08008260<td align="center">CONVERGED</td>
8261<td align="center">Camera device finished AE scan</td>
8262<td align="center">FLASH_<wbr/>REQUIRED</td>
8263<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>
8264</tr>
8265<tr>
8266<td align="center">FLASH_<wbr/>REQUIRED</td>
8267<td align="center">Camera device finished AE scan</td>
8268<td align="center">CONVERGED</td>
8269<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
8270</tr>
8271</tbody>
8272</table>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008273 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008274 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08008275
8276
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008277 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008278 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008279
8280
8281 <tr class="entry" id="dynamic_android.control.afMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07008282 <td class="entry_name
Zhijun Hea19ede82014-05-27 15:06:42 -07008283 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08008284 android.<wbr/>control.<wbr/>af<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08008285 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008286 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08008287 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008288
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07008289 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008290
Igor Murashkin6c936c12014-05-13 14:51:49 -07008291
Igor Murashkinca256272014-10-02 15:27:09 -07008292 <span class="entry_type_hwlevel">[legacy] </span>
8293
Igor Murashkin6c936c12014-05-13 14:51:49 -07008294
8295
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008296 <ul class="entry_type_enum">
8297 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008298 <span class="entry_type_enum_name">OFF (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08008299 <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
8300<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008301application.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008302 </li>
8303 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008304 <span class="entry_type_enum_name">AUTO (v3.2)</span>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07008305 <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
8306<p>In this mode,<wbr/> the lens does not move unless
Igor Murashkina10351a2014-01-15 17:05:22 -08008307the autofocus trigger action is called.<wbr/> When that trigger
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07008308is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
Igor Murashkina10351a2014-01-15 17:05:22 -08008309the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07008310<p>Always supported if lens is not fixed focus.<wbr/></p>
8311<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
8312is fixed-focus.<wbr/></p>
Igor Murashkina10351a2014-01-15 17:05:22 -08008313<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
8314and sets the AF state to INACTIVE.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008315 </li>
8316 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008317 <span class="entry_type_enum_name">MACRO (v3.2)</span>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07008318 <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
8319<p>In this mode,<wbr/> the lens does not move unless the
8320autofocus trigger action is called.<wbr/> When that trigger is
8321activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
8322the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
8323mode is optimized for focusing on objects very close to
8324the camera.<wbr/></p>
8325<p>When that trigger is activated,<wbr/> AF will transition to
Igor Murashkina10351a2014-01-15 17:05:22 -08008326ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07008327NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
Igor Murashkina10351a2014-01-15 17:05:22 -08008328position to default,<wbr/> and sets the AF state to
8329INACTIVE.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008330 </li>
8331 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008332 <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08008333 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
8334position continually to attempt to provide a
8335constantly-in-focus image stream.<wbr/></p>
8336<p>The focusing behavior should be suitable for good quality
8337video recording; typically this means slower focus
8338movement and no overshoots.<wbr/> When the AF trigger is not
8339involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
8340and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
8341states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
8342the algorithm should immediately transition into
8343AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
8344lens position until a cancel AF trigger is received.<wbr/></p>
8345<p>Once cancel is received,<wbr/> the algorithm should transition
8346back to INACTIVE and resume passive scan.<wbr/> Note that this
8347behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
8348ongoing PASSIVE_<wbr/>SCAN must immediately be
8349canceled.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008350 </li>
8351 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008352 <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08008353 <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
8354position continually to attempt to provide a
8355constantly-in-focus image stream.<wbr/></p>
8356<p>The focusing behavior should be suitable for still image
8357capture; typically this means focusing as fast as
8358possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
8359algorithm should start in INACTIVE state,<wbr/> and then
8360transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
8361appropriate as it attempts to maintain focus.<wbr/> When the AF
8362trigger is activated,<wbr/> the algorithm should finish its
8363PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
8364AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
8365lens position until a cancel AF trigger is received.<wbr/></p>
8366<p>When the AF cancel trigger is activated,<wbr/> the algorithm
8367should transition back to INACTIVE and then act as if it
8368has just been started.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008369 </li>
8370 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008371 <span class="entry_type_enum_name">EDOF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008372 <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
8373<p>The camera device will produce images with an extended
8374depth of field automatically; no special focusing
8375operations need to be done before taking a picture.<wbr/></p>
8376<p>AF triggers are ignored,<wbr/> and the AF state will always be
Igor Murashkina10351a2014-01-15 17:05:22 -08008377INACTIVE.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008378 </li>
8379 </ul>
8380
8381 </td> <!-- entry_type -->
8382
8383 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07008384 <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
8385mode it is set to.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008386 </td>
8387
8388 <td class="entry_units">
8389 </td>
8390
8391 <td class="entry_range">
Zhijun He7787f7f2014-01-14 16:30:31 -08008392 <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008393 </td>
8394
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008395 <td class="entry_hal_version">
8396 <p>3.<wbr/>2</p>
8397 </td>
8398
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008399 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08008400 <ul class="entry_tags">
8401 <li><a href="#tag_BC">BC</a></li>
8402 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008403 </td>
8404
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008405 </tr>
8406 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008407 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008408 </tr>
8409 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008410 <td class="entry_details" colspan="6">
Zhijun He25b8ac52014-02-24 09:49:37 -08008411 <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
Yin-Chia Yeh668e43c2014-11-12 11:38:10 -08008412(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
8413when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
8414dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
8415setting <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>
Zhijun Hef163fa92014-01-14 09:59:04 -08008416<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -08008417the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
Zhijun Hef163fa92014-01-14 09:59:04 -08008418in result metadata.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008419 </td>
8420 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08008421
Zhijun Hea19ede82014-05-27 15:06:42 -07008422 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008423 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun Hea19ede82014-05-27 15:06:42 -07008424 </tr>
8425 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008426 <td class="entry_details" colspan="6">
Zhijun Hea19ede82014-05-27 15:06:42 -07008427 <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
8428request (<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
8429up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
8430<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
8431locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
8432after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
8433the same focal plane remains in focus.<wbr/></p>
8434<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
8435scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
8436(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
8437same lock behavior as above.<wbr/></p>
8438<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
8439focus 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/>
8440However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
8441manual control.<wbr/></p>
8442<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
8443camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
8444remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
8445by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
8446that will arise on camera modules with open-loop VCMs.<wbr/></p>
8447 </td>
8448 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08008449
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008450 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008451 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008452
8453
8454 <tr class="entry" id="dynamic_android.control.afRegions">
Igor Murashkin6c936c12014-05-13 14:51:49 -07008455 <td class="entry_name
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07008456 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08008457 android.<wbr/>control.<wbr/>af<wbr/>Regions
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08008458 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008459 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08008460 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008461 <span class="entry_type_container">x</span>
8462
8463 <span class="entry_type_array">
8464 5 x area_count
8465 </span>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07008466 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008467
8468
Igor Murashkin6c936c12014-05-13 14:51:49 -07008469
8470
8471
Igor Murashkinca256272014-10-02 15:27:09 -07008472
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008473 </td> <!-- entry_type -->
8474
8475 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07008476 <p>List of metering areas to use for auto-focus.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008477 </td>
8478
8479 <td class="entry_units">
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07008480 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
8481 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
8482 distortion correction capability and mode
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008483 </td>
8484
8485 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07008486 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07008487<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
8488depending on distortion correction capability and mode</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008489 </td>
8490
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008491 <td class="entry_hal_version">
8492 <p>3.<wbr/>2</p>
8493 </td>
8494
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008495 <td class="entry_tags">
8496 <ul class="entry_tags">
8497 <li><a href="#tag_BC">BC</a></li>
8498 </ul>
8499 </td>
8500
8501 </tr>
8502 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008503 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008504 </tr>
8505 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008506 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07008507 <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
Yin-Chia Yeh8554ed52014-09-04 09:33:34 -07008508Otherwise will always be present.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07008509<p>The maximum number of focus areas supported by the device is determined by the value
8510of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07008511<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
8512system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
8513the top-left pixel in the active pixel array,<wbr/> and
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08008514(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07008515<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
8516active pixel array.<wbr/></p>
8517<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
8518system depends on the mode being set.<wbr/>
8519When the distortion correction mode is OFF,<wbr/> the coordinate system follows
8520<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
8521<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
8522(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8523<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
8524pixel in the pre-correction active pixel array.<wbr/>
8525When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
8526<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
8527<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
8528(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8529<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
8530active pixel array.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07008531<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
Yin-Chia Yehdc182572014-05-14 14:05:20 -07008532for every pixel in the area.<wbr/> This means that a large metering area
8533with the same weight as a smaller area will have more effect in
8534the metering result.<wbr/> Metering areas can partially overlap and the
8535camera device will add the weights in the overlap region.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07008536<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
8537is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
8538ignored.<wbr/></p>
8539<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
Shuzhen Wang608e0582018-02-08 12:03:09 -08008540camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
8541the region selected by the camera device as the focus area of interest.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07008542<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
8543capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8544region and output only the intersection rectangle as the metering region in the result
8545metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
8546not reported in the result metadata.<wbr/></p>
Shuzhen Wangfc392322022-03-28 12:41:41 -07008547<p>When setting the AF metering regions,<wbr/> the application must consider the additional
8548crop resulted from the aspect ratio differences between the preview stream and
8549<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
8550active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
8551the boundary of AF regions will be [0,<wbr/> y_<wbr/>crop] and
8552[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
8553[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
8554mismatch.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08008555<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
8556preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
8557pre-zoom field of view.<wbr/> This means that the same afRegions values at different
8558<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions
8559coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
8560zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
8561afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the
8562scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
8563activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
8564mode.<wbr/></p>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -08008565<p>For camera devices with the
8566<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
8567capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
8568<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
8569coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
8570<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008571 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008572 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08008573
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07008574 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008575 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07008576 </tr>
8577 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008578 <td class="entry_details" colspan="6">
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07008579 <p>The HAL level representation of MeteringRectangle[] is a
8580int[5 * area_<wbr/>count].<wbr/>
8581Every five elements represent a metering region of
8582(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8583The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07008584exclusive on xmax and ymax.<wbr/>
8585HAL must always report metering regions in the coordinate system of pre-correction
8586active array.<wbr/></p>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07008587 </td>
8588 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08008589
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008590 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008591 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008592
8593
Zhijun He602d3702014-05-02 17:38:15 -07008594 <tr class="entry" id="dynamic_android.control.afTrigger">
Igor Murashkin6c936c12014-05-13 14:51:49 -07008595 <td class="entry_name
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07008596 " rowspan="5">
Zhijun He602d3702014-05-02 17:38:15 -07008597 android.<wbr/>control.<wbr/>af<wbr/>Trigger
8598 </td>
8599 <td class="entry_type">
8600 <span class="entry_type_name entry_type_name_enum">byte</span>
8601
8602 <span class="entry_type_visibility"> [public]</span>
8603
Igor Murashkin6c936c12014-05-13 14:51:49 -07008604
Igor Murashkinca256272014-10-02 15:27:09 -07008605 <span class="entry_type_hwlevel">[legacy] </span>
8606
Igor Murashkin6c936c12014-05-13 14:51:49 -07008607
8608
Zhijun He602d3702014-05-02 17:38:15 -07008609 <ul class="entry_type_enum">
8610 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008611 <span class="entry_type_enum_name">IDLE (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07008612 <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
8613 </li>
8614 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008615 <span class="entry_type_enum_name">START (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07008616 <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
8617 </li>
8618 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008619 <span class="entry_type_enum_name">CANCEL (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07008620 <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
8621state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
8622 </li>
8623 </ul>
8624
8625 </td> <!-- entry_type -->
8626
8627 <td class="entry_description">
8628 <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
8629 </td>
8630
8631 <td class="entry_units">
8632 </td>
8633
8634 <td class="entry_range">
8635 </td>
8636
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008637 <td class="entry_hal_version">
8638 <p>3.<wbr/>2</p>
8639 </td>
8640
Zhijun He602d3702014-05-02 17:38:15 -07008641 <td class="entry_tags">
8642 <ul class="entry_tags">
8643 <li><a href="#tag_BC">BC</a></li>
8644 </ul>
8645 </td>
8646
8647 </tr>
8648 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008649 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07008650 </tr>
8651 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008652 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -07008653 <p>This entry is normally set to IDLE,<wbr/> or is not
8654included at all in the request settings.<wbr/></p>
8655<p>When included and set to START,<wbr/> the camera device will trigger the
8656autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
8657<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
8658and return to its initial AF state.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008659<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
8660single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
8661START for multiple captures in a row means restarting the AF operation over
8662and over again.<wbr/></p>
8663<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>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07008664<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>
8665simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
8666the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
8667focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
8668trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
8669changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07008670 </td>
8671 </tr>
8672
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07008673 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008674 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07008675 </tr>
8676 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008677 <td class="entry_details" colspan="6">
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -07008678 <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
8679(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
8680treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
8681AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
8682to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
8683 </td>
8684 </tr>
Zhijun He602d3702014-05-02 17:38:15 -07008685
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008686 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -07008687 <!-- end of entry -->
8688
8689
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008690 <tr class="entry" id="dynamic_android.control.afState">
Igor Murashkin6c936c12014-05-13 14:51:49 -07008691 <td class="entry_name
8692 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08008693 android.<wbr/>control.<wbr/>af<wbr/>State
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08008694 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008695 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08008696 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008697
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07008698 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008699
Igor Murashkin6c936c12014-05-13 14:51:49 -07008700
Igor Murashkinca256272014-10-02 15:27:09 -07008701 <span class="entry_type_hwlevel">[legacy] </span>
8702
Igor Murashkin6c936c12014-05-13 14:51:49 -07008703
8704
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008705 <ul class="entry_type_enum">
8706 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008707 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008708 <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
8709to scan.<wbr/></p>
8710<p>When a camera device is opened,<wbr/> it starts in this
8711state.<wbr/> This is a transient state,<wbr/> the camera device may
8712skip reporting this state in capture
8713result.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008714 </li>
8715 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008716 <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008717 <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
8718camera device in a continuous autofocus mode.<wbr/></p>
8719<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
8720state,<wbr/> the camera device may skip reporting this state in
8721capture result.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008722 </li>
8723 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008724 <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008725 <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
8726restart scanning at any time.<wbr/></p>
8727<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
8728state,<wbr/> the camera device may skip reporting this state in
8729capture result.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008730 </li>
8731 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008732 <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008733 <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
8734triggered by AF trigger.<wbr/></p>
8735<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
8736state,<wbr/> the camera device may skip reporting this state in
8737capture result.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008738 </li>
8739 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008740 <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008741 <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
8742focus.<wbr/></p>
8743<p>This state is reached only after an explicit START AF trigger has been
8744sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
8745<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
8746a 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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008747 </li>
8748 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008749 <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008750 <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
8751focus.<wbr/></p>
8752<p>This state is reached only after an explicit START AF trigger has been
8753sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
8754<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
8755a 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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008756 </li>
Eino-Ville Talvala492ba7c2013-09-20 17:24:00 -07008757 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08008758 <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008759 <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
8760and may restart scanning at any time.<wbr/></p>
8761<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
Igor Murashkinca256272014-10-02 15:27:09 -07008762device may skip reporting this state in capture result.<wbr/></p>
8763<p>LEGACY camera devices do not support this state.<wbr/> When a passive
8764scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
Eino-Ville Talvala492ba7c2013-09-20 17:24:00 -07008765 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008766 </ul>
8767
8768 </td> <!-- entry_type -->
8769
8770 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07008771 <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08008772 </td>
8773
8774 <td class="entry_units">
8775 </td>
8776
8777 <td class="entry_range">
8778 </td>
8779
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008780 <td class="entry_hal_version">
8781 <p>3.<wbr/>2</p>
8782 </td>
8783
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008784 <td class="entry_tags">
8785 </td>
8786
8787 </tr>
8788 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008789 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08008790 </tr>
8791 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08008792 <td class="entry_details" colspan="6">
Zhijun He92e698d2014-01-13 16:24:31 -08008793 <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
8794resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8795or <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
8796the algorithm states to INACTIVE.<wbr/></p>
8797<p>The camera device can do several state transitions between two results,<wbr/> if it is
8798allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
8799seen in a result.<wbr/></p>
8800<p>The state in the result is the state for this image (in sync with this image): if
8801AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
8802be sharp.<wbr/></p>
8803<p>Below are state transition tables for different AF modes.<wbr/></p>
8804<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>
8805<table>
8806<thead>
8807<tr>
8808<th align="center">State</th>
8809<th align="center">Transition Cause</th>
8810<th align="center">New State</th>
8811<th align="center">Notes</th>
8812</tr>
8813</thead>
8814<tbody>
8815<tr>
8816<td align="center">INACTIVE</td>
8817<td align="center"></td>
8818<td align="center">INACTIVE</td>
8819<td align="center">Never changes</td>
8820</tr>
8821</tbody>
8822</table>
8823<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>
8824<table>
8825<thead>
8826<tr>
8827<th align="center">State</th>
8828<th align="center">Transition Cause</th>
8829<th align="center">New State</th>
8830<th align="center">Notes</th>
8831</tr>
8832</thead>
8833<tbody>
8834<tr>
8835<td align="center">INACTIVE</td>
8836<td align="center">AF_<wbr/>TRIGGER</td>
8837<td align="center">ACTIVE_<wbr/>SCAN</td>
8838<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
8839</tr>
8840<tr>
8841<td align="center">ACTIVE_<wbr/>SCAN</td>
8842<td align="center">AF sweep done</td>
8843<td align="center">FOCUSED_<wbr/>LOCKED</td>
8844<td align="center">Focused,<wbr/> Lens now locked</td>
8845</tr>
8846<tr>
8847<td align="center">ACTIVE_<wbr/>SCAN</td>
8848<td align="center">AF sweep done</td>
8849<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8850<td align="center">Not focused,<wbr/> Lens now locked</td>
8851</tr>
8852<tr>
8853<td align="center">ACTIVE_<wbr/>SCAN</td>
8854<td align="center">AF_<wbr/>CANCEL</td>
8855<td align="center">INACTIVE</td>
8856<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
8857</tr>
8858<tr>
8859<td align="center">FOCUSED_<wbr/>LOCKED</td>
8860<td align="center">AF_<wbr/>CANCEL</td>
8861<td align="center">INACTIVE</td>
8862<td align="center">Cancel/<wbr/>reset AF</td>
8863</tr>
8864<tr>
8865<td align="center">FOCUSED_<wbr/>LOCKED</td>
8866<td align="center">AF_<wbr/>TRIGGER</td>
8867<td align="center">ACTIVE_<wbr/>SCAN</td>
8868<td align="center">Start new sweep,<wbr/> Lens now moving</td>
8869</tr>
8870<tr>
8871<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8872<td align="center">AF_<wbr/>CANCEL</td>
8873<td align="center">INACTIVE</td>
8874<td align="center">Cancel/<wbr/>reset AF</td>
8875</tr>
8876<tr>
8877<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8878<td align="center">AF_<wbr/>TRIGGER</td>
8879<td align="center">ACTIVE_<wbr/>SCAN</td>
8880<td align="center">Start new sweep,<wbr/> Lens now moving</td>
8881</tr>
8882<tr>
8883<td align="center">Any state</td>
8884<td align="center">Mode change</td>
8885<td align="center">INACTIVE</td>
8886<td align="center"></td>
8887</tr>
8888</tbody>
8889</table>
Zhijun He3fc95122014-02-11 17:18:29 -08008890<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8891without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8892can be skipped in that manner is called a transient state.<wbr/></p>
8893<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
8894state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
8895one or more transient states between two results.<wbr/> See below table for examples:</p>
8896<table>
8897<thead>
8898<tr>
8899<th align="center">State</th>
8900<th align="center">Transition Cause</th>
8901<th align="center">New State</th>
8902<th align="center">Notes</th>
8903</tr>
8904</thead>
8905<tbody>
8906<tr>
8907<td align="center">INACTIVE</td>
8908<td align="center">AF_<wbr/>TRIGGER</td>
8909<td align="center">FOCUSED_<wbr/>LOCKED</td>
8910<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
8911</tr>
8912<tr>
8913<td align="center">INACTIVE</td>
8914<td align="center">AF_<wbr/>TRIGGER</td>
8915<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8916<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
8917</tr>
8918<tr>
8919<td align="center">FOCUSED_<wbr/>LOCKED</td>
8920<td align="center">AF_<wbr/>TRIGGER</td>
8921<td align="center">FOCUSED_<wbr/>LOCKED</td>
8922<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
8923</tr>
8924<tr>
8925<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8926<td align="center">AF_<wbr/>TRIGGER</td>
8927<td align="center">FOCUSED_<wbr/>LOCKED</td>
8928<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
8929</tr>
8930</tbody>
8931</table>
Zhijun He92e698d2014-01-13 16:24:31 -08008932<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>
8933<table>
8934<thead>
8935<tr>
8936<th align="center">State</th>
8937<th align="center">Transition Cause</th>
8938<th align="center">New State</th>
8939<th align="center">Notes</th>
8940</tr>
8941</thead>
8942<tbody>
8943<tr>
8944<td align="center">INACTIVE</td>
8945<td align="center">Camera device initiates new scan</td>
8946<td align="center">PASSIVE_<wbr/>SCAN</td>
8947<td align="center">Start AF scan,<wbr/> Lens now moving</td>
8948</tr>
8949<tr>
8950<td align="center">INACTIVE</td>
8951<td align="center">AF_<wbr/>TRIGGER</td>
8952<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
8953<td align="center">AF state query,<wbr/> Lens now locked</td>
8954</tr>
8955<tr>
8956<td align="center">PASSIVE_<wbr/>SCAN</td>
8957<td align="center">Camera device completes current scan</td>
8958<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8959<td align="center">End AF scan,<wbr/> Lens now locked</td>
8960</tr>
8961<tr>
8962<td align="center">PASSIVE_<wbr/>SCAN</td>
8963<td align="center">Camera device fails current scan</td>
8964<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
8965<td align="center">End AF scan,<wbr/> Lens now locked</td>
8966</tr>
8967<tr>
8968<td align="center">PASSIVE_<wbr/>SCAN</td>
8969<td align="center">AF_<wbr/>TRIGGER</td>
8970<td align="center">FOCUSED_<wbr/>LOCKED</td>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008971<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
Zhijun He92e698d2014-01-13 16:24:31 -08008972</tr>
8973<tr>
8974<td align="center">PASSIVE_<wbr/>SCAN</td>
8975<td align="center">AF_<wbr/>TRIGGER</td>
8976<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07008977<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
Zhijun He92e698d2014-01-13 16:24:31 -08008978</tr>
8979<tr>
8980<td align="center">PASSIVE_<wbr/>SCAN</td>
8981<td align="center">AF_<wbr/>CANCEL</td>
8982<td align="center">INACTIVE</td>
8983<td align="center">Reset lens position,<wbr/> Lens now locked</td>
8984</tr>
8985<tr>
8986<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8987<td align="center">Camera device initiates new scan</td>
8988<td align="center">PASSIVE_<wbr/>SCAN</td>
8989<td align="center">Start AF scan,<wbr/> Lens now moving</td>
8990</tr>
8991<tr>
8992<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
8993<td align="center">Camera device initiates new scan</td>
8994<td align="center">PASSIVE_<wbr/>SCAN</td>
8995<td align="center">Start AF scan,<wbr/> Lens now moving</td>
8996</tr>
8997<tr>
8998<td align="center">PASSIVE_<wbr/>FOCUSED</td>
8999<td align="center">AF_<wbr/>TRIGGER</td>
9000<td align="center">FOCUSED_<wbr/>LOCKED</td>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009001<td align="center">Immediate transition,<wbr/> lens now locked</td>
Zhijun He92e698d2014-01-13 16:24:31 -08009002</tr>
9003<tr>
9004<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
9005<td align="center">AF_<wbr/>TRIGGER</td>
9006<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009007<td align="center">Immediate transition,<wbr/> lens now locked</td>
Zhijun He92e698d2014-01-13 16:24:31 -08009008</tr>
9009<tr>
9010<td align="center">FOCUSED_<wbr/>LOCKED</td>
9011<td align="center">AF_<wbr/>TRIGGER</td>
9012<td align="center">FOCUSED_<wbr/>LOCKED</td>
9013<td align="center">No effect</td>
9014</tr>
9015<tr>
9016<td align="center">FOCUSED_<wbr/>LOCKED</td>
9017<td align="center">AF_<wbr/>CANCEL</td>
9018<td align="center">INACTIVE</td>
9019<td align="center">Restart AF scan</td>
9020</tr>
9021<tr>
9022<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9023<td align="center">AF_<wbr/>TRIGGER</td>
9024<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9025<td align="center">No effect</td>
9026</tr>
9027<tr>
9028<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9029<td align="center">AF_<wbr/>CANCEL</td>
9030<td align="center">INACTIVE</td>
9031<td align="center">Restart AF scan</td>
9032</tr>
9033</tbody>
9034</table>
9035<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>
9036<table>
9037<thead>
9038<tr>
9039<th align="center">State</th>
9040<th align="center">Transition Cause</th>
9041<th align="center">New State</th>
9042<th align="center">Notes</th>
9043</tr>
9044</thead>
9045<tbody>
9046<tr>
9047<td align="center">INACTIVE</td>
9048<td align="center">Camera device initiates new scan</td>
9049<td align="center">PASSIVE_<wbr/>SCAN</td>
9050<td align="center">Start AF scan,<wbr/> Lens now moving</td>
9051</tr>
9052<tr>
9053<td align="center">INACTIVE</td>
9054<td align="center">AF_<wbr/>TRIGGER</td>
9055<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9056<td align="center">AF state query,<wbr/> Lens now locked</td>
9057</tr>
9058<tr>
9059<td align="center">PASSIVE_<wbr/>SCAN</td>
9060<td align="center">Camera device completes current scan</td>
9061<td align="center">PASSIVE_<wbr/>FOCUSED</td>
9062<td align="center">End AF scan,<wbr/> Lens now locked</td>
9063</tr>
9064<tr>
9065<td align="center">PASSIVE_<wbr/>SCAN</td>
9066<td align="center">Camera device fails current scan</td>
9067<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
9068<td align="center">End AF scan,<wbr/> Lens now locked</td>
9069</tr>
9070<tr>
9071<td align="center">PASSIVE_<wbr/>SCAN</td>
9072<td align="center">AF_<wbr/>TRIGGER</td>
9073<td align="center">FOCUSED_<wbr/>LOCKED</td>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009074<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
Zhijun He92e698d2014-01-13 16:24:31 -08009075</tr>
9076<tr>
9077<td align="center">PASSIVE_<wbr/>SCAN</td>
9078<td align="center">AF_<wbr/>TRIGGER</td>
9079<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009080<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
Zhijun He92e698d2014-01-13 16:24:31 -08009081</tr>
9082<tr>
9083<td align="center">PASSIVE_<wbr/>SCAN</td>
9084<td align="center">AF_<wbr/>CANCEL</td>
9085<td align="center">INACTIVE</td>
9086<td align="center">Reset lens position,<wbr/> Lens now locked</td>
9087</tr>
9088<tr>
9089<td align="center">PASSIVE_<wbr/>FOCUSED</td>
9090<td align="center">Camera device initiates new scan</td>
9091<td align="center">PASSIVE_<wbr/>SCAN</td>
9092<td align="center">Start AF scan,<wbr/> Lens now moving</td>
9093</tr>
9094<tr>
9095<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
9096<td align="center">Camera device initiates new scan</td>
9097<td align="center">PASSIVE_<wbr/>SCAN</td>
9098<td align="center">Start AF scan,<wbr/> Lens now moving</td>
9099</tr>
9100<tr>
9101<td align="center">PASSIVE_<wbr/>FOCUSED</td>
9102<td align="center">AF_<wbr/>TRIGGER</td>
9103<td align="center">FOCUSED_<wbr/>LOCKED</td>
9104<td align="center">Immediate trans.<wbr/> Lens now locked</td>
9105</tr>
9106<tr>
9107<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
9108<td align="center">AF_<wbr/>TRIGGER</td>
9109<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9110<td align="center">Immediate trans.<wbr/> Lens now locked</td>
9111</tr>
9112<tr>
9113<td align="center">FOCUSED_<wbr/>LOCKED</td>
9114<td align="center">AF_<wbr/>TRIGGER</td>
9115<td align="center">FOCUSED_<wbr/>LOCKED</td>
9116<td align="center">No effect</td>
9117</tr>
9118<tr>
9119<td align="center">FOCUSED_<wbr/>LOCKED</td>
9120<td align="center">AF_<wbr/>CANCEL</td>
9121<td align="center">INACTIVE</td>
9122<td align="center">Restart AF scan</td>
9123</tr>
9124<tr>
9125<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9126<td align="center">AF_<wbr/>TRIGGER</td>
9127<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9128<td align="center">No effect</td>
9129</tr>
9130<tr>
9131<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
9132<td align="center">AF_<wbr/>CANCEL</td>
9133<td align="center">INACTIVE</td>
9134<td align="center">Restart AF scan</td>
9135</tr>
9136</tbody>
9137</table>
Zhijun He3fc95122014-02-11 17:18:29 -08009138<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
9139(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
9140camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
9141will be evaluated in the context of the new mode in the request.<wbr/>
9142See below table for examples:</p>
9143<table>
9144<thead>
9145<tr>
9146<th align="center">State</th>
9147<th align="center">Transition Cause</th>
9148<th align="center">New State</th>
9149<th align="center">Notes</th>
9150</tr>
9151</thead>
9152<tbody>
9153<tr>
9154<td align="center">any state</td>
9155<td align="center">CAF--&gt;AUTO mode switch</td>
9156<td align="center">INACTIVE</td>
9157<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
9158</tr>
9159<tr>
9160<td align="center">any state</td>
9161<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
9162<td align="center">trigger-reachable states from INACTIVE</td>
9163<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
9164</tr>
9165<tr>
9166<td align="center">any state</td>
9167<td align="center">AUTO--&gt;CAF mode switch</td>
9168<td align="center">passively reachable states from INACTIVE</td>
9169<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
9170</tr>
9171</tbody>
9172</table>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009173 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009174 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009175
9176
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009177 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009178 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009179
9180
9181 <tr class="entry" id="dynamic_android.control.afTriggerId">
Igor Murashkin6c936c12014-05-13 14:51:49 -07009182 <td class="entry_name
9183 entry_name_deprecated
9184 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08009185 android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009186 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009187 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08009188 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009189
Igor Murashkin6c936c12014-05-13 14:51:49 -07009190 <span class="entry_type_visibility"> [system]</span>
9191
9192
Igor Murashkinca256272014-10-02 15:27:09 -07009193
Igor Murashkin6c936c12014-05-13 14:51:49 -07009194 <span class="entry_type_deprecated">[deprecated] </span>
9195
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009196
9197
9198 </td> <!-- entry_type -->
9199
9200 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -08009201 <p>The ID sent with the latest
9202CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009203 </td>
9204
9205 <td class="entry_units">
9206 </td>
9207
9208 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -07009209 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009210 </td>
9211
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009212 <td class="entry_hal_version">
9213 <p>3.<wbr/>2</p>
9214 </td>
9215
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009216 <td class="entry_tags">
9217 </td>
9218
9219 </tr>
9220 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009221 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009222 </tr>
9223 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009224 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -08009225 <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
9226received yet by HAL.<wbr/> Always updated even if AF algorithm
9227ignores the trigger</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009228 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009229 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009230
9231
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009232 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009233 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009234
9235
Zhijun He602d3702014-05-02 17:38:15 -07009236 <tr class="entry" id="dynamic_android.control.awbLock">
Igor Murashkin6c936c12014-05-13 14:51:49 -07009237 <td class="entry_name
9238 " rowspan="3">
Zhijun He602d3702014-05-02 17:38:15 -07009239 android.<wbr/>control.<wbr/>awb<wbr/>Lock
9240 </td>
9241 <td class="entry_type">
9242 <span class="entry_type_name entry_type_name_enum">byte</span>
9243
9244 <span class="entry_type_visibility"> [public as boolean]</span>
9245
Igor Murashkin6c936c12014-05-13 14:51:49 -07009246
Igor Murashkinca256272014-10-02 15:27:09 -07009247 <span class="entry_type_hwlevel">[legacy] </span>
9248
Igor Murashkin6c936c12014-05-13 14:51:49 -07009249
9250
Zhijun He602d3702014-05-02 17:38:15 -07009251 <ul class="entry_type_enum">
9252 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009253 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009254 <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
Zhijun He602d3702014-05-02 17:38:15 -07009255algorithm is free to update its parameters if in AUTO
9256mode.<wbr/></p></span>
9257 </li>
9258 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009259 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009260 <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
9261algorithm will not update its parameters while the lock
Zhijun He602d3702014-05-02 17:38:15 -07009262is active.<wbr/></p></span>
9263 </li>
9264 </ul>
9265
9266 </td> <!-- entry_type -->
9267
9268 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07009269 <p>Whether auto-white balance (AWB) is currently locked to its
Zhijun He602d3702014-05-02 17:38:15 -07009270latest calculated values.<wbr/></p>
9271 </td>
9272
9273 <td class="entry_units">
9274 </td>
9275
9276 <td class="entry_range">
9277 </td>
9278
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009279 <td class="entry_hal_version">
9280 <p>3.<wbr/>2</p>
9281 </td>
9282
Zhijun He602d3702014-05-02 17:38:15 -07009283 <td class="entry_tags">
9284 <ul class="entry_tags">
9285 <li><a href="#tag_BC">BC</a></li>
9286 </ul>
9287 </td>
9288
9289 </tr>
9290 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009291 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07009292 </tr>
9293 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009294 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07009295 <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
9296and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
9297<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
9298get locked do not necessarily correspond to the settings that were present in the
9299latest capture result received from the camera device,<wbr/> since additional captures
9300and AWB updates may have occurred even before the result was sent out.<wbr/> If an
9301application is switching between automatic and manual control and wishes to eliminate
9302any flicker during the switch,<wbr/> the following procedure is recommended:</p>
9303<ol>
9304<li>Starting in auto-AWB mode:</li>
9305<li>Lock AWB</li>
9306<li>Wait for the first result to be output that has the AWB locked</li>
9307<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
9308<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
9309</ol>
9310<p>Note that AWB lock is only meaningful when
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009311<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
9312AWB is already fixed to a specific setting.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -07009313<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -07009314 </td>
9315 </tr>
9316
9317
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009318 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -07009319 <!-- end of entry -->
9320
9321
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009322 <tr class="entry" id="dynamic_android.control.awbMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07009323 <td class="entry_name
9324 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08009325 android.<wbr/>control.<wbr/>awb<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009326 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009327 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08009328 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009329
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07009330 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009331
Igor Murashkin6c936c12014-05-13 14:51:49 -07009332
Igor Murashkinca256272014-10-02 15:27:09 -07009333 <span class="entry_type_hwlevel">[legacy] </span>
9334
Igor Murashkin6c936c12014-05-13 14:51:49 -07009335
9336
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009337 <ul class="entry_type_enum">
9338 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009339 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009340 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
9341<p>The application-selected color transform matrix
Igor Murashkina10351a2014-01-15 17:05:22 -08009342(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
9343(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
9344device for manual white balance control.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009345 </li>
9346 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009347 <span class="entry_type_enum_name">AUTO (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009348 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
9349<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9350and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9351For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9352values used by the camera device for the transform and gains
9353will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009354 </li>
9355 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009356 <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009357 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08009358the camera device uses incandescent light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009359illumination for white balance.<wbr/></p>
9360<p>While the exact white balance transforms are up to the
9361camera device,<wbr/> they will approximately match the CIE
9362standard illuminant A.<wbr/></p>
9363<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9364and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9365For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9366values used by the camera device for the transform and gains
9367will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009368 </li>
9369 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009370 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009371 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08009372the camera device uses fluorescent light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009373illumination for white balance.<wbr/></p>
9374<p>While the exact white balance transforms are up to the
9375camera device,<wbr/> they will approximately match the CIE
9376standard illuminant F2.<wbr/></p>
9377<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9378and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9379For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9380values used by the camera device for the transform and gains
9381will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009382 </li>
9383 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009384 <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009385 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08009386the camera device uses warm fluorescent light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009387illumination for white balance.<wbr/></p>
9388<p>While the exact white balance transforms are up to the
9389camera device,<wbr/> they will approximately match the CIE
9390standard illuminant F4.<wbr/></p>
9391<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9392and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9393For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9394values used by the camera device for the transform and gains
9395will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009396 </li>
9397 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009398 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009399 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08009400the camera device uses daylight light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009401illumination for white balance.<wbr/></p>
9402<p>While the exact white balance transforms are up to the
9403camera device,<wbr/> they will approximately match the CIE
9404standard illuminant D65.<wbr/></p>
9405<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9406and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9407For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9408values used by the camera device for the transform and gains
9409will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009410 </li>
9411 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009412 <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009413 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08009414the camera device uses cloudy daylight light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009415illumination for white balance.<wbr/></p>
9416<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9417and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9418For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9419values used by the camera device for the transform and gains
9420will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009421 </li>
9422 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009423 <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009424 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08009425the camera device uses twilight light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009426illumination for white balance.<wbr/></p>
9427<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9428and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9429For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9430values used by the camera device for the transform and gains
9431will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009432 </li>
9433 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009434 <span class="entry_type_enum_name">SHADE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009435 <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
Igor Murashkina10351a2014-01-15 17:05:22 -08009436the camera device uses shade light as the assumed scene
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009437illumination for white balance.<wbr/></p>
9438<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
9439and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
9440For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
9441values used by the camera device for the transform and gains
9442will be available in the capture result for this request.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009443 </li>
9444 </ul>
9445
9446 </td> <!-- entry_type -->
9447
9448 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07009449 <p>Whether auto-white balance (AWB) is currently setting the color
Igor Murashkin0b080452013-12-27 15:30:25 -08009450transform fields,<wbr/> and what its illumination target
Zhijun He25b8ac52014-02-24 09:49:37 -08009451is.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009452 </td>
9453
9454 <td class="entry_units">
9455 </td>
9456
9457 <td class="entry_range">
Zhijun He7787f7f2014-01-14 16:30:31 -08009458 <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009459 </td>
9460
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009461 <td class="entry_hal_version">
9462 <p>3.<wbr/>2</p>
9463 </td>
9464
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009465 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08009466 <ul class="entry_tags">
9467 <li><a href="#tag_BC">BC</a></li>
Igor Murashkinbaacf9a2012-12-05 14:49:11 -08009468 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009469 </td>
9470
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009471 </tr>
9472 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009473 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009474 </tr>
9475 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009476 <td class="entry_details" colspan="6">
Zhijun He7787f7f2014-01-14 16:30:31 -08009477 <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
Jayant Chowdhary62a91932021-01-06 16:56:26 -08009478<p>When set to the AUTO mode,<wbr/> the camera device's auto-white balance
Zhijun He7787f7f2014-01-14 16:30:31 -08009479routine is enabled,<wbr/> overriding the application's selected
9480<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
Yin-Chia Yeh668e43c2014-11-12 11:38:10 -08009481<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>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07009482is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommended to
Yin-Chia Yeh668e43c2014-11-12 11:38:10 -08009483also 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
9484setting AE mode to OFF.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009485<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
Zhijun He25b8ac52014-02-24 09:49:37 -08009486routine is disabled.<wbr/> The application manually controls the white
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -08009487balance 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>
Zhijun He7787f7f2014-01-14 16:30:31 -08009488and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009489<p>When set to any other modes,<wbr/> the camera device's auto-white
9490balance routine is disabled.<wbr/> The camera device uses each
9491particular illumination target for white balance
9492adjustment.<wbr/> The application's values for
9493<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
9494<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
9495<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009496 </td>
9497 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009498
9499
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009500 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009501 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009502
9503
9504 <tr class="entry" id="dynamic_android.control.awbRegions">
Igor Murashkin6c936c12014-05-13 14:51:49 -07009505 <td class="entry_name
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07009506 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -08009507 android.<wbr/>control.<wbr/>awb<wbr/>Regions
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009508 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009509 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08009510 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009511 <span class="entry_type_container">x</span>
9512
9513 <span class="entry_type_array">
9514 5 x area_count
9515 </span>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07009516 <span class="entry_type_visibility"> [public as meteringRectangle]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009517
9518
Igor Murashkin6c936c12014-05-13 14:51:49 -07009519
9520
9521
Igor Murashkinca256272014-10-02 15:27:09 -07009522
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009523 </td> <!-- entry_type -->
9524
9525 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07009526 <p>List of metering areas to use for auto-white-balance illuminant
Ruben Brunk76e4c7d2014-01-31 11:05:30 -08009527estimation.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009528 </td>
9529
9530 <td class="entry_units">
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07009531 Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
9532 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on
9533 distortion correction capability and mode
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009534 </td>
9535
9536 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07009537 <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07009538<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>
9539depending on distortion correction capability and mode</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009540 </td>
9541
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009542 <td class="entry_hal_version">
9543 <p>3.<wbr/>2</p>
9544 </td>
9545
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009546 <td class="entry_tags">
9547 <ul class="entry_tags">
9548 <li><a href="#tag_BC">BC</a></li>
9549 </ul>
9550 </td>
9551
9552 </tr>
9553 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009554 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009555 </tr>
9556 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009557 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07009558 <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
Yin-Chia Yeh8554ed52014-09-04 09:33:34 -07009559Otherwise will always be present.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07009560<p>The maximum number of regions supported by the device is determined by the value
9561of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07009562<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
9563system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with (0,<wbr/>0) being
9564the top-left pixel in the active pixel array,<wbr/> and
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -08009565(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07009566<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
9567active pixel array.<wbr/></p>
9568<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
9569system depends on the mode being set.<wbr/>
9570When the distortion correction mode is OFF,<wbr/> the coordinate system follows
9571<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
9572<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and
9573(<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9574<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right
9575pixel in the pre-correction active pixel array.<wbr/>
9576When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
9577<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
9578<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array,<wbr/> and
9579(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
9580<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right pixel in the
9581active pixel array.<wbr/></p>
Yin-Chia Yehdc182572014-05-14 14:05:20 -07009582<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
9583for every pixel in the area.<wbr/> This means that a large metering area
9584with the same weight as a smaller area will have more effect in
9585the metering result.<wbr/> Metering areas can partially overlap and the
9586camera device will add the weights in the overlap region.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -07009587<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
9588only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
95890 weight is ignored.<wbr/></p>
9590<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
9591camera device.<wbr/></p>
9592<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
9593capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
9594region and output only the intersection rectangle as the metering region in the result
9595metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
9596not reported in the result metadata.<wbr/></p>
Shuzhen Wangfc392322022-03-28 12:41:41 -07009597<p>When setting the AWB metering regions,<wbr/> the application must consider the additional
9598crop resulted from the aspect ratio differences between the preview stream and
9599<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full
9600active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/>
9601the boundary of AWB regions will be [0,<wbr/> y_<wbr/>crop] and
9602[active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and
9603[active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio
9604mismatch.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -08009605<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
9606preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
9607pre-zoom field of view.<wbr/> This means that the same awbRegions values at different
9608<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions
9609coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the
9610zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same
9611awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of
9612the scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use
9613activeArraySize or preCorrectionActiveArraySize still depends on distortion correction
9614mode.<wbr/></p>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -08009615<p>For camera devices with the
9616<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
9617capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
9618<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
9619coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
9620<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009621 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009622 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009623
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07009624 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009625 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07009626 </tr>
9627 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009628 <td class="entry_details" colspan="6">
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07009629 <p>The HAL level representation of MeteringRectangle[] is a
9630int[5 * area_<wbr/>count].<wbr/>
9631Every five elements represent a metering region of
9632(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
9633The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
Yin-Chia Yeh69bce262018-06-15 15:35:05 -07009634exclusive on xmax and ymax.<wbr/>
9635HAL must always report metering regions in the coordinate system of pre-correction
9636active array.<wbr/></p>
Yin-Chia Yeh739effc2014-05-16 15:13:13 -07009637 </td>
9638 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009639
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009640 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009641 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009642
9643
Zhijun He602d3702014-05-02 17:38:15 -07009644 <tr class="entry" id="dynamic_android.control.captureIntent">
Igor Murashkin6c936c12014-05-13 14:51:49 -07009645 <td class="entry_name
9646 " rowspan="3">
Zhijun He602d3702014-05-02 17:38:15 -07009647 android.<wbr/>control.<wbr/>capture<wbr/>Intent
9648 </td>
9649 <td class="entry_type">
9650 <span class="entry_type_name entry_type_name_enum">byte</span>
9651
9652 <span class="entry_type_visibility"> [public]</span>
9653
Igor Murashkin6c936c12014-05-13 14:51:49 -07009654
Igor Murashkinca256272014-10-02 15:27:09 -07009655 <span class="entry_type_hwlevel">[legacy] </span>
9656
Igor Murashkin6c936c12014-05-13 14:51:49 -07009657
9658
Zhijun He602d3702014-05-02 17:38:15 -07009659 <ul class="entry_type_enum">
9660 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009661 <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009662 <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
9663categories.<wbr/> The camera device will default to preview-like
Zhijun He602d3702014-05-02 17:38:15 -07009664behavior.<wbr/></p></span>
9665 </li>
9666 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009667 <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009668 <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
9669<p>The precapture trigger may be used to start off a metering
9670w/<wbr/>flash sequence.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -07009671 </li>
9672 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009673 <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07009674 <span class="entry_type_enum_notes"><p>This request is for a still capture-type
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009675use case.<wbr/></p>
9676<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -07009677 </li>
9678 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009679 <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07009680 <span class="entry_type_enum_notes"><p>This request is for a video recording
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009681use case.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -07009682 </li>
9683 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009684 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07009685 <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009686image while recording video) use case.<wbr/></p>
9687<p>The camera device should take the highest-quality image
9688possible (given the other settings) without disrupting the
Eino-Ville Talvala0f0d7952014-10-02 18:27:34 -07009689frame rate of video recording.<wbr/> </p></span>
Zhijun He602d3702014-05-02 17:38:15 -07009690 </li>
9691 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009692 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07009693 <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
9694application will stream full-resolution images and
9695reprocess one or several later for a final
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009696capture.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -07009697 </li>
9698 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009699 <span class="entry_type_enum_name">MANUAL (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07009700 <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009701the applications want to directly control the capture parameters.<wbr/></p>
9702<p>For example,<wbr/> the application may wish to manually control
9703<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>
Zhijun He602d3702014-05-02 17:38:15 -07009704 </li>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -08009705 <li>
9706 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
9707 <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
9708the application will use camera and inertial sensor data to
9709locate and track objects in the world.<wbr/></p>
9710<p>The camera device auto-exposure routine will limit the exposure time
9711of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
9712 </li>
Zhijun He602d3702014-05-02 17:38:15 -07009713 </ul>
9714
9715 </td> <!-- entry_type -->
9716
9717 <td class="entry_description">
9718 <p>Information to the camera device 3A (auto-exposure,<wbr/>
9719auto-focus,<wbr/> auto-white balance) routines about the purpose
9720of this capture,<wbr/> to help the camera device to decide optimal 3A
9721strategy.<wbr/></p>
9722 </td>
9723
9724 <td class="entry_units">
9725 </td>
9726
9727 <td class="entry_range">
Zhijun He602d3702014-05-02 17:38:15 -07009728 </td>
9729
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009730 <td class="entry_hal_version">
9731 <p>3.<wbr/>2</p>
9732 </td>
9733
Zhijun He602d3702014-05-02 17:38:15 -07009734 <td class="entry_tags">
9735 <ul class="entry_tags">
9736 <li><a href="#tag_BC">BC</a></li>
9737 </ul>
9738 </td>
9739
9740 </tr>
9741 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009742 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -07009743 </tr>
9744 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009745 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -07009746 <p>This control (except for MANUAL) is only effective if
9747<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -07009748<p>All intents are supported by all devices,<wbr/> except that:</p>
9749<ul>
9750<li>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
9751PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/></li>
9752<li>MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
9753MANUAL_<wbr/>SENSOR.<wbr/></li>
9754<li>MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
9755MOTION_<wbr/>TRACKING.<wbr/></li>
9756</ul>
Zhijun He602d3702014-05-02 17:38:15 -07009757 </td>
9758 </tr>
9759
9760
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009761 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -07009762 <!-- end of entry -->
9763
9764
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009765 <tr class="entry" id="dynamic_android.control.awbState">
Igor Murashkin6c936c12014-05-13 14:51:49 -07009766 <td class="entry_name
9767 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -08009768 android.<wbr/>control.<wbr/>awb<wbr/>State
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009769 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009770 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -08009771 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009772
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07009773 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009774
Igor Murashkin6c936c12014-05-13 14:51:49 -07009775
Igor Murashkinca256272014-10-02 15:27:09 -07009776 <span class="entry_type_hwlevel">[limited] </span>
9777
Igor Murashkin6c936c12014-05-13 14:51:49 -07009778
9779
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009780 <ul class="entry_type_enum">
9781 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009782 <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009783 <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
9784<p>When a camera device is opened,<wbr/> it starts in this
9785state.<wbr/> This is a transient state,<wbr/> the camera device may
9786skip reporting this state in capture
9787result.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009788 </li>
9789 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009790 <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08009791 <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009792values for the current scene.<wbr/></p>
9793<p>This is a transient state,<wbr/> the camera device
Zhijun He3fc95122014-02-11 17:18:29 -08009794may skip reporting this state in capture result.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009795 </li>
9796 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009797 <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -08009798 <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
Zhijun He92e698d2014-01-13 16:24:31 -08009799current scene.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009800 </li>
9801 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009802 <span class="entry_type_enum_name">LOCKED (v3.2)</span>
Zhijun He92e698d2014-01-13 16:24:31 -08009803 <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009804 </li>
9805 </ul>
9806
9807 </td> <!-- entry_type -->
9808
9809 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -07009810 <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009811 </td>
9812
9813 <td class="entry_units">
9814 </td>
9815
9816 <td class="entry_range">
9817 </td>
9818
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009819 <td class="entry_hal_version">
9820 <p>3.<wbr/>2</p>
9821 </td>
9822
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009823 <td class="entry_tags">
9824 </td>
9825
9826 </tr>
9827 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009828 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009829 </tr>
9830 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009831 <td class="entry_details" colspan="6">
Zhijun He92e698d2014-01-13 16:24:31 -08009832 <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
9833resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
9834or <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
9835the algorithm states to INACTIVE.<wbr/></p>
9836<p>The camera device can do several state transitions between two results,<wbr/> if it is
9837allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
9838a result.<wbr/></p>
9839<p>The state in the result is the state for this image (in sync with this image): if
9840AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
9841be good to use.<wbr/></p>
9842<p>Below are state transition tables for different AWB modes.<wbr/></p>
9843<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
9844<table>
9845<thead>
9846<tr>
9847<th align="center">State</th>
9848<th align="center">Transition Cause</th>
9849<th align="center">New State</th>
9850<th align="center">Notes</th>
9851</tr>
9852</thead>
9853<tbody>
9854<tr>
9855<td align="center">INACTIVE</td>
9856<td align="center"></td>
9857<td align="center">INACTIVE</td>
9858<td align="center">Camera device auto white balance algorithm is disabled</td>
9859</tr>
9860</tbody>
9861</table>
9862<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
9863<table>
9864<thead>
9865<tr>
9866<th align="center">State</th>
9867<th align="center">Transition Cause</th>
9868<th align="center">New State</th>
9869<th align="center">Notes</th>
9870</tr>
9871</thead>
9872<tbody>
9873<tr>
9874<td align="center">INACTIVE</td>
9875<td align="center">Camera device initiates AWB scan</td>
9876<td align="center">SEARCHING</td>
9877<td align="center">Values changing</td>
9878</tr>
9879<tr>
9880<td align="center">INACTIVE</td>
9881<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
9882<td align="center">LOCKED</td>
9883<td align="center">Values locked</td>
9884</tr>
9885<tr>
9886<td align="center">SEARCHING</td>
9887<td align="center">Camera device finishes AWB scan</td>
9888<td align="center">CONVERGED</td>
9889<td align="center">Good values,<wbr/> not changing</td>
9890</tr>
9891<tr>
9892<td align="center">SEARCHING</td>
9893<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
9894<td align="center">LOCKED</td>
9895<td align="center">Values locked</td>
9896</tr>
9897<tr>
9898<td align="center">CONVERGED</td>
9899<td align="center">Camera device initiates AWB scan</td>
9900<td align="center">SEARCHING</td>
9901<td align="center">Values changing</td>
9902</tr>
9903<tr>
9904<td align="center">CONVERGED</td>
9905<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
9906<td align="center">LOCKED</td>
9907<td align="center">Values locked</td>
9908</tr>
9909<tr>
9910<td align="center">LOCKED</td>
9911<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
9912<td align="center">SEARCHING</td>
9913<td align="center">Values not good after unlock</td>
9914</tr>
Zhijun He3fc95122014-02-11 17:18:29 -08009915</tbody>
9916</table>
9917<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
9918without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
9919can be skipped in that manner is called a transient state.<wbr/></p>
9920<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
9921listed in above table,<wbr/> it is also legal for the camera device to skip one or more
9922transient states between two results.<wbr/> See below table for examples:</p>
9923<table>
9924<thead>
9925<tr>
9926<th align="center">State</th>
9927<th align="center">Transition Cause</th>
9928<th align="center">New State</th>
9929<th align="center">Notes</th>
9930</tr>
9931</thead>
9932<tbody>
9933<tr>
9934<td align="center">INACTIVE</td>
9935<td align="center">Camera device finished AWB scan</td>
9936<td align="center">CONVERGED</td>
9937<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
9938</tr>
Zhijun He92e698d2014-01-13 16:24:31 -08009939<tr>
9940<td align="center">LOCKED</td>
9941<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
9942<td align="center">CONVERGED</td>
Zhijun He3fc95122014-02-11 17:18:29 -08009943<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
Zhijun He92e698d2014-01-13 16:24:31 -08009944</tr>
9945</tbody>
9946</table>
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009947 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009948 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08009949
9950
Eino-Ville Talvala0d404952017-11-10 15:13:04 -08009951 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -08009952 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -08009953
9954
Zhijun He602d3702014-05-02 17:38:15 -07009955 <tr class="entry" id="dynamic_android.control.effectMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -07009956 <td class="entry_name
9957 " rowspan="3">
Zhijun He602d3702014-05-02 17:38:15 -07009958 android.<wbr/>control.<wbr/>effect<wbr/>Mode
9959 </td>
9960 <td class="entry_type">
9961 <span class="entry_type_name entry_type_name_enum">byte</span>
9962
9963 <span class="entry_type_visibility"> [public]</span>
9964
Igor Murashkin6c936c12014-05-13 14:51:49 -07009965
Igor Murashkinca256272014-10-02 15:27:09 -07009966 <span class="entry_type_hwlevel">[legacy] </span>
9967
Igor Murashkin6c936c12014-05-13 14:51:49 -07009968
9969
Zhijun He602d3702014-05-02 17:38:15 -07009970 <ul class="entry_type_enum">
9971 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009972 <span class="entry_type_enum_name">OFF (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -07009973 <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
9974 </li>
9975 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009976 <span class="entry_type_enum_name">MONO (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009977 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -07009978 <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009979a single color.<wbr/></p>
9980<p>This will typically be grayscale.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -07009981 </li>
9982 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009983 <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009984 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -07009985 <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
9986are inverted.<wbr/></p></span>
9987 </li>
9988 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009989 <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009990 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -07009991 <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
9992image is wholly or partially reversed in
9993tone.<wbr/></p></span>
9994 </li>
9995 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -08009996 <span class="entry_type_enum_name">SEPIA (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -07009997 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -07009998 <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
9999gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
10000 </li>
10001 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010002 <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010003 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010004 <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
10005discrete regions of tone rather than a continuous
10006gradient of tones.<wbr/></p></span>
10007 </li>
10008 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010009 <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010010 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010011 <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
10012as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
10013 </li>
10014 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010015 <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010016 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010017 <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
10018as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
10019 </li>
10020 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010021 <span class="entry_type_enum_name">AQUA (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010022 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010023 <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
10024 </li>
10025 </ul>
10026
10027 </td> <!-- entry_type -->
10028
10029 <td class="entry_description">
10030 <p>A special color effect to apply.<wbr/></p>
10031 </td>
10032
10033 <td class="entry_units">
10034 </td>
10035
10036 <td class="entry_range">
10037 <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
10038 </td>
10039
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010040 <td class="entry_hal_version">
10041 <p>3.<wbr/>2</p>
10042 </td>
10043
Zhijun He602d3702014-05-02 17:38:15 -070010044 <td class="entry_tags">
10045 <ul class="entry_tags">
10046 <li><a href="#tag_BC">BC</a></li>
10047 </ul>
10048 </td>
10049
10050 </tr>
10051 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010052 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -070010053 </tr>
10054 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010055 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -070010056 <p>When this mode is set,<wbr/> a color effect will be applied
10057to images produced by the camera device.<wbr/> The interpretation
10058and implementation of these color effects is left to the
10059implementor of the camera device,<wbr/> and should not be
10060depended on to be consistent (or present) across all
10061devices.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -070010062 </td>
10063 </tr>
10064
10065
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010066 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -070010067 <!-- end of entry -->
10068
10069
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010070 <tr class="entry" id="dynamic_android.control.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070010071 <td class="entry_name
10072 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080010073 android.<wbr/>control.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080010074 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010075 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080010076 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010077
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070010078 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010079
Igor Murashkin6c936c12014-05-13 14:51:49 -070010080
Igor Murashkinca256272014-10-02 15:27:09 -070010081 <span class="entry_type_hwlevel">[legacy] </span>
10082
Igor Murashkin6c936c12014-05-13 14:51:49 -070010083
10084
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010085 <ul class="entry_type_enum">
10086 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010087 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010088 <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
10089<p>All control by the device's metering and focusing (3A)
10090routines is disabled,<wbr/> and no other settings in
10091android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
10092<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
10093device to select post-processing values for processing
10094blocks that do not allow for manual control,<wbr/> or are not
10095exposed by the camera API.<wbr/></p>
10096<p>However,<wbr/> the camera device's 3A routines may continue to
10097collect statistics and update their internal state so that
10098when control is switched to AUTO mode,<wbr/> good control values
10099can be immediately applied.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010100 </li>
10101 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010102 <span class="entry_type_enum_name">AUTO (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010103 <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
10104<p>Manual control of capture parameters is disabled.<wbr/> All
Igor Murashkina10351a2014-01-15 17:05:22 -080010105controls in android.<wbr/>control.<wbr/>* besides sceneMode take
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010106effect.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010107 </li>
10108 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010109 <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -080010110 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010111 <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
10112<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
10113control.<wbr/>afMode controls; the camera device will ignore
10114those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
Zhijun He1a71d0d2015-06-16 19:44:18 -070010115FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
Eino-Ville Talvala8565fea2015-06-24 15:17:09 -070010116This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
Zhijun He1a71d0d2015-06-16 19:44:18 -070010117<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010118contain some modes other than DISABLED).<wbr/></p>
10119<p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010120 </li>
Zhijun He4412faa2014-02-06 00:28:22 -080010121 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010122 <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -080010123 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He4412faa2014-02-06 00:28:22 -080010124 <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
10125used by camera device background auto-exposure,<wbr/> auto-white balance and
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010126auto-focus algorithms (3A) to update their statistics.<wbr/></p>
10127<p>Specifically,<wbr/> the 3A routines are locked to the last
10128values set from a request with AUTO,<wbr/> OFF,<wbr/> or
10129USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
10130collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
10131discarded by the camera device.<wbr/></p></span>
Zhijun He4412faa2014-02-06 00:28:22 -080010132 </li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010133 <li>
10134 <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span>
10135 <span class="entry_type_enum_optional">[optional]</span>
10136 <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p>
10137<p>When extended scene mode is on,<wbr/> the camera device may override certain control
10138parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and
10139quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level
10140are guaranteed.<wbr/></p>
10141<p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/>
10142android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes
10143contains some modes other than DISABLED).<wbr/></p></span>
10144 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010145 </ul>
10146
10147 </td> <!-- entry_type -->
10148
10149 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070010150 <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
Zhijun He25b8ac52014-02-24 09:49:37 -080010151routines.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010152 </td>
10153
10154 <td class="entry_units">
10155 </td>
10156
10157 <td class="entry_range">
Yin-Chia Yehc4d5f372015-01-28 13:18:31 -080010158 <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010159 </td>
10160
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010161 <td class="entry_hal_version">
10162 <p>3.<wbr/>2</p>
10163 </td>
10164
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080010165 <td class="entry_tags">
10166 <ul class="entry_tags">
10167 <li><a href="#tag_BC">BC</a></li>
10168 </ul>
10169 </td>
10170
10171 </tr>
10172 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010173 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080010174 </tr>
10175 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010176 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070010177 <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
Zhijun Hef90eeaf2014-01-16 12:13:35 -080010178by the camera device is disabled.<wbr/> The application must set the fields for
Igor Murashkin0b080452013-12-27 15:30:25 -080010179capture parameters itself.<wbr/></p>
10180<p>When set to AUTO,<wbr/> the individual algorithm controls in
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080010181android.<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>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010182<p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010183android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010184implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/>
10185SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode
Eino-Ville Talvala0d404952017-11-10 15:13:04 -0800101863A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
Zhijun He4412faa2014-02-06 00:28:22 -080010187<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
10188is that this frame will not be used by camera device background 3A statistics
10189update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
10190where the application doesn't want a 3A manual control capture to affect
10191the subsequent auto 3A capture results.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010192 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080010193 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080010194
10195
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010196 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080010197 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080010198
Zhijun He602d3702014-05-02 17:38:15 -070010199
10200 <tr class="entry" id="dynamic_android.control.sceneMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070010201 <td class="entry_name
10202 " rowspan="5">
Zhijun He602d3702014-05-02 17:38:15 -070010203 android.<wbr/>control.<wbr/>scene<wbr/>Mode
10204 </td>
10205 <td class="entry_type">
10206 <span class="entry_type_name entry_type_name_enum">byte</span>
10207
10208 <span class="entry_type_visibility"> [public]</span>
10209
Igor Murashkin6c936c12014-05-13 14:51:49 -070010210
Igor Murashkinca256272014-10-02 15:27:09 -070010211 <span class="entry_type_hwlevel">[legacy] </span>
10212
Igor Murashkin6c936c12014-05-13 14:51:49 -070010213
10214
Zhijun He602d3702014-05-02 17:38:15 -070010215 <ul class="entry_type_enum">
10216 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010217 <span class="entry_type_enum_name">DISABLED (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -070010218 <span class="entry_type_enum_value">0</span>
10219 <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
10220 </li>
10221 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010222 <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
Zhijun He602d3702014-05-02 17:38:15 -070010223 <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
10224detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010225auto-exposure routines.<wbr/></p>
10226<p>If face detection statistics are disabled
10227(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/>
Zhijun He602d3702014-05-02 17:38:15 -070010228this should still operate correctly (but will not return
10229face detection statistics to the framework).<wbr/></p>
10230<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
10231<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>
10232remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
10233 </li>
10234 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010235 <span class="entry_type_enum_name">ACTION (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010236 <span class="entry_type_enum_optional">[optional]</span>
10237 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
10238<p>Similar to SPORTS.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -070010239 </li>
10240 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010241 <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010242 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010243 <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
10244 </li>
10245 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010246 <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010247 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010248 <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
10249 </li>
10250 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010251 <span class="entry_type_enum_name">NIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010252 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010253 <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
10254 </li>
10255 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010256 <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010257 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010258 <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
10259settings.<wbr/></p></span>
10260 </li>
10261 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010262 <span class="entry_type_enum_name">THEATRE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010263 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010264 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
10265remain off.<wbr/></p></span>
10266 </li>
10267 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010268 <span class="entry_type_enum_name">BEACH (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010269 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010270 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
10271 </li>
10272 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010273 <span class="entry_type_enum_name">SNOW (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010274 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010275 <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
10276 </li>
10277 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010278 <span class="entry_type_enum_name">SUNSET (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010279 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010280 <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
10281 </li>
10282 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010283 <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010284 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010285 <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
10286device motion (for example: due to hand shake).<wbr/></p></span>
10287 </li>
10288 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010289 <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010290 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010291 <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
10292 </li>
10293 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010294 <span class="entry_type_enum_name">SPORTS (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010295 <span class="entry_type_enum_optional">[optional]</span>
10296 <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
10297<p>Similar to ACTION.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -070010298 </li>
10299 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010300 <span class="entry_type_enum_name">PARTY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010301 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010302 <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
10303people.<wbr/></p></span>
10304 </li>
10305 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010306 <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010307 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010308 <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
Shuzhen Wang36ad8802018-10-10 17:58:13 -070010309is a candle.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -070010310 </li>
10311 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010312 <span class="entry_type_enum_name">BARCODE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010313 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He602d3702014-05-02 17:38:15 -070010314 <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
10315for use by camera applications that wish to read the
10316barcode value.<wbr/></p></span>
10317 </li>
Zhijun He17f2d2c2014-06-10 18:21:34 -070010318 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010319 <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
Zhijun He7defc682015-05-22 17:04:15 -070010320 <span class="entry_type_enum_deprecated">[deprecated]</span>
Zhijun He17f2d2c2014-06-10 18:21:34 -070010321 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070010322 <span class="entry_type_enum_hidden">[java_public]</span>
Eino-Ville Talvalaf55c1a82015-06-30 13:32:09 -070010323 <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>
10324and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
Zhijun He7defc682015-05-22 17:04:15 -070010325for high speed video recording.<wbr/></p>
10326<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
Zhijun He17f2d2c2014-06-10 18:21:34 -070010327<p>The supported high speed video sizes and fps ranges are specified in
10328<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
10329output frame rates,<wbr/> the application is only allowed to select video size
10330and fps range combinations listed in this static metadata.<wbr/> The fps range
10331can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
10332<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
10333ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
10334controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
10335and post-processing parameters is possible.<wbr/> All other controls operate the
10336same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
10337android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
10338<ul>
10339<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
10340<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
10341<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
10342<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
10343<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
10344<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
10345<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
10346<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
10347<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
10348<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
Shuzhen Wangb6149792019-11-07 15:59:22 -080010349<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
Zhijun He17f2d2c2014-06-10 18:21:34 -070010350</ul>
10351<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
10352<ul>
10353<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>
10354<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
10355<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
10356<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
10357</ul>
10358<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
10359be lower than what camera can output,<wbr/> depending on the destination Surfaces for
10360the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
10361the application need check if the video encoder is capable of supporting the
10362high frame rate for a given video size,<wbr/> or it will end up with lower recording
10363frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
10364rate will be bounded by the screen refresh rate.<wbr/></p>
10365<p>The camera device will only support up to 2 output high speed streams
10366(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
10367in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
10368<ul>
10369<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
10370format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
10371min(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>
10372<li>The stream sizes are selected from the sizes reported by
10373<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
10374<li>No processed non-stalling or raw streams are configured.<wbr/></li>
10375</ul>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070010376<p>When above conditions are NOT satisfied,<wbr/> the controls of this mode and
Zhijun He17f2d2c2014-06-10 18:21:34 -070010377<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/>
10378the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070010379and the returned capture result metadata will give the fps range chosen
Zhijun He17f2d2c2014-06-10 18:21:34 -070010380by the camera device.<wbr/></p>
10381<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
10382reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
10383the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
10384 </li>
Ruben Brunk17b1dd52014-08-28 17:16:38 -070010385 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010386 <span class="entry_type_enum_name">HDR (v3.2)</span>
Ruben Brunk17b1dd52014-08-28 17:16:38 -070010387 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala14cd0982014-12-05 10:46:45 -080010388 <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
10389<p>In this scene mode,<wbr/> the camera device captures images
10390that keep a larger range of scene illumination levels
10391visible in the final image.<wbr/> For example,<wbr/> when taking a
10392picture of a object in front of a bright window,<wbr/> both
10393the object and the scene through the window may be
10394visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
10395one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
10396HDR mode generally takes much longer to capture a single
10397image,<wbr/> has no user control,<wbr/> and may have other artifacts
10398depending on the HDR method used.<wbr/></p>
10399<p>Therefore,<wbr/> HDR captures operate at a much slower rate
10400than regular captures.<wbr/></p>
10401<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
10402is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
10403STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
10404using a high dynamic range capture technique.<wbr/> On LEGACY
10405devices,<wbr/> captures that target a JPEG-format output will
10406be captured with HDR,<wbr/> and the capture intent is not
10407relevant.<wbr/></p>
10408<p>The HDR capture may involve the device capturing a burst
10409of images internally and combining them into one,<wbr/> or it
10410may involve the device using specialized high dynamic
10411range capture hardware.<wbr/> In all cases,<wbr/> a single image is
10412produced in response to a capture request submitted
10413while in HDR mode.<wbr/></p>
10414<p>Since substantial post-processing is generally needed to
Eino-Ville Talvala1f883d42016-04-04 10:47:43 -070010415produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
10416outputs are supported for LIMITED/<wbr/>FULL device HDR
10417captures,<wbr/> and only JPEG outputs are supported for LEGACY
10418HDR captures.<wbr/> Using a RAW output for HDR capture is not
10419supported.<wbr/></p>
10420<p>Some devices may also support always-on HDR,<wbr/> which
10421applies HDR processing at full frame rate.<wbr/> For these
10422devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
10423produce an HDR output with no frame rate impact compared
10424to normal operation,<wbr/> though the quality may be lower
10425than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
10426<p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
10427or capture intents,<wbr/> the images captured will be as if
10428the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
Ruben Brunk17b1dd52014-08-28 17:16:38 -070010429 </li>
Zhijun He1a71d0d2015-06-16 19:44:18 -070010430 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010431 <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
Zhijun He1a71d0d2015-06-16 19:44:18 -070010432 <span class="entry_type_enum_optional">[optional]</span>
10433 <span class="entry_type_enum_hidden">[hidden]</span>
10434 <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
Andy Huibersce1319b2015-07-11 08:36:42 -070010435device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
Zhijun He1a71d0d2015-06-16 19:44:18 -070010436under low light conditions.<wbr/></p>
10437<p>The camera device may be tuned to expose the images in a reduced
10438sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
10439if 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/>
10440the camera device auto-exposure routine tuning process may limit the actual
Andy Huibersce1319b2015-07-11 08:36:42 -070010441exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070010442excessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
Zhijun He1a71d0d2015-06-16 19:44:18 -070010443low light may be under-exposed when the sensor max exposure time (bounded by the
10444<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
Andy Huibersce1319b2015-07-11 08:36:42 -070010445ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
Zhijun He1a71d0d2015-06-16 19:44:18 -070010446camera device auto-exposure routine to increase the sensitivity up to the max
10447sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
10448dark and the max exposure time is reached.<wbr/> The captured images may be noisier
Andy Huibersce1319b2015-07-11 08:36:42 -070010449compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
Zhijun He1a71d0d2015-06-16 19:44:18 -070010450recommended that the application only use this scene mode when it is capable of
10451reducing the noise level of the captured images.<wbr/></p>
10452<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
10453<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>
10454remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
10455 </li>
Yin-Chia Yehff19a622016-03-09 14:44:14 -080010456 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010457 <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
Yin-Chia Yehff19a622016-03-09 14:44:14 -080010458 <span class="entry_type_enum_optional">[optional]</span>
10459 <span class="entry_type_enum_hidden">[hidden]</span>
10460 <span class="entry_type_enum_value">100</span>
10461 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
10462<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
10463customized scene modes.<wbr/></p></span>
10464 </li>
10465 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010466 <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
Yin-Chia Yehff19a622016-03-09 14:44:14 -080010467 <span class="entry_type_enum_optional">[optional]</span>
10468 <span class="entry_type_enum_hidden">[hidden]</span>
10469 <span class="entry_type_enum_value">127</span>
10470 <span class="entry_type_enum_notes"><p>Scene mode values within the range of
10471<code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
10472customized scene modes.<wbr/></p></span>
10473 </li>
Zhijun He602d3702014-05-02 17:38:15 -070010474 </ul>
10475
10476 </td> <!-- entry_type -->
10477
10478 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070010479 <p>Control for which scene mode is currently active.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -070010480 </td>
10481
10482 <td class="entry_units">
10483 </td>
10484
10485 <td class="entry_range">
10486 <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
10487 </td>
10488
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010489 <td class="entry_hal_version">
10490 <p>3.<wbr/>2</p>
10491 </td>
10492
Zhijun He602d3702014-05-02 17:38:15 -070010493 <td class="entry_tags">
10494 <ul class="entry_tags">
10495 <li><a href="#tag_BC">BC</a></li>
10496 </ul>
10497 </td>
10498
10499 </tr>
10500 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010501 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -070010502 </tr>
10503 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010504 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070010505 <p>Scene modes are custom camera modes optimized for a certain set of conditions and
10506capture settings.<wbr/></p>
10507<p>This is the mode that that is active when
Zhijun He1a71d0d2015-06-16 19:44:18 -070010508<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
10509disable <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>
10510while in use.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -070010511<p>The interpretation and implementation of these scene modes is left
10512to the implementor of the camera device.<wbr/> Their behavior will not be
10513consistent across all devices,<wbr/> and any given device may only implement
10514a subset of these modes.<wbr/></p>
10515 </td>
10516 </tr>
10517
10518 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010519 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He602d3702014-05-02 17:38:15 -070010520 </tr>
10521 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010522 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -070010523 <p>HAL implementations that include scene modes are expected to provide
10524the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
10525<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
10526<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010527<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
10528HAL must list supported video size and fps range in
10529<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/>
10530if the HAL has two different sensor configurations for normal streaming mode and high
10531speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
10532HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
10533HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
Zhijun He7defc682015-05-22 17:04:15 -070010534<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
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070010535capability defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -070010536 </td>
10537 </tr>
10538
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010539 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -070010540 <!-- end of entry -->
10541
10542
10543 <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070010544 <td class="entry_name
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -070010545 " rowspan="5">
Zhijun He602d3702014-05-02 17:38:15 -070010546 android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
10547 </td>
10548 <td class="entry_type">
10549 <span class="entry_type_name entry_type_name_enum">byte</span>
10550
10551 <span class="entry_type_visibility"> [public]</span>
10552
Igor Murashkin6c936c12014-05-13 14:51:49 -070010553
Igor Murashkinca256272014-10-02 15:27:09 -070010554 <span class="entry_type_hwlevel">[legacy] </span>
10555
Igor Murashkin6c936c12014-05-13 14:51:49 -070010556
10557
Zhijun He602d3702014-05-02 17:38:15 -070010558 <ul class="entry_type_enum">
10559 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010560 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010561 <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -070010562 </li>
10563 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010564 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010565 <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -070010566 </li>
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -070010567 <li>
10568 <span class="entry_type_enum_name">PREVIEW_STABILIZATION (v3.8)</span>
10569 <span class="entry_type_enum_optional">[optional]</span>
10570 <span class="entry_type_enum_notes"><p>Preview stabilization,<wbr/> where the preview in addition to all other non-RAW streams are
10571stabilized with the same quality of stabilization,<wbr/> is enabled.<wbr/> This mode aims to give
10572clients a 'what you see is what you get' effect.<wbr/> In this mode,<wbr/> the FoV reduction will
10573be a maximum of 20 % both horizontally and vertically
10574(10% from left,<wbr/> right,<wbr/> top,<wbr/> bottom) for the given zoom ratio /<wbr/> crop region.<wbr/>
10575The resultant FoV will also be the same across all processed streams
10576(that have the same aspect ratio).<wbr/></p></span>
10577 </li>
Zhijun He602d3702014-05-02 17:38:15 -070010578 </ul>
10579
10580 </td> <!-- entry_type -->
10581
10582 <td class="entry_description">
10583 <p>Whether video stabilization is
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070010584active.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -070010585 </td>
10586
10587 <td class="entry_units">
10588 </td>
10589
10590 <td class="entry_range">
10591 </td>
10592
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010593 <td class="entry_hal_version">
10594 <p>3.<wbr/>2</p>
10595 </td>
10596
Zhijun He602d3702014-05-02 17:38:15 -070010597 <td class="entry_tags">
10598 <ul class="entry_tags">
10599 <li><a href="#tag_BC">BC</a></li>
10600 </ul>
10601 </td>
10602
10603 </tr>
10604 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010605 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -070010606 </tr>
10607 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010608 <td class="entry_details" colspan="6">
Jianing Wei2d950892015-09-29 14:01:43 -070010609 <p>Video stabilization automatically warps images from
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070010610the camera in order to stabilize motion between consecutive frames.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070010611<p>If enabled,<wbr/> video stabilization can modify the
Zhijun He91449c82014-06-12 10:43:32 -070010612<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070010613<p>Switching between different video stabilization modes may take several
10614frames to initialize,<wbr/> the camera device will report the current mode
10615in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
10616the video stabilization modes in the first several capture results may
10617still be "OFF",<wbr/> and it will become "ON" when the initialization is
10618done.<wbr/></p>
Jianing Wei2d950892015-09-29 14:01:43 -070010619<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
10620stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
10621that an output targeting a MediaRecorder or MediaCodec will be stabilized if
10622the recording resolution is less than or equal to 1920 x 1080 (width less than
10623or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
10624frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult
10625<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
10626OFF if the recording output is not stabilized,<wbr/> or if there are no output
10627Surface types that can be stabilized.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070010628<p>If a camera device supports both this mode and OIS
10629(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
10630produce undesirable interaction,<wbr/> so it is recommended not to enable
10631both at the same time.<wbr/></p>
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -070010632<p>If video stabilization is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
10633<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose
10634to turn on hardware based image stabilization in addition to software based stabilization
10635if it deems that appropriate.<wbr/>
10636This key may be a part of the available session keys,<wbr/> which camera clients may
10637query via
10638<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/>
10639If this is the case,<wbr/> changing this key over the life-time of a capture session may
10640cause delays /<wbr/> glitches.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -070010641 </td>
10642 </tr>
10643
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -070010644 <tr class="entries_header">
10645 <th class="th_details" colspan="6">HAL Implementation Details</th>
10646 </tr>
10647 <tr class="entry_cont">
10648 <td class="entry_details" colspan="6">
10649 <p>When this key is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
Jayant Chowdhary316b5312021-12-15 14:35:14 -080010650for non-stalling buffers returned without errors,<wbr/> the time interval between notify readout
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -070010651timestamp and when buffers are returned to the camera framework,<wbr/> must be no more than 1
10652extra frame interval,<wbr/> relative to the case where this key is set to "OFF".<wbr/></p>
10653<p>This is in order for look-ahead time period to be short enough
10654for preview to match video recording for real-time usage.<wbr/></p>
10655 </td>
10656 </tr>
Zhijun He602d3702014-05-02 17:38:15 -070010657
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010658 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -070010659 <!-- end of entry -->
10660
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080010661
10662 <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
10663 <td class="entry_name
10664 " rowspan="3">
10665 android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
10666 </td>
10667 <td class="entry_type">
10668 <span class="entry_type_name">int32</span>
10669
10670 <span class="entry_type_visibility"> [public]</span>
10671
10672
10673
10674
10675
10676
10677 </td> <!-- entry_type -->
10678
10679 <td class="entry_description">
Yin-Chia Yeh84a51a42016-04-11 16:37:49 -070010680 <p>The amount of additional sensitivity boost applied to output images
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080010681after RAW sensor data is captured.<wbr/></p>
10682 </td>
10683
10684 <td class="entry_units">
10685 ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
10686 </td>
10687
10688 <td class="entry_range">
10689 <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
10690 </td>
10691
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010692 <td class="entry_hal_version">
10693 <p>3.<wbr/>2</p>
10694 </td>
10695
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080010696 <td class="entry_tags">
10697 </td>
10698
10699 </tr>
10700 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010701 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080010702 </tr>
10703 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010704 <td class="entry_details" colspan="6">
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080010705 <p>Some camera devices support additional digital sensitivity boosting in the
10706camera processing pipeline after sensor RAW image is captured.<wbr/>
10707Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
10708have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
Yin-Chia Yeh84a51a42016-04-11 16:37:49 -070010709<p>This key will be <code>null</code> for devices that do not support any RAW format
10710outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
10711present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
10712list <code>100</code> in this key.<wbr/></p>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080010713<p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
10714boost to the nearest supported value.<wbr/>
10715The final boost value used will be available in the output capture result.<wbr/></p>
10716<p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
10717of such device will have the total sensitivity of
Yin-Chia Yeh5a12e622016-01-26 13:26:56 -080010718<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>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080010719The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
10720<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
10721OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
10722 </td>
10723 </tr>
10724
10725
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010726 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080010727 <!-- end of entry -->
10728
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010729
10730 <tr class="entry" id="dynamic_android.control.enableZsl">
10731 <td class="entry_name
10732 " rowspan="5">
10733 android.<wbr/>control.<wbr/>enable<wbr/>Zsl
10734 </td>
10735 <td class="entry_type">
10736 <span class="entry_type_name entry_type_name_enum">byte</span>
10737
10738 <span class="entry_type_visibility"> [public as boolean]</span>
10739
10740
10741
10742
10743
10744 <ul class="entry_type_enum">
10745 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010746 <span class="entry_type_enum_name">FALSE (v3.2)</span>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010747 <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
10748after previous requests.<wbr/></p></span>
10749 </li>
10750 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010751 <span class="entry_type_enum_name">TRUE (v3.2)</span>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010752 <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
10753captured before previous requests.<wbr/></p></span>
10754 </li>
10755 </ul>
10756
10757 </td> <!-- entry_type -->
10758
10759 <td class="entry_description">
10760 <p>Allow camera device to enable zero-shutter-lag mode for requests with
10761<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
10762 </td>
10763
10764 <td class="entry_units">
10765 </td>
10766
10767 <td class="entry_range">
10768 </td>
10769
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010770 <td class="entry_hal_version">
10771 <p>3.<wbr/>2</p>
10772 </td>
10773
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010774 <td class="entry_tags">
10775 </td>
10776
10777 </tr>
10778 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010779 <th class="th_details" colspan="6">Details</th>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010780 </tr>
10781 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010782 <td class="entry_details" colspan="6">
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010783 <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
10784STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
10785produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
10786<a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
10787Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
10788compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
10789capture intents.<wbr/></p>
10790<p>For example,<wbr/> when requests are submitted in the following order:
10791 Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
10792 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>
10793<p>The output images for request B may have contents captured before the output images for
10794request A,<wbr/> and the result metadata for request B may be older than the result metadata for
10795request A.<wbr/></p>
Chien-Yu Chen47272802017-04-18 15:17:15 -070010796<p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
10797the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
10798<p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
10799TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
10800<code>false</code> if present.<wbr/></p>
10801<p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
10802capture templates is always <code>false</code> if present.<wbr/></p>
Chien-Yu Chen853e0dd2017-05-03 12:17:47 -070010803<p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010804 </td>
10805 </tr>
10806
10807 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010808 <th class="th_details" colspan="6">HAL Implementation Details</th>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010809 </tr>
10810 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010811 <td class="entry_details" colspan="6">
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010812 <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
10813capture intent.<wbr/></p>
10814 </td>
10815 </tr>
10816
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080010817 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Chien-Yu Chen5e46b0a2017-01-09 15:55:06 -080010818 <!-- end of entry -->
10819
Chien-Yu Chenb8c68282017-11-27 16:12:38 -080010820
10821 <tr class="entry" id="dynamic_android.control.afSceneChange">
10822 <td class="entry_name
10823 " rowspan="3">
10824 android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
10825 </td>
10826 <td class="entry_type">
Chien-Yu Chenc357faa2018-01-19 10:50:17 -080010827 <span class="entry_type_name entry_type_name_enum">byte</span>
Chien-Yu Chenb8c68282017-11-27 16:12:38 -080010828
10829 <span class="entry_type_visibility"> [public]</span>
10830
10831
10832
10833
10834
10835 <ul class="entry_type_enum">
10836 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010837 <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
Chien-Yu Chenb8c68282017-11-27 16:12:38 -080010838 <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
10839 </li>
10840 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080010841 <span class="entry_type_enum_name">DETECTED (v3.3)</span>
Chien-Yu Chenb8c68282017-11-27 16:12:38 -080010842 <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
10843 </li>
10844 </ul>
10845
10846 </td> <!-- entry_type -->
10847
10848 <td class="entry_description">
10849 <p>Whether a significant scene change is detected within the currently-set AF
10850region(s).<wbr/></p>
10851 </td>
10852
10853 <td class="entry_units">
10854 </td>
10855
10856 <td class="entry_range">
10857 </td>
10858
10859 <td class="entry_hal_version">
10860 <p>3.<wbr/>3</p>
10861 </td>
10862
10863 <td class="entry_tags">
10864 </td>
10865
10866 </tr>
10867 <tr class="entries_header">
10868 <th class="th_details" colspan="6">Details</th>
10869 </tr>
10870 <tr class="entry_cont">
10871 <td class="entry_details" colspan="6">
10872 <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
10873such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
10874significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
10875result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
10876to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
Chien-Yu Chenb8c68282017-11-27 16:12:38 -080010877<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>
10878 </td>
10879 </tr>
10880
10881
10882 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10883 <!-- end of entry -->
10884
Shuzhen Wanga1725492019-07-08 15:03:24 -070010885
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010886 <tr class="entry" id="dynamic_android.control.extendedSceneMode">
Shuzhen Wanga1725492019-07-08 15:03:24 -070010887 <td class="entry_name
10888 " rowspan="3">
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010889 android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode
Shuzhen Wanga1725492019-07-08 15:03:24 -070010890 </td>
10891 <td class="entry_type">
10892 <span class="entry_type_name entry_type_name_enum">byte</span>
10893
10894 <span class="entry_type_visibility"> [public]</span>
10895
10896
10897
10898
10899
10900 <ul class="entry_type_enum">
10901 <li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010902 <span class="entry_type_enum_name">DISABLED (v3.5)</span>
10903 <span class="entry_type_enum_value">0</span>
10904 <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span>
Shuzhen Wanga1725492019-07-08 15:03:24 -070010905 </li>
10906 <li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010907 <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span>
Shuzhen Wanga1725492019-07-08 15:03:24 -070010908 <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/>
10909JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the
10910extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/>
10911This mode should be used in high quality still capture use case.<wbr/></p></span>
10912 </li>
10913 <li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010914 <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span>
Shuzhen Wanga1725492019-07-08 15:03:24 -070010915 <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/>
10916and the effect is applied to all processed streams no larger than the maximum
10917streaming dimension.<wbr/> This mode should be used if performance and power are a
10918priority,<wbr/> such as video recording.<wbr/></p></span>
10919 </li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010920 <li>
10921 <span class="entry_type_enum_name">VENDOR_START (v3.5)</span>
10922 <span class="entry_type_enum_hidden">[hidden]</span>
10923 <span class="entry_type_enum_value">0x40</span>
10924 <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span>
10925 </li>
Shuzhen Wanga1725492019-07-08 15:03:24 -070010926 </ul>
10927
10928 </td> <!-- entry_type -->
10929
10930 <td class="entry_description">
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010931 <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -070010932 </td>
10933
10934 <td class="entry_units">
10935 </td>
10936
10937 <td class="entry_range">
10938 </td>
10939
10940 <td class="entry_hal_version">
10941 <p>3.<wbr/>5</p>
10942 </td>
10943
10944 <td class="entry_tags">
10945 </td>
10946
10947 </tr>
10948 <tr class="entries_header">
10949 <th class="th_details" colspan="6">Details</th>
10950 </tr>
10951 <tr class="entry_cont">
10952 <td class="entry_details" colspan="6">
10953 <p>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in
10954focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010955<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra
Shuzhen Wanga1725492019-07-08 15:03:24 -070010956processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when
10957capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010958<p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -070010959<ul>
10960<li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of
10961BURST_<wbr/>CAPTURE must still be met.<wbr/></li>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010962<li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode
10963(queried via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES">Camera<wbr/>Characteristics#CONTROL_<wbr/>AVAILABLE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE_<wbr/>CAPABILITIES</a>)
Shuzhen Wanga1725492019-07-08 15:03:24 -070010964will have preview bokeh effect applied.<wbr/></li>
10965</ul>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010966<p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's
Shuzhen Wanga1725492019-07-08 15:03:24 -070010967maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not
10968be available for streams larger than the maximum streaming dimension.<wbr/></p>
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010969<p>Switching between different extended scene modes may involve reconfiguration of the camera
Shuzhen Wanga1725492019-07-08 15:03:24 -070010970pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the
10971available session keys queried via
10972<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -070010973<p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras
10974with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device
Shuzhen Wang327c86e2020-03-16 11:39:27 -070010975may override <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the field of
10976view may be smaller than when bokeh mode is off.<wbr/></p>
Shuzhen Wanga1725492019-07-08 15:03:24 -070010977 </td>
10978 </tr>
10979
10980
10981 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10982 <!-- end of entry -->
10983
Shuzhen Wangb6149792019-11-07 15:59:22 -080010984
10985 <tr class="entry" id="dynamic_android.control.zoomRatio">
10986 <td class="entry_name
10987 " rowspan="5">
10988 android.<wbr/>control.<wbr/>zoom<wbr/>Ratio
10989 </td>
10990 <td class="entry_type">
10991 <span class="entry_type_name">float</span>
10992
10993 <span class="entry_type_visibility"> [public]</span>
10994
10995
10996 <span class="entry_type_hwlevel">[limited] </span>
10997
10998
10999
11000
11001 </td> <!-- entry_type -->
11002
11003 <td class="entry_description">
11004 <p>The desired zoom ratio</p>
11005 </td>
11006
11007 <td class="entry_units">
11008 </td>
11009
11010 <td class="entry_range">
11011 <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p>
11012 </td>
11013
11014 <td class="entry_hal_version">
11015 <p>3.<wbr/>5</p>
11016 </td>
11017
11018 <td class="entry_tags">
11019 </td>
11020
11021 </tr>
11022 <tr class="entries_header">
11023 <th class="th_details" colspan="6">Details</th>
11024 </tr>
11025 <tr class="entry_cont">
11026 <td class="entry_details" colspan="6">
Shuzhen Wang37705612020-09-14 11:40:07 -070011027 <p>Instead of using <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> for zoom,<wbr/> the application can now choose to
11028use this tag to specify the desired zoom level.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080011029<p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can
Shuzhen Wangd36ef432020-03-12 21:36:18 -070011030be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may
11031contain more than one lens with different focal lengths,<wbr/> and the user can use optical
Eino-Ville Talvalaa5213a22020-05-10 16:57:36 -070011032zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p>
11033<ul>
11034<li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides
11035 better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li>
11036<li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas
11037 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li>
11038</ul>
Shuzhen Wangd36ef432020-03-12 21:36:18 -070011039<p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/>
11040and output streams,<wbr/> for a hypothetical camera device with an active array of size
11041<code>(2000,<wbr/>1500)</code>.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080011042<ul>
Shuzhen Wangd36ef432020-03-12 21:36:18 -070011043<li>Camera Configuration:<ul>
11044<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
11045<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
11046<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
Shuzhen Wangb6149792019-11-07 15:59:22 -080011047</ul>
Shuzhen Wangd36ef432020-03-12 21:36:18 -070011048</li>
11049<li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul>
11050<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
11051<li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li>
11052</ul>
11053</li>
11054<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul>
11055<li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li>
11056<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li>
11057</ul>
11058</li>
11059<li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul>
11060<li>Zoomed field of view: 1/<wbr/>4 of original field of view</li>
11061<li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li>
11062<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li>
11063<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li>
11064<li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li>
11065</ul>
11066</li>
11067<li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul>
11068<li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li>
11069<li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li>
11070<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li>
11071<li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li>
11072<li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li>
11073</ul>
11074</li>
11075</ul>
11076<p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the
11077effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/>
11078activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/>
11079This coordinate system change isn't applicable to RAW capture and its related
11080metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p>
11081<p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is
11082the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p>
11083<ul>
11084<li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li>
11085<li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li>
11086</ul>
11087<p>If the application intends to set aeRegions to be top-left quarter of the viewfinder
11088field-of-view,<wbr/> the <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a> should be set to (0,<wbr/> 0,<wbr/> 1000,<wbr/> 750) with
Shuzhen Wangb6149792019-11-07 15:59:22 -080011089zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent
Shuzhen Wangd36ef432020-03-12 21:36:18 -070011090region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't
Shuzhen Wangb6149792019-11-07 15:59:22 -080011091explicitly set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> its value defaults to 1.<wbr/>0.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080011092<p>One limitation of controlling zoom using zoomRatio is that the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
11093must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no
Shuzhen Wang0ca63162020-11-30 20:11:27 -080011094FREEFORM cropping can be used with <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> other than 1.<wbr/>0.<wbr/> If
11095<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is not 1.<wbr/>0,<wbr/> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is set to be
11096windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be
11097the active array.<wbr/></p>
Shuzhen Wangbd3ad5f2021-06-30 16:09:35 -070011098<p>In the capture request,<wbr/> if the application sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to a
11099value != 1.<wbr/>0,<wbr/> the <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the capture result reflects the
11100effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
11101adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application
11102sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> or does not set it at all,<wbr/> the
11103<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the result metadata will also be 1.<wbr/>0.<wbr/></p>
11104<p>When the application requests a physical stream for a logical multi-camera,<wbr/> the
11105<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in the physical camera result metadata will be 1.<wbr/>0,<wbr/> and
11106the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag reflects the amount of zoom and crop done by the
11107physical camera device.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080011108 </td>
11109 </tr>
11110
11111 <tr class="entries_header">
11112 <th class="th_details" colspan="6">HAL Implementation Details</th>
11113 </tr>
11114 <tr class="entry_cont">
11115 <td class="entry_details" colspan="6">
11116 <p>For all capture request templates,<wbr/> this field must be set to 1.<wbr/>0 in order to have
11117consistent field of views between different modes.<wbr/></p>
11118 </td>
11119 </tr>
11120
11121 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11122 <!-- end of entry -->
11123
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011124
11125
11126 <!-- end of kind -->
11127 </tbody>
11128
11129 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011130 <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011131
11132
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011133 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011134
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011135 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011136 <tr>
11137 <th class="th_name">Property Name</th>
11138 <th class="th_type">Type</th>
11139 <th class="th_description">Description</th>
11140 <th class="th_units">Units</th>
11141 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011142 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011143 <th class="th_tags">Tags</th>
11144 </tr>
11145 </thead>
11146
11147 <tbody>
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158 <tr class="entry" id="controls_android.demosaic.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011159 <td class="entry_name
11160 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080011161 android.<wbr/>demosaic.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011162 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011163 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080011164 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011165
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011166 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011167
Igor Murashkin6c936c12014-05-13 14:51:49 -070011168
11169
11170
Igor Murashkinca256272014-10-02 15:27:09 -070011171
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011172 <ul class="entry_type_enum">
11173 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011174 <span class="entry_type_enum_name">FAST (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080011175 <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070011176Bayer RAW output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011177 </li>
11178 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011179 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070011180 <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070011181relative to raw output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011182 </li>
11183 </ul>
11184
11185 </td> <!-- entry_type -->
11186
11187 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080011188 <p>Controls the quality of the demosaicing
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070011189processing.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011190 </td>
11191
11192 <td class="entry_units">
11193 </td>
11194
11195 <td class="entry_range">
11196 </td>
11197
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011198 <td class="entry_hal_version">
11199 <p>3.<wbr/>2</p>
11200 </td>
11201
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011202 <td class="entry_tags">
11203 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070011204 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011205 </ul>
11206 </td>
11207
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011208 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011209
11210
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011211 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011212 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011213
11214
11215
11216 <!-- end of kind -->
11217 </tbody>
11218
11219 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011220 <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011221
11222
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011223 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011224
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011225 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011226 <tr>
11227 <th class="th_name">Property Name</th>
11228 <th class="th_type">Type</th>
11229 <th class="th_description">Description</th>
11230 <th class="th_units">Units</th>
11231 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011232 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011233 <th class="th_tags">Tags</th>
11234 </tr>
11235 </thead>
11236
11237 <tbody>
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248 <tr class="entry" id="controls_android.edge.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011249 <td class="entry_name
Zhijun He41d6f042015-01-15 18:17:24 -080011250 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080011251 android.<wbr/>edge.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011252 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011253 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080011254 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011255
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011256 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011257
Igor Murashkin6c936c12014-05-13 14:51:49 -070011258
Igor Murashkinca256272014-10-02 15:27:09 -070011259 <span class="entry_type_hwlevel">[full] </span>
11260
Igor Murashkin6c936c12014-05-13 14:51:49 -070011261
11262
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011263 <ul class="entry_type_enum">
11264 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011265 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070011266 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011267 </li>
11268 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011269 <span class="entry_type_enum_name">FAST (v3.2)</span>
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070011270 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
11271relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
11272slow down frame rate relative to sensor.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011273 </li>
11274 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011275 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070011276 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011277 </li>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011278 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011279 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011280 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011281 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
11282levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
11283resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
11284or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
11285enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
11286so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
11287(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011288<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
11289with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
11290high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
11291produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
11292high-resolution buffers must not have edge enhancement applied to maximize efficiency of
11293preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
11294buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
11295reasonable preview quality.<wbr/></p>
11296<p>This mode is guaranteed to be supported by devices that support either the
11297YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
Chien-Yu Chend91ea142015-07-08 11:49:38 -070011298(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
11299be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011300 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011301 </ul>
11302
11303 </td> <!-- entry_type -->
11304
11305 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080011306 <p>Operation mode for edge
Zhijun He25b8ac52014-02-24 09:49:37 -080011307enhancement.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011308 </td>
11309
11310 <td class="entry_units">
11311 </td>
11312
11313 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070011314 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011315 </td>
11316
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011317 <td class="entry_hal_version">
11318 <p>3.<wbr/>2</p>
11319 </td>
11320
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011321 <td class="entry_tags">
Ruben Brunkd14f7162014-03-04 15:01:25 -080011322 <ul class="entry_tags">
11323 <li><a href="#tag_V1">V1</a></li>
Zhijun He51379152015-04-24 17:59:50 -070011324 <li><a href="#tag_REPROC">REPROC</a></li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011325 </ul>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011326 </td>
11327
11328 </tr>
11329 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011330 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011331 </tr>
11332 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011333 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070011334 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
11335no enhancement will be applied by the camera device.<wbr/></p>
Zhijun Hef90eeaf2014-01-16 12:13:35 -080011336<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
Igor Murashkin0b080452013-12-27 15:30:25 -080011337will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
Zhijun Hef90eeaf2014-01-16 12:13:35 -080011338camera device will use the highest-quality enhancement algorithms,<wbr/>
11339even if it slows down capture rate.<wbr/> FAST means the camera device will
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070011340not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
11341edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
11342amount of enhancement applied.<wbr/></p>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011343<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
11344buffer of high-resolution images during preview and reprocess image(s) from that buffer
11345into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
11346edge enhancement to low-resolution streams (below maximum recording resolution) to
11347maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
11348since those will be reprocessed later if necessary.<wbr/></p>
Zhijun He41d6f042015-01-15 18:17:24 -080011349<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
11350device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070011351The camera device may adjust its internal edge enhancement parameters for best
Zhijun He41d6f042015-01-15 18:17:24 -080011352image 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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011353 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011354 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011355
Zhijun He41d6f042015-01-15 18:17:24 -080011356 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011357 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He41d6f042015-01-15 18:17:24 -080011358 </tr>
11359 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011360 <td class="entry_details" colspan="6">
Zhijun He41d6f042015-01-15 18:17:24 -080011361 <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
11362adjust the internal edge enhancement reduction parameters appropriately to get the best
11363quality images.<wbr/></p>
11364 </td>
11365 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011366
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011367 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011368 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011369
11370
11371 <tr class="entry" id="controls_android.edge.strength">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011372 <td class="entry_name
11373 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080011374 android.<wbr/>edge.<wbr/>strength
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011375 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011376 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080011377 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011378
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011379 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011380
11381
Igor Murashkin6c936c12014-05-13 14:51:49 -070011382
11383
11384
Igor Murashkinca256272014-10-02 15:27:09 -070011385
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011386 </td> <!-- entry_type -->
11387
11388 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080011389 <p>Control the amount of edge enhancement
11390applied to the images</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011391 </td>
11392
11393 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080011394 1-10; 10 is maximum sharpening
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011395 </td>
11396
11397 <td class="entry_range">
11398 </td>
11399
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011400 <td class="entry_hal_version">
11401 <p>3.<wbr/>2</p>
11402 </td>
11403
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011404 <td class="entry_tags">
Ruben Brunkd14f7162014-03-04 15:01:25 -080011405 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070011406 <li><a href="#tag_FUTURE">FUTURE</a></li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011407 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011408 </td>
11409
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011410 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011411
11412
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011413 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011414 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011415
11416
11417
11418 <!-- end of kind -->
11419 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011420 <tr><td colspan="7" class="kind">static</td></tr>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011421
11422 <thead class="entries_header">
11423 <tr>
11424 <th class="th_name">Property Name</th>
11425 <th class="th_type">Type</th>
11426 <th class="th_description">Description</th>
11427 <th class="th_units">Units</th>
11428 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011429 <th class="th_hal_version">Initial HIDL HAL version</th>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011430 <th class="th_tags">Tags</th>
11431 </tr>
11432 </thead>
11433
11434 <tbody>
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445 <tr class="entry" id="static_android.edge.availableEdgeModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011446 <td class="entry_name
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070011447 " rowspan="5">
Ruben Brunkd14f7162014-03-04 15:01:25 -080011448 android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
11449 </td>
11450 <td class="entry_type">
11451 <span class="entry_type_name">byte</span>
11452 <span class="entry_type_container">x</span>
11453
11454 <span class="entry_type_array">
11455 n
11456 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070011457 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070011458
11459
Igor Murashkinca256272014-10-02 15:27:09 -070011460 <span class="entry_type_hwlevel">[full] </span>
11461
Igor Murashkin6c936c12014-05-13 14:51:49 -070011462
Ruben Brunkd14f7162014-03-04 15:01:25 -080011463 <div class="entry_type_notes">list of enums</div>
11464
11465
11466 </td> <!-- entry_type -->
11467
11468 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070011469 <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
11470device.<wbr/></p>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011471 </td>
11472
11473 <td class="entry_units">
11474 </td>
11475
11476 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070011477 <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011478 </td>
11479
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011480 <td class="entry_hal_version">
11481 <p>3.<wbr/>2</p>
11482 </td>
11483
Ruben Brunkd14f7162014-03-04 15:01:25 -080011484 <td class="entry_tags">
11485 <ul class="entry_tags">
11486 <li><a href="#tag_V1">V1</a></li>
Zhijun He51379152015-04-24 17:59:50 -070011487 <li><a href="#tag_REPROC">REPROC</a></li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011488 </ul>
11489 </td>
11490
11491 </tr>
11492 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011493 <th class="th_details" colspan="6">Details</th>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011494 </tr>
11495 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011496 <td class="entry_details" colspan="6">
Chien-Yu Chend91ea142015-07-08 11:49:38 -070011497 <p>Full-capability camera devices must always support OFF; camera devices that support
11498YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
11499list FAST.<wbr/></p>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011500 </td>
11501 </tr>
11502
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070011503 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011504 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070011505 </tr>
11506 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011507 <td class="entry_details" colspan="6">
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070011508 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
11509on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11510That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11511capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11512 </td>
11513 </tr>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011514
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011515 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011516 <!-- end of entry -->
11517
11518
11519
11520 <!-- end of kind -->
11521 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011522 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011523
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011524 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011525 <tr>
11526 <th class="th_name">Property Name</th>
11527 <th class="th_type">Type</th>
11528 <th class="th_description">Description</th>
11529 <th class="th_units">Units</th>
11530 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011531 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011532 <th class="th_tags">Tags</th>
11533 </tr>
11534 </thead>
11535
11536 <tbody>
11537
11538
11539
11540
11541
11542
11543
11544
11545
11546
11547 <tr class="entry" id="dynamic_android.edge.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011548 <td class="entry_name
Zhijun He41d6f042015-01-15 18:17:24 -080011549 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080011550 android.<wbr/>edge.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011551 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011552 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080011553 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011554
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011555 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011556
Igor Murashkin6c936c12014-05-13 14:51:49 -070011557
Igor Murashkinca256272014-10-02 15:27:09 -070011558 <span class="entry_type_hwlevel">[full] </span>
11559
Igor Murashkin6c936c12014-05-13 14:51:49 -070011560
11561
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011562 <ul class="entry_type_enum">
11563 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011564 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070011565 <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011566 </li>
11567 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011568 <span class="entry_type_enum_name">FAST (v3.2)</span>
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070011569 <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
11570relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
11571slow down frame rate relative to sensor.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011572 </li>
11573 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011574 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070011575 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011576 </li>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011577 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011578 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011579 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011580 <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
11581levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
11582resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
11583or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
11584enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
11585so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
11586(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011587<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
11588with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
11589high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
11590produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
11591high-resolution buffers must not have edge enhancement applied to maximize efficiency of
11592preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
11593buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
11594reasonable preview quality.<wbr/></p>
11595<p>This mode is guaranteed to be supported by devices that support either the
11596YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
Chien-Yu Chend91ea142015-07-08 11:49:38 -070011597(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
11598be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011599 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011600 </ul>
11601
11602 </td> <!-- entry_type -->
11603
11604 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080011605 <p>Operation mode for edge
Zhijun He25b8ac52014-02-24 09:49:37 -080011606enhancement.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011607 </td>
11608
11609 <td class="entry_units">
11610 </td>
11611
11612 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070011613 <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011614 </td>
11615
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011616 <td class="entry_hal_version">
11617 <p>3.<wbr/>2</p>
11618 </td>
11619
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011620 <td class="entry_tags">
Ruben Brunkd14f7162014-03-04 15:01:25 -080011621 <ul class="entry_tags">
11622 <li><a href="#tag_V1">V1</a></li>
Zhijun He51379152015-04-24 17:59:50 -070011623 <li><a href="#tag_REPROC">REPROC</a></li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080011624 </ul>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011625 </td>
11626
11627 </tr>
11628 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011629 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011630 </tr>
11631 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011632 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070011633 <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
11634no enhancement will be applied by the camera device.<wbr/></p>
Zhijun Hef90eeaf2014-01-16 12:13:35 -080011635<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
Igor Murashkin0b080452013-12-27 15:30:25 -080011636will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
Zhijun Hef90eeaf2014-01-16 12:13:35 -080011637camera device will use the highest-quality enhancement algorithms,<wbr/>
11638even if it slows down capture rate.<wbr/> FAST means the camera device will
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070011639not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
11640edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
11641amount of enhancement applied.<wbr/></p>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070011642<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
11643buffer of high-resolution images during preview and reprocess image(s) from that buffer
11644into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
11645edge enhancement to low-resolution streams (below maximum recording resolution) to
11646maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
11647since those will be reprocessed later if necessary.<wbr/></p>
Zhijun He41d6f042015-01-15 18:17:24 -080011648<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
11649device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070011650The camera device may adjust its internal edge enhancement parameters for best
Zhijun He41d6f042015-01-15 18:17:24 -080011651image 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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011652 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011653 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011654
Zhijun He41d6f042015-01-15 18:17:24 -080011655 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011656 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He41d6f042015-01-15 18:17:24 -080011657 </tr>
11658 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011659 <td class="entry_details" colspan="6">
Zhijun He41d6f042015-01-15 18:17:24 -080011660 <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
11661adjust the internal edge enhancement reduction parameters appropriately to get the best
11662quality images.<wbr/></p>
11663 </td>
11664 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011665
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011666 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011667 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011668
11669
11670
11671 <!-- end of kind -->
11672 </tbody>
11673
11674 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011675 <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011676
11677
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011678 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011679
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011680 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011681 <tr>
11682 <th class="th_name">Property Name</th>
11683 <th class="th_type">Type</th>
11684 <th class="th_description">Description</th>
11685 <th class="th_units">Units</th>
11686 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011687 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011688 <th class="th_tags">Tags</th>
11689 </tr>
11690 </thead>
11691
11692 <tbody>
11693
11694
11695
11696
11697
11698
11699
11700
11701
11702
11703 <tr class="entry" id="controls_android.flash.firingPower">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011704 <td class="entry_name
11705 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080011706 android.<wbr/>flash.<wbr/>firing<wbr/>Power
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011707 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011708 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080011709 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011710
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011711 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011712
11713
Igor Murashkin6c936c12014-05-13 14:51:49 -070011714
11715
11716
Igor Murashkinca256272014-10-02 15:27:09 -070011717
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011718 </td> <!-- entry_type -->
11719
11720 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080011721 <p>Power for flash firing/<wbr/>torch</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011722 </td>
11723
11724 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080011725 10 is max power; 0 is no flash.<wbr/> Linear
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011726 </td>
11727
11728 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080011729 <p>0 - 10</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011730 </td>
11731
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011732 <td class="entry_hal_version">
11733 <p>3.<wbr/>2</p>
11734 </td>
11735
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011736 <td class="entry_tags">
11737 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070011738 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011739 </ul>
11740 </td>
11741
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011742 </tr>
11743 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011744 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011745 </tr>
11746 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011747 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080011748 <p>Power for snapshot may use a different scale than
11749for torch mode.<wbr/> Only one entry for torch mode will be
11750used</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011751 </td>
11752 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011753
11754
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011755 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011756 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011757
11758
11759 <tr class="entry" id="controls_android.flash.firingTime">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011760 <td class="entry_name
11761 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080011762 android.<wbr/>flash.<wbr/>firing<wbr/>Time
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011763 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011764 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080011765 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011766
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011767 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011768
11769
Igor Murashkin6c936c12014-05-13 14:51:49 -070011770
11771
11772
Igor Murashkinca256272014-10-02 15:27:09 -070011773
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011774 </td> <!-- entry_type -->
11775
11776 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080011777 <p>Firing time of flash relative to start of
11778exposure</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011779 </td>
11780
11781 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080011782 nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011783 </td>
11784
11785 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080011786 <p>0-(exposure time-flash duration)</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011787 </td>
11788
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011789 <td class="entry_hal_version">
11790 <p>3.<wbr/>2</p>
11791 </td>
11792
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011793 <td class="entry_tags">
11794 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070011795 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011796 </ul>
11797 </td>
11798
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011799 </tr>
11800 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011801 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011802 </tr>
11803 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011804 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080011805 <p>Clamped to (0,<wbr/> exposure time - flash
11806duration).<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011807 </td>
11808 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011809
11810
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011811 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011812 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011813
11814
11815 <tr class="entry" id="controls_android.flash.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011816 <td class="entry_name
11817 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080011818 android.<wbr/>flash.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011819 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011820 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080011821 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011822
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011823 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011824
Igor Murashkin6c936c12014-05-13 14:51:49 -070011825
Igor Murashkinca256272014-10-02 15:27:09 -070011826 <span class="entry_type_hwlevel">[legacy] </span>
11827
Igor Murashkin6c936c12014-05-13 14:51:49 -070011828
11829
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011830 <ul class="entry_type_enum">
11831 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011832 <span class="entry_type_enum_name">OFF (v3.2)</span>
Zhijun Heea27bc32014-01-15 13:47:59 -080011833 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011834 </li>
11835 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011836 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
Zhijun Heea27bc32014-01-15 13:47:59 -080011837 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
Zhijun He66e62a42014-05-23 11:02:34 -070011838for this capture.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011839 </li>
11840 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011841 <span class="entry_type_enum_name">TORCH (v3.2)</span>
Zhijun Heea27bc32014-01-15 13:47:59 -080011842 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011843 </li>
11844 </ul>
11845
11846 </td> <!-- entry_type -->
11847
11848 <td class="entry_description">
Zhijun Heea27bc32014-01-15 13:47:59 -080011849 <p>The desired mode for for the camera device's flash control.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011850 </td>
11851
11852 <td class="entry_units">
11853 </td>
11854
11855 <td class="entry_range">
11856 </td>
11857
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011858 <td class="entry_hal_version">
11859 <p>3.<wbr/>2</p>
11860 </td>
11861
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011862 <td class="entry_tags">
11863 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080011864 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011865 </ul>
11866 </td>
11867
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011868 </tr>
Zhijun Heea27bc32014-01-15 13:47:59 -080011869 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011870 <th class="th_details" colspan="6">Details</th>
Zhijun Heea27bc32014-01-15 13:47:59 -080011871 </tr>
11872 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011873 <td class="entry_details" colspan="6">
Zhijun Heea27bc32014-01-15 13:47:59 -080011874 <p>This control is only effective when flash unit is available
Zhijun Hebdc94c42014-01-21 18:28:30 -080011875(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
Zhijun Heea27bc32014-01-15 13:47:59 -080011876<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/>
11877Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
11878ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
11879<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
11880<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
11881device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070011882control should be used along with auto-exposure (AE) precapture metering sequence
Zhijun Heea27bc32014-01-15 13:47:59 -080011883(<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>
11884<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
11885for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
Zhijun He5169ce12014-01-24 16:48:25 -080011886<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>
Zhijun Heea27bc32014-01-15 13:47:59 -080011887 </td>
11888 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011889
11890
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011891 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011892 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011893
11894
11895
11896 <!-- end of kind -->
11897 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011898 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011899
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011900 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011901 <tr>
11902 <th class="th_name">Property Name</th>
11903 <th class="th_type">Type</th>
11904 <th class="th_description">Description</th>
11905 <th class="th_units">Units</th>
11906 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011907 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011908 <th class="th_tags">Tags</th>
11909 </tr>
11910 </thead>
11911
11912 <tbody>
11913
11914
11915
11916
11917
11918
11919
11920
11921
11922
11923
11924
11925 <tr class="entry" id="static_android.flash.info.available">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011926 <td class="entry_name
11927 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080011928 android.<wbr/>flash.<wbr/>info.<wbr/>available
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011929 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011930 <td class="entry_type">
Zhijun He5169ce12014-01-24 16:48:25 -080011931 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011932
Zhijun He5169ce12014-01-24 16:48:25 -080011933 <span class="entry_type_visibility"> [public as boolean]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011934
Igor Murashkin6c936c12014-05-13 14:51:49 -070011935
Igor Murashkinca256272014-10-02 15:27:09 -070011936 <span class="entry_type_hwlevel">[legacy] </span>
11937
Igor Murashkin6c936c12014-05-13 14:51:49 -070011938
11939
Zhijun He5169ce12014-01-24 16:48:25 -080011940 <ul class="entry_type_enum">
11941 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011942 <span class="entry_type_enum_name">FALSE (v3.2)</span>
Zhijun He5169ce12014-01-24 16:48:25 -080011943 </li>
11944 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080011945 <span class="entry_type_enum_name">TRUE (v3.2)</span>
Zhijun He5169ce12014-01-24 16:48:25 -080011946 </li>
11947 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011948
11949 </td> <!-- entry_type -->
11950
11951 <td class="entry_description">
Zhijun He5169ce12014-01-24 16:48:25 -080011952 <p>Whether this camera device has a
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070011953flash unit.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011954 </td>
11955
11956 <td class="entry_units">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011957 </td>
11958
11959 <td class="entry_range">
11960 </td>
11961
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011962 <td class="entry_hal_version">
11963 <p>3.<wbr/>2</p>
11964 </td>
11965
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011966 <td class="entry_tags">
11967 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080011968 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011969 </ul>
11970 </td>
11971
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011972 </tr>
11973 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011974 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011975 </tr>
11976 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011977 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070011978 <p>Will be <code>false</code> if no flash is available.<wbr/></p>
11979<p>If there is no flash unit,<wbr/> none of the flash controls do
11980anything.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011981 </td>
11982 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011983
11984
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080011985 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080011986 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011987
11988
11989 <tr class="entry" id="static_android.flash.info.chargeDuration">
Igor Murashkin6c936c12014-05-13 14:51:49 -070011990 <td class="entry_name
11991 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080011992 android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080011993 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011994 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080011995 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011996
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070011997 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080011998
11999
Igor Murashkin6c936c12014-05-13 14:51:49 -070012000
12001
12002
Igor Murashkinca256272014-10-02 15:27:09 -070012003
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012004 </td> <!-- entry_type -->
12005
12006 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080012007 <p>Time taken before flash can fire
12008again</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012009 </td>
12010
12011 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080012012 nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012013 </td>
12014
12015 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080012016 <p>0-1e9</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012017 </td>
12018
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012019 <td class="entry_hal_version">
12020 <p>3.<wbr/>2</p>
12021 </td>
12022
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012023 <td class="entry_tags">
12024 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070012025 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012026 </ul>
12027 </td>
12028
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012029 </tr>
12030 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012031 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012032 </tr>
12033 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012034 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080012035 <p>1 second too long/<wbr/>too short for recharge? Should
12036this be power-dependent?</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012037 </td>
12038 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012039
12040
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012041 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012042 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012043
Rucha Katakwar2fd4a452021-10-12 10:01:29 -070012044
12045 <tr class="entry" id="static_android.flash.info.strengthMaximumLevel">
12046 <td class="entry_name
12047 " rowspan="3">
12048 android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Maximum<wbr/>Level
12049 </td>
12050 <td class="entry_type">
12051 <span class="entry_type_name">int32</span>
12052
12053 <span class="entry_type_visibility"> [public]</span>
12054
12055
12056
12057
12058
12059
12060 </td> <!-- entry_type -->
12061
12062 <td class="entry_description">
12063 <p>Maximum flashlight brightness level.<wbr/></p>
12064 </td>
12065
12066 <td class="entry_units">
12067 </td>
12068
12069 <td class="entry_range">
12070 </td>
12071
12072 <td class="entry_hal_version">
12073 <p>3.<wbr/>8</p>
12074 </td>
12075
12076 <td class="entry_tags">
12077 </td>
12078
12079 </tr>
12080 <tr class="entries_header">
12081 <th class="th_details" colspan="6">Details</th>
12082 </tr>
12083 <tr class="entry_cont">
12084 <td class="entry_details" colspan="6">
12085 <p>If this value is greater than 1,<wbr/> then the device supports controlling the
12086flashlight brightness level via
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070012087<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#turnOnTorchWithStrengthLevel">CameraManager#turnOnTorchWithStrengthLevel</a>.<wbr/>
Rucha Katakwar2fd4a452021-10-12 10:01:29 -070012088If this value is equal to 1,<wbr/> flashlight brightness control is not supported.<wbr/>
Rucha Katakwar4be15162022-07-21 14:00:48 -070012089The value for this key will be null for devices with no flash unit.<wbr/></p>
12090<p>The maximum value is guaranteed to be safe to use for an indefinite duration in
12091terms of device flashlight lifespan,<wbr/> but may be too bright for comfort for many
12092use cases.<wbr/> Use the default torch brightness value to avoid problems with an
12093over-bright flashlight.<wbr/></p>
Rucha Katakwar2fd4a452021-10-12 10:01:29 -070012094 </td>
12095 </tr>
12096
12097
12098 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12099 <!-- end of entry -->
12100
12101
12102 <tr class="entry" id="static_android.flash.info.strengthDefaultLevel">
12103 <td class="entry_name
12104 " rowspan="3">
12105 android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Default<wbr/>Level
12106 </td>
12107 <td class="entry_type">
12108 <span class="entry_type_name">int32</span>
12109
12110 <span class="entry_type_visibility"> [public]</span>
12111
12112
12113
12114
12115
12116
12117 </td> <!-- entry_type -->
12118
12119 <td class="entry_description">
12120 <p>Default flashlight brightness level to be set via
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070012121<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#turnOnTorchWithStrengthLevel">CameraManager#turnOnTorchWithStrengthLevel</a>.<wbr/></p>
Rucha Katakwar2fd4a452021-10-12 10:01:29 -070012122 </td>
12123
12124 <td class="entry_units">
12125 </td>
12126
12127 <td class="entry_range">
12128 </td>
12129
12130 <td class="entry_hal_version">
12131 <p>3.<wbr/>8</p>
12132 </td>
12133
12134 <td class="entry_tags">
12135 </td>
12136
12137 </tr>
12138 <tr class="entries_header">
12139 <th class="th_details" colspan="6">Details</th>
12140 </tr>
12141 <tr class="entry_cont">
12142 <td class="entry_details" colspan="6">
12143 <p>If flash unit is available this will be greater than or equal to 1 and less
Rucha Katakwar8f032e22021-10-21 05:47:53 +000012144or equal to <code><a href="#static_android.flash.info.strengthMaximumLevel">android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Maximum<wbr/>Level</a></code>.<wbr/></p>
Rucha Katakwar2fd4a452021-10-12 10:01:29 -070012145<p>Setting flashlight brightness above the default level
12146(i.<wbr/>e.<wbr/><code><a href="#static_android.flash.info.strengthDefaultLevel">android.<wbr/>flash.<wbr/>info.<wbr/>strength<wbr/>Default<wbr/>Level</a></code>) may make the device more
12147likely to reach thermal throttling conditions and slow down,<wbr/> or drain the
12148battery quicker than normal.<wbr/> To minimize such issues,<wbr/> it is recommended to
12149start the flashlight at this default brightness until a user explicitly requests
Rucha Katakwar8f032e22021-10-21 05:47:53 +000012150a brighter level.<wbr/>
12151Note that the value for this key will be null for devices with no flash unit.<wbr/>
12152The default level should always be &gt; 0.<wbr/></p>
Rucha Katakwar2fd4a452021-10-12 10:01:29 -070012153 </td>
12154 </tr>
12155
12156
12157 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12158 <!-- end of entry -->
12159
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012160
12161
12162
12163
12164 <tr class="entry" id="static_android.flash.colorTemperature">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012165 <td class="entry_name
12166 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080012167 android.<wbr/>flash.<wbr/>color<wbr/>Temperature
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012168 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012169 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080012170 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012171
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012172 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012173
12174
Igor Murashkin6c936c12014-05-13 14:51:49 -070012175
12176
12177
Igor Murashkinca256272014-10-02 15:27:09 -070012178
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012179 </td> <!-- entry_type -->
12180
12181 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080012182 <p>The x,<wbr/>y whitepoint of the
12183flash</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012184 </td>
12185
12186 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080012187 pair of floats
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012188 </td>
12189
12190 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080012191 <p>0-1 for both</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012192 </td>
12193
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012194 <td class="entry_hal_version">
12195 <p>3.<wbr/>2</p>
12196 </td>
12197
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012198 <td class="entry_tags">
12199 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070012200 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012201 </ul>
12202 </td>
12203
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012204 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012205
12206
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012207 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012208 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012209
12210
12211 <tr class="entry" id="static_android.flash.maxEnergy">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012212 <td class="entry_name
12213 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080012214 android.<wbr/>flash.<wbr/>max<wbr/>Energy
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012215 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012216 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080012217 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012218
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012219 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012220
12221
Igor Murashkin6c936c12014-05-13 14:51:49 -070012222
12223
12224
Igor Murashkinca256272014-10-02 15:27:09 -070012225
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012226 </td> <!-- entry_type -->
12227
12228 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080012229 <p>Max energy output of the flash for a full
12230power single flash</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012231 </td>
12232
12233 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080012234 lumen-seconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012235 </td>
12236
12237 <td class="entry_range">
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080012238 <p>&gt;= 0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012239 </td>
12240
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012241 <td class="entry_hal_version">
12242 <p>3.<wbr/>2</p>
12243 </td>
12244
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012245 <td class="entry_tags">
12246 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070012247 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012248 </ul>
12249 </td>
12250
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012251 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012252
12253
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012254 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012255 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012256
12257
12258
12259 <!-- end of kind -->
12260 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012261 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012262
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012263 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012264 <tr>
12265 <th class="th_name">Property Name</th>
12266 <th class="th_type">Type</th>
12267 <th class="th_description">Description</th>
12268 <th class="th_units">Units</th>
12269 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012270 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012271 <th class="th_tags">Tags</th>
12272 </tr>
12273 </thead>
12274
12275 <tbody>
12276
12277
12278
12279
12280
12281
12282
12283
12284
12285
12286 <tr class="entry" id="dynamic_android.flash.firingPower">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012287 <td class="entry_name
12288 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080012289 android.<wbr/>flash.<wbr/>firing<wbr/>Power
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012290 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012291 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080012292 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012293
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012294 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012295
12296
Igor Murashkin6c936c12014-05-13 14:51:49 -070012297
12298
12299
Igor Murashkinca256272014-10-02 15:27:09 -070012300
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012301 </td> <!-- entry_type -->
12302
12303 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080012304 <p>Power for flash firing/<wbr/>torch</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012305 </td>
12306
12307 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080012308 10 is max power; 0 is no flash.<wbr/> Linear
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012309 </td>
12310
12311 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080012312 <p>0 - 10</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012313 </td>
12314
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012315 <td class="entry_hal_version">
12316 <p>3.<wbr/>2</p>
12317 </td>
12318
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012319 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080012320 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070012321 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080012322 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012323 </td>
12324
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012325 </tr>
12326 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012327 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012328 </tr>
12329 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012330 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080012331 <p>Power for snapshot may use a different scale than
12332for torch mode.<wbr/> Only one entry for torch mode will be
12333used</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012334 </td>
12335 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012336
12337
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012338 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012339 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012340
12341
12342 <tr class="entry" id="dynamic_android.flash.firingTime">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012343 <td class="entry_name
12344 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080012345 android.<wbr/>flash.<wbr/>firing<wbr/>Time
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012346 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012347 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080012348 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012349
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012350 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012351
12352
Igor Murashkin6c936c12014-05-13 14:51:49 -070012353
12354
12355
Igor Murashkinca256272014-10-02 15:27:09 -070012356
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012357 </td> <!-- entry_type -->
12358
12359 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080012360 <p>Firing time of flash relative to start of
12361exposure</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012362 </td>
12363
12364 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080012365 nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012366 </td>
12367
12368 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080012369 <p>0-(exposure time-flash duration)</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012370 </td>
12371
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012372 <td class="entry_hal_version">
12373 <p>3.<wbr/>2</p>
12374 </td>
12375
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012376 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080012377 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070012378 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080012379 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012380 </td>
12381
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012382 </tr>
12383 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012384 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012385 </tr>
12386 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012387 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080012388 <p>Clamped to (0,<wbr/> exposure time - flash
12389duration).<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012390 </td>
12391 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012392
12393
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012394 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012395 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012396
12397
12398 <tr class="entry" id="dynamic_android.flash.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012399 <td class="entry_name
12400 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080012401 android.<wbr/>flash.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012402 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012403 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080012404 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012405
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012406 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012407
Igor Murashkin6c936c12014-05-13 14:51:49 -070012408
Igor Murashkinca256272014-10-02 15:27:09 -070012409 <span class="entry_type_hwlevel">[legacy] </span>
12410
Igor Murashkin6c936c12014-05-13 14:51:49 -070012411
12412
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012413 <ul class="entry_type_enum">
12414 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012415 <span class="entry_type_enum_name">OFF (v3.2)</span>
Zhijun Heea27bc32014-01-15 13:47:59 -080012416 <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012417 </li>
12418 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012419 <span class="entry_type_enum_name">SINGLE (v3.2)</span>
Zhijun Heea27bc32014-01-15 13:47:59 -080012420 <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
Zhijun He66e62a42014-05-23 11:02:34 -070012421for this capture.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012422 </li>
12423 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012424 <span class="entry_type_enum_name">TORCH (v3.2)</span>
Zhijun Heea27bc32014-01-15 13:47:59 -080012425 <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012426 </li>
12427 </ul>
12428
12429 </td> <!-- entry_type -->
12430
12431 <td class="entry_description">
Zhijun Heea27bc32014-01-15 13:47:59 -080012432 <p>The desired mode for for the camera device's flash control.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012433 </td>
12434
12435 <td class="entry_units">
12436 </td>
12437
12438 <td class="entry_range">
12439 </td>
12440
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012441 <td class="entry_hal_version">
12442 <p>3.<wbr/>2</p>
12443 </td>
12444
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012445 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080012446 <ul class="entry_tags">
12447 <li><a href="#tag_BC">BC</a></li>
12448 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012449 </td>
12450
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012451 </tr>
Zhijun Heea27bc32014-01-15 13:47:59 -080012452 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012453 <th class="th_details" colspan="6">Details</th>
Zhijun Heea27bc32014-01-15 13:47:59 -080012454 </tr>
12455 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012456 <td class="entry_details" colspan="6">
Zhijun Heea27bc32014-01-15 13:47:59 -080012457 <p>This control is only effective when flash unit is available
Zhijun Hebdc94c42014-01-21 18:28:30 -080012458(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
Zhijun Heea27bc32014-01-15 13:47:59 -080012459<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/>
12460Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
12461ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
12462<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
12463<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
12464device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070012465control should be used along with auto-exposure (AE) precapture metering sequence
Zhijun Heea27bc32014-01-15 13:47:59 -080012466(<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>
12467<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
12468for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
Zhijun He5169ce12014-01-24 16:48:25 -080012469<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>
Zhijun Heea27bc32014-01-15 13:47:59 -080012470 </td>
12471 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012472
12473
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012474 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012475 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012476
12477
12478 <tr class="entry" id="dynamic_android.flash.state">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012479 <td class="entry_name
12480 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080012481 android.<wbr/>flash.<wbr/>state
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012482 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012483 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080012484 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012485
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012486 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012487
Igor Murashkin6c936c12014-05-13 14:51:49 -070012488
Igor Murashkinca256272014-10-02 15:27:09 -070012489 <span class="entry_type_hwlevel">[limited] </span>
12490
Igor Murashkin6c936c12014-05-13 14:51:49 -070012491
12492
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012493 <ul class="entry_type_enum">
12494 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012495 <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
Zhijun Hee74a31c2014-03-25 11:33:29 -070012496 <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012497 </li>
12498 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012499 <span class="entry_type_enum_name">CHARGING (v3.2)</span>
Zhijun Hee74a31c2014-03-25 11:33:29 -070012500 <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012501 </li>
12502 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012503 <span class="entry_type_enum_name">READY (v3.2)</span>
Zhijun Hee74a31c2014-03-25 11:33:29 -070012504 <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012505 </li>
12506 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012507 <span class="entry_type_enum_name">FIRED (v3.2)</span>
Zhijun Hee74a31c2014-03-25 11:33:29 -070012508 <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
12509 </li>
12510 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012511 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012512 <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
12513<p>This is usually due to the next or previous frame having
12514the flash fire,<wbr/> and the flash spilling into this capture
Zhijun Hee74a31c2014-03-25 11:33:29 -070012515due to hardware limitations.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012516 </li>
12517 </ul>
12518
12519 </td> <!-- entry_type -->
12520
12521 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080012522 <p>Current state of the flash
Zhijun He5169ce12014-01-24 16:48:25 -080012523unit.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012524 </td>
12525
12526 <td class="entry_units">
12527 </td>
12528
12529 <td class="entry_range">
12530 </td>
12531
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012532 <td class="entry_hal_version">
12533 <p>3.<wbr/>2</p>
12534 </td>
12535
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012536 <td class="entry_tags">
12537 </td>
12538
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012539 </tr>
Zhijun He5169ce12014-01-24 16:48:25 -080012540 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012541 <th class="th_details" colspan="6">Details</th>
Zhijun He5169ce12014-01-24 16:48:25 -080012542 </tr>
12543 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012544 <td class="entry_details" colspan="6">
Zhijun He5169ce12014-01-24 16:48:25 -080012545 <p>When the camera device doesn't have flash unit
12546(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/>
12547Other states indicate the current flash status.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -070012548<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
12549<ul>
12550<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
12551<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
12552 will always return FIRED.<wbr/></li>
12553<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
12554 will always return FIRED.<wbr/></li>
12555</ul>
12556<p>In all other conditions the state will not be available on
12557LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
Zhijun He5169ce12014-01-24 16:48:25 -080012558 </td>
12559 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012560
12561
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012562 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012563 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012564
12565
12566
12567 <!-- end of kind -->
12568 </tbody>
12569
12570 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012571 <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012572
12573
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012574 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012575
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012576 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012577 <tr>
12578 <th class="th_name">Property Name</th>
12579 <th class="th_type">Type</th>
12580 <th class="th_description">Description</th>
12581 <th class="th_units">Units</th>
12582 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012583 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012584 <th class="th_tags">Tags</th>
12585 </tr>
12586 </thead>
12587
12588 <tbody>
12589
12590
12591
12592
12593
12594
12595
12596
12597
12598
12599 <tr class="entry" id="controls_android.hotPixel.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012600 <td class="entry_name
12601 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080012602 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012603 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012604 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080012605 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012606
Ruben Brunkcd05eed2014-01-31 12:38:46 -080012607 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012608
Igor Murashkin6c936c12014-05-13 14:51:49 -070012609
12610
12611
Igor Murashkinca256272014-10-02 15:27:09 -070012612
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012613 <ul class="entry_type_enum">
12614 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012615 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012616 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
12617<p>The frame rate must not be reduced relative to sensor raw output
Ruben Brunkcd05eed2014-01-31 12:38:46 -080012618for this option.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012619<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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012620 </li>
12621 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012622 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012623 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
12624rate relative to sensor raw output.<wbr/></p>
12625<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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012626 </li>
12627 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012628 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012629 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070012630of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012631<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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012632 </li>
12633 </ul>
12634
12635 </td> <!-- entry_type -->
12636
12637 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012638 <p>Operational mode for hot pixel correction.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012639 </td>
12640
12641 <td class="entry_units">
12642 </td>
12643
12644 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012645 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012646 </td>
12647
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012648 <td class="entry_hal_version">
12649 <p>3.<wbr/>2</p>
12650 </td>
12651
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012652 <td class="entry_tags">
12653 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080012654 <li><a href="#tag_V1">V1</a></li>
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070012655 <li><a href="#tag_RAW">RAW</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012656 </ul>
12657 </td>
12658
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012659 </tr>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012660 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012661 <th class="th_details" colspan="6">Details</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012662 </tr>
12663 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012664 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012665 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
12666that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
12667are stuck at an arbitrary value or are oversensitive).<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012668 </td>
12669 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012670
12671
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012672 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012673 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012674
12675
12676
12677 <!-- end of kind -->
12678 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012679 <tr><td colspan="7" class="kind">static</td></tr>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012680
12681 <thead class="entries_header">
12682 <tr>
12683 <th class="th_name">Property Name</th>
12684 <th class="th_type">Type</th>
12685 <th class="th_description">Description</th>
12686 <th class="th_units">Units</th>
12687 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012688 <th class="th_hal_version">Initial HIDL HAL version</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012689 <th class="th_tags">Tags</th>
12690 </tr>
12691 </thead>
12692
12693 <tbody>
12694
12695
12696
12697
12698
12699
12700
12701
12702
12703
12704 <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012705 <td class="entry_name
12706 " rowspan="5">
Ruben Brunk49e4f912014-03-04 14:09:44 -080012707 android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
12708 </td>
12709 <td class="entry_type">
12710 <span class="entry_type_name">byte</span>
12711 <span class="entry_type_container">x</span>
12712
12713 <span class="entry_type_array">
12714 n
12715 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070012716 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070012717
12718
12719
Igor Murashkinca256272014-10-02 15:27:09 -070012720
Ruben Brunk49e4f912014-03-04 14:09:44 -080012721 <div class="entry_type_notes">list of enums</div>
12722
12723
12724 </td> <!-- entry_type -->
12725
12726 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012727 <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
Ruben Brunk49e4f912014-03-04 14:09:44 -080012728camera device.<wbr/></p>
12729 </td>
12730
12731 <td class="entry_units">
12732 </td>
12733
12734 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012735 <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012736 </td>
12737
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012738 <td class="entry_hal_version">
12739 <p>3.<wbr/>2</p>
12740 </td>
12741
Ruben Brunk49e4f912014-03-04 14:09:44 -080012742 <td class="entry_tags">
12743 <ul class="entry_tags">
Ruben Brunk49e4f912014-03-04 14:09:44 -080012744 <li><a href="#tag_V1">V1</a></li>
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070012745 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012746 </ul>
12747 </td>
12748
12749 </tr>
12750 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012751 <th class="th_details" colspan="6">Details</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012752 </tr>
12753 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012754 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012755 <p>FULL mode camera devices will always support FAST.<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012756 </td>
12757 </tr>
12758
12759 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012760 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012761 </tr>
12762 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012763 <td class="entry_details" colspan="6">
Ruben Brunk49e4f912014-03-04 14:09:44 -080012764 <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070012765pixels than actual pixels on the camera sensor.<wbr/>
12766HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
12767on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
12768That is,<wbr/> if the highest quality implementation on the camera device does not slow down
12769capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012770 </td>
12771 </tr>
12772
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012773 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012774 <!-- end of entry -->
12775
12776
12777
12778 <!-- end of kind -->
12779 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012780 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012781
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012782 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012783 <tr>
12784 <th class="th_name">Property Name</th>
12785 <th class="th_type">Type</th>
12786 <th class="th_description">Description</th>
12787 <th class="th_units">Units</th>
12788 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012789 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012790 <th class="th_tags">Tags</th>
12791 </tr>
12792 </thead>
12793
12794 <tbody>
12795
12796
12797
12798
12799
12800
12801
12802
12803
12804
12805 <tr class="entry" id="dynamic_android.hotPixel.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012806 <td class="entry_name
12807 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080012808 android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012809 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012810 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080012811 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012812
Ruben Brunkcd05eed2014-01-31 12:38:46 -080012813 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012814
Igor Murashkin6c936c12014-05-13 14:51:49 -070012815
12816
12817
Igor Murashkinca256272014-10-02 15:27:09 -070012818
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012819 <ul class="entry_type_enum">
12820 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012821 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012822 <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
12823<p>The frame rate must not be reduced relative to sensor raw output
Ruben Brunkcd05eed2014-01-31 12:38:46 -080012824for this option.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012825<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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012826 </li>
12827 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012828 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012829 <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
12830rate relative to sensor raw output.<wbr/></p>
12831<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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012832 </li>
12833 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080012834 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012835 <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070012836of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070012837<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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012838 </li>
12839 </ul>
12840
12841 </td> <!-- entry_type -->
12842
12843 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012844 <p>Operational mode for hot pixel correction.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012845 </td>
12846
12847 <td class="entry_units">
12848 </td>
12849
12850 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012851 <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012852 </td>
12853
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012854 <td class="entry_hal_version">
12855 <p>3.<wbr/>2</p>
12856 </td>
12857
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012858 <td class="entry_tags">
12859 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080012860 <li><a href="#tag_V1">V1</a></li>
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070012861 <li><a href="#tag_RAW">RAW</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012862 </ul>
12863 </td>
12864
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012865 </tr>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012866 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012867 <th class="th_details" colspan="6">Details</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012868 </tr>
12869 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012870 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012871 <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
12872that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
12873are stuck at an arbitrary value or are oversensitive).<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080012874 </td>
12875 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012876
12877
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012878 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080012879 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012880
12881
12882
12883 <!-- end of kind -->
12884 </tbody>
12885
12886 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012887 <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012888
12889
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012890 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012891
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070012892 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012893 <tr>
12894 <th class="th_name">Property Name</th>
12895 <th class="th_type">Type</th>
12896 <th class="th_description">Description</th>
12897 <th class="th_units">Units</th>
12898 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012899 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012900 <th class="th_tags">Tags</th>
12901 </tr>
12902 </thead>
12903
12904 <tbody>
12905
12906
12907
12908
12909
12910
12911
12912
12913
12914
Ruben Brunk9c766ad2014-05-27 18:52:49 -070012915 <tr class="entry" id="controls_android.jpeg.gpsLocation">
12916 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012917 " rowspan="3">
Ruben Brunk9c766ad2014-05-27 18:52:49 -070012918 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
12919 </td>
12920 <td class="entry_type">
12921 <span class="entry_type_name">byte</span>
12922
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070012923 <span class="entry_type_visibility"> [java_public as location]</span>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070012924
12925 <span class="entry_type_synthetic">[synthetic] </span>
12926
Igor Murashkinca256272014-10-02 15:27:09 -070012927 <span class="entry_type_hwlevel">[legacy] </span>
12928
Ruben Brunk9c766ad2014-05-27 18:52:49 -070012929
12930
12931
12932 </td> <!-- entry_type -->
12933
12934 <td class="entry_description">
12935 <p>A location object to use when generating image GPS metadata.<wbr/></p>
12936 </td>
12937
12938 <td class="entry_units">
12939 </td>
12940
12941 <td class="entry_range">
12942 </td>
12943
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012944 <td class="entry_hal_version">
12945 <p>3.<wbr/>2</p>
12946 </td>
12947
Ruben Brunk9c766ad2014-05-27 18:52:49 -070012948 <td class="entry_tags">
12949 </td>
12950
12951 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012952 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012953 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012954 </tr>
12955 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012956 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012957 <p>Setting a location object in a request will include the GPS coordinates of the location
12958into any JPEG images captured based on the request.<wbr/> These coordinates can then be
12959viewed by anyone who receives the JPEG image.<wbr/></p>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080012960<p>This tag is also used for HEIC image capture.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012961 </td>
12962 </tr>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070012963
12964
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080012965 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070012966 <!-- end of entry -->
12967
12968
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012969 <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
Igor Murashkin6c936c12014-05-13 14:51:49 -070012970 <td class="entry_name
Shuzhen Wanga44fd452018-12-28 18:50:53 -080012971 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080012972 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080012973 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012974 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080012975 <span class="entry_type_name">double</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012976 <span class="entry_type_container">x</span>
12977
12978 <span class="entry_type_array">
12979 3
12980 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070012981 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070012982
12983
Igor Murashkinca256272014-10-02 15:27:09 -070012984 <span class="entry_type_hwlevel">[legacy] </span>
12985
Igor Murashkin6c936c12014-05-13 14:51:49 -070012986
Igor Murashkin0b080452013-12-27 15:30:25 -080012987 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012988
12989
12990 </td> <!-- entry_type -->
12991
12992 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080012993 <p>GPS coordinates to include in output JPEG
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070012994EXIF.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080012995 </td>
12996
12997 <td class="entry_units">
12998 </td>
12999
13000 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080013001 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013002 </td>
13003
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013004 <td class="entry_hal_version">
13005 <p>3.<wbr/>2</p>
13006 </td>
13007
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013008 <td class="entry_tags">
13009 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013010 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013011 </ul>
13012 </td>
13013
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013014 </tr>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013015 <tr class="entries_header">
13016 <th class="th_details" colspan="6">Details</th>
13017 </tr>
13018 <tr class="entry_cont">
13019 <td class="entry_details" colspan="6">
13020 <p>This tag is also used for HEIC image capture.<wbr/></p>
13021 </td>
13022 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013023
13024
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013025 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013026 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013027
13028
13029 <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013030 <td class="entry_name
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013031 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013032 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013033 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013034 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013035 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013036
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070013037 <span class="entry_type_visibility"> [ndk_public as string]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013038
13039
Igor Murashkinca256272014-10-02 15:27:09 -070013040 <span class="entry_type_hwlevel">[legacy] </span>
13041
Igor Murashkin6c936c12014-05-13 14:51:49 -070013042
13043
13044
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013045 </td> <!-- entry_type -->
13046
13047 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080013048 <p>32 characters describing GPS algorithm to
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013049include in EXIF.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013050 </td>
13051
13052 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080013053 UTF-8 null-terminated string
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013054 </td>
13055
13056 <td class="entry_range">
13057 </td>
13058
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013059 <td class="entry_hal_version">
13060 <p>3.<wbr/>2</p>
13061 </td>
13062
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013063 <td class="entry_tags">
13064 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013065 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013066 </ul>
13067 </td>
13068
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013069 </tr>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013070 <tr class="entries_header">
13071 <th class="th_details" colspan="6">Details</th>
13072 </tr>
13073 <tr class="entry_cont">
13074 <td class="entry_details" colspan="6">
13075 <p>This tag is also used for HEIC image capture.<wbr/></p>
13076 </td>
13077 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013078
13079
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013080 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013081 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013082
13083
13084 <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013085 <td class="entry_name
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013086 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013087 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013088 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013089 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013090 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013091
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070013092 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013093
13094
Igor Murashkinca256272014-10-02 15:27:09 -070013095 <span class="entry_type_hwlevel">[legacy] </span>
13096
Igor Murashkin6c936c12014-05-13 14:51:49 -070013097
13098
13099
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013100 </td> <!-- entry_type -->
13101
13102 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080013103 <p>Time GPS fix was made to include in
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013104EXIF.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013105 </td>
13106
13107 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080013108 UTC in seconds since January 1,<wbr/> 1970
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013109 </td>
13110
13111 <td class="entry_range">
13112 </td>
13113
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013114 <td class="entry_hal_version">
13115 <p>3.<wbr/>2</p>
13116 </td>
13117
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013118 <td class="entry_tags">
13119 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013120 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013121 </ul>
13122 </td>
13123
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013124 </tr>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013125 <tr class="entries_header">
13126 <th class="th_details" colspan="6">Details</th>
13127 </tr>
13128 <tr class="entry_cont">
13129 <td class="entry_details" colspan="6">
13130 <p>This tag is also used for HEIC image capture.<wbr/></p>
13131 </td>
13132 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013133
13134
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013135 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013136 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013137
13138
13139 <tr class="entry" id="controls_android.jpeg.orientation">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013140 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013141 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013142 android.<wbr/>jpeg.<wbr/>orientation
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013143 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013144 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013145 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013146
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070013147 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013148
13149
Igor Murashkinca256272014-10-02 15:27:09 -070013150 <span class="entry_type_hwlevel">[legacy] </span>
13151
Igor Murashkin6c936c12014-05-13 14:51:49 -070013152
13153
13154
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013155 </td> <!-- entry_type -->
13156
13157 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013158 <p>The orientation for a JPEG image.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013159 </td>
13160
13161 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080013162 Degrees in multiples of 90
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013163 </td>
13164
13165 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080013166 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013167 </td>
13168
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013169 <td class="entry_hal_version">
13170 <p>3.<wbr/>2</p>
13171 </td>
13172
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013173 <td class="entry_tags">
13174 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013175 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013176 </ul>
13177 </td>
13178
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013179 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013180 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013181 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013182 </tr>
13183 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013184 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013185 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
13186to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
13187upright.<wbr/></p>
13188<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
Yin-Chia Yeh58a8b192015-03-27 13:54:56 -070013189rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
13190the thumbnail data will also be rotated.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013191<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
13192by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
Emilian Peevfb438722018-03-28 11:17:14 +010013193<p>To translate from the device orientation given by the Android sensor APIs for camera
13194sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013195<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
13196 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
13197 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
13198
13199 //<wbr/> Round device orientation to a multiple of 90
13200 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
13201
13202 //<wbr/> Reverse device orientation for front-facing cameras
13203 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
13204 if (facingFront) deviceOrientation = -deviceOrientation;
13205
13206 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
13207 //<wbr/> the image upright relative to the device orientation
13208 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
13209
13210 return jpegOrientation;
13211}
13212</code></pre>
Emilian Peevfb438722018-03-28 11:17:14 +010013213<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
13214also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013215<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which
13216case the rotation is reflected by
13217<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
13218rotating the image data itself.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013219 </td>
13220 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013221
13222
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013223 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013224 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013225
13226
13227 <tr class="entry" id="controls_android.jpeg.quality">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013228 <td class="entry_name
13229 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013230 android.<wbr/>jpeg.<wbr/>quality
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013231 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013232 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013233 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013234
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070013235 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013236
13237
Igor Murashkinca256272014-10-02 15:27:09 -070013238 <span class="entry_type_hwlevel">[legacy] </span>
13239
Igor Murashkin6c936c12014-05-13 14:51:49 -070013240
13241
13242
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013243 </td> <!-- entry_type -->
13244
13245 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080013246 <p>Compression quality of the final JPEG
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070013247image.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013248 </td>
13249
13250 <td class="entry_units">
13251 </td>
13252
13253 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080013254 <p>1-100; larger is higher quality</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013255 </td>
13256
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013257 <td class="entry_hal_version">
13258 <p>3.<wbr/>2</p>
13259 </td>
13260
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013261 <td class="entry_tags">
13262 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013263 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013264 </ul>
13265 </td>
13266
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013267 </tr>
13268 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013269 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013270 </tr>
13271 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013272 <td class="entry_details" colspan="6">
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013273 <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality
13274of the HEIC image capture.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013275 </td>
13276 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013277
13278
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013279 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013280 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013281
13282
13283 <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013284 <td class="entry_name
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013285 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013286 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013287 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013288 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013289 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013290
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070013291 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013292
13293
Igor Murashkinca256272014-10-02 15:27:09 -070013294 <span class="entry_type_hwlevel">[legacy] </span>
13295
Igor Murashkin6c936c12014-05-13 14:51:49 -070013296
13297
13298
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013299 </td> <!-- entry_type -->
13300
13301 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080013302 <p>Compression quality of JPEG
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070013303thumbnail.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013304 </td>
13305
13306 <td class="entry_units">
13307 </td>
13308
13309 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080013310 <p>1-100; larger is higher quality</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013311 </td>
13312
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013313 <td class="entry_hal_version">
13314 <p>3.<wbr/>2</p>
13315 </td>
13316
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013317 <td class="entry_tags">
13318 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013319 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013320 </ul>
13321 </td>
13322
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013323 </tr>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013324 <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>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p>
13330 </td>
13331 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013332
13333
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013334 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013335 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013336
13337
13338 <tr class="entry" id="controls_android.jpeg.thumbnailSize">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013339 <td class="entry_name
Zhijun He5fb671c2014-05-21 17:51:05 -070013340 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080013341 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013342 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013343 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013344 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013345 <span class="entry_type_container">x</span>
13346
13347 <span class="entry_type_array">
13348 2
13349 </span>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070013350 <span class="entry_type_visibility"> [public as size]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013351
13352
Igor Murashkinca256272014-10-02 15:27:09 -070013353 <span class="entry_type_hwlevel">[legacy] </span>
13354
Igor Murashkin6c936c12014-05-13 14:51:49 -070013355
13356
13357
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013358 </td> <!-- entry_type -->
13359
13360 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070013361 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013362 </td>
13363
13364 <td class="entry_units">
13365 </td>
13366
13367 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013368 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013369 </td>
13370
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013371 <td class="entry_hal_version">
13372 <p>3.<wbr/>2</p>
13373 </td>
13374
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013375 <td class="entry_tags">
13376 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013377 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013378 </ul>
13379 </td>
13380
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013381 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013382 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013383 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013384 </tr>
13385 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013386 <td class="entry_details" colspan="6">
Zhijun Hef90eeaf2014-01-16 12:13:35 -080013387 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
13388but the captured JPEG will still be a valid image.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013389<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
13390should have the same aspect ratio as the main JPEG output.<wbr/></p>
Zhijun He5fb671c2014-05-21 17:51:05 -070013391<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
13392ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
13393For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1339416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
13395generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
13396Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
Yin-Chia Yeh390230b2015-06-22 15:50:05 -070013397<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
13398the camera device will handle thumbnail rotation in one of the following ways:</p>
13399<ul>
13400<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
13401 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
13402<li>Rotate the jpeg and thumbnail image data and not set
13403 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070013404 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumbnail size in
Yin-Chia Yeh390230b2015-06-22 15:50:05 -070013405 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
13406 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
13407 size.<wbr/></li>
13408</ul>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013409<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the
13410the thumbnail rotation is reflected by
13411<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
13412rotating the thumbnail data itself.<wbr/></p>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013413 </td>
13414 </tr>
13415
Zhijun He5fb671c2014-05-21 17:51:05 -070013416 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013417 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He5fb671c2014-05-21 17:51:05 -070013418 </tr>
13419 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013420 <td class="entry_details" colspan="6">
Zhijun He5fb671c2014-05-21 17:51:05 -070013421 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070013422The cropping must be done on the primary jpeg image rather than the sensor pre-correction
13423active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't
13424apply to the thumbnail image cropping.<wbr/></p>
Zhijun He5fb671c2014-05-21 17:51:05 -070013425 </td>
13426 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013427
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013428 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013429 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013430
13431
13432
13433 <!-- end of kind -->
13434 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013435 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013436
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070013437 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013438 <tr>
13439 <th class="th_name">Property Name</th>
13440 <th class="th_type">Type</th>
13441 <th class="th_description">Description</th>
13442 <th class="th_units">Units</th>
13443 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013444 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013445 <th class="th_tags">Tags</th>
13446 </tr>
13447 </thead>
13448
13449 <tbody>
13450
13451
13452
13453
13454
13455
13456
13457
13458
13459
13460 <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013461 <td class="entry_name
13462 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013463 android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013464 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013465 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013466 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013467 <span class="entry_type_container">x</span>
13468
13469 <span class="entry_type_array">
13470 2 x n
13471 </span>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070013472 <span class="entry_type_visibility"> [public as size]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013473
13474
Igor Murashkinca256272014-10-02 15:27:09 -070013475 <span class="entry_type_hwlevel">[legacy] </span>
13476
Igor Murashkin6c936c12014-05-13 14:51:49 -070013477
13478
13479
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013480 </td> <!-- entry_type -->
13481
13482 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013483 <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
13484camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013485 </td>
13486
13487 <td class="entry_units">
13488 </td>
13489
13490 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013491 </td>
13492
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013493 <td class="entry_hal_version">
13494 <p>3.<wbr/>2</p>
13495 </td>
13496
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013497 <td class="entry_tags">
13498 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013499 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013500 </ul>
13501 </td>
13502
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013503 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013504 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013505 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013506 </tr>
13507 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013508 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013509 <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
13510thumbnail should be generated.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070013511<p>Below conditions will be satisfied for this size list:</p>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013512<ul>
Zhijun Hef90eeaf2014-01-16 12:13:35 -080013513<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
13514If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
13515<li>The aspect ratio of the largest thumbnail size will be same as the
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080013516aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013517The largest size is defined as the size that has the largest pixel area
Igor Murashkin0b080452013-12-27 15:30:25 -080013518in a given size list.<wbr/></li>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080013519<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
Igor Murashkin0b080452013-12-27 15:30:25 -080013520one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
13521and vice versa.<wbr/></li>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013522<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
Igor Murashkin0b080452013-12-27 15:30:25 -080013523</ul>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013524<p>This list is also used as supported thumbnail sizes for HEIC image format capture.<wbr/></p>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013525 </td>
13526 </tr>
13527
13528
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013529 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013530 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013531
13532
13533 <tr class="entry" id="static_android.jpeg.maxSize">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013534 <td class="entry_name
13535 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013536 android.<wbr/>jpeg.<wbr/>max<wbr/>Size
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013537 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013538 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013539 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013540
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070013541 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013542
13543
Igor Murashkin6c936c12014-05-13 14:51:49 -070013544
13545
13546
Igor Murashkinca256272014-10-02 15:27:09 -070013547
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013548 </td> <!-- entry_type -->
13549
13550 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080013551 <p>Maximum size in bytes for the compressed
Jayant Chowdhary505f6342021-07-12 09:26:53 -070013552JPEG buffer,<wbr/> in default sensor pixel mode (see <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>)</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013553 </td>
13554
13555 <td class="entry_units">
13556 </td>
13557
13558 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080013559 <p>Must be large enough to fit any JPEG produced by
13560the camera</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013561 </td>
13562
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013563 <td class="entry_hal_version">
13564 <p>3.<wbr/>2</p>
13565 </td>
13566
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013567 <td class="entry_tags">
13568 </td>
13569
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013570 </tr>
13571 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013572 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013573 </tr>
13574 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013575 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080013576 <p>This is used for sizing the gralloc buffers for
13577JPEG</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013578 </td>
13579 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013580
13581
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013582 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013583 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013584
13585
13586
13587 <!-- end of kind -->
13588 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013589 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013590
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070013591 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013592 <tr>
13593 <th class="th_name">Property Name</th>
13594 <th class="th_type">Type</th>
13595 <th class="th_description">Description</th>
13596 <th class="th_units">Units</th>
13597 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013598 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013599 <th class="th_tags">Tags</th>
13600 </tr>
13601 </thead>
13602
13603 <tbody>
13604
13605
13606
13607
13608
13609
13610
13611
13612
13613
Ruben Brunk9c766ad2014-05-27 18:52:49 -070013614 <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
13615 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013616 " rowspan="3">
Ruben Brunk9c766ad2014-05-27 18:52:49 -070013617 android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
13618 </td>
13619 <td class="entry_type">
13620 <span class="entry_type_name">byte</span>
13621
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070013622 <span class="entry_type_visibility"> [java_public as location]</span>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070013623
13624 <span class="entry_type_synthetic">[synthetic] </span>
13625
Igor Murashkinca256272014-10-02 15:27:09 -070013626 <span class="entry_type_hwlevel">[legacy] </span>
13627
Ruben Brunk9c766ad2014-05-27 18:52:49 -070013628
13629
13630
13631 </td> <!-- entry_type -->
13632
13633 <td class="entry_description">
13634 <p>A location object to use when generating image GPS metadata.<wbr/></p>
13635 </td>
13636
13637 <td class="entry_units">
13638 </td>
13639
13640 <td class="entry_range">
13641 </td>
13642
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013643 <td class="entry_hal_version">
13644 <p>3.<wbr/>2</p>
13645 </td>
13646
Ruben Brunk9c766ad2014-05-27 18:52:49 -070013647 <td class="entry_tags">
13648 </td>
13649
13650 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013651 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013652 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013653 </tr>
13654 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013655 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013656 <p>Setting a location object in a request will include the GPS coordinates of the location
13657into any JPEG images captured based on the request.<wbr/> These coordinates can then be
13658viewed by anyone who receives the JPEG image.<wbr/></p>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013659<p>This tag is also used for HEIC image capture.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013660 </td>
13661 </tr>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070013662
13663
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013664 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070013665 <!-- end of entry -->
13666
13667
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013668 <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013669 <td class="entry_name
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013670 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013671 android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013672 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013673 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013674 <span class="entry_type_name">double</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013675 <span class="entry_type_container">x</span>
13676
13677 <span class="entry_type_array">
13678 3
13679 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070013680 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070013681
13682
Igor Murashkinca256272014-10-02 15:27:09 -070013683 <span class="entry_type_hwlevel">[legacy] </span>
13684
Igor Murashkin6c936c12014-05-13 14:51:49 -070013685
Igor Murashkin0b080452013-12-27 15:30:25 -080013686 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013687
13688
13689 </td> <!-- entry_type -->
13690
13691 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080013692 <p>GPS coordinates to include in output JPEG
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013693EXIF.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013694 </td>
13695
13696 <td class="entry_units">
13697 </td>
13698
13699 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080013700 <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013701 </td>
13702
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013703 <td class="entry_hal_version">
13704 <p>3.<wbr/>2</p>
13705 </td>
13706
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013707 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013708 <ul class="entry_tags">
13709 <li><a href="#tag_BC">BC</a></li>
13710 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013711 </td>
13712
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013713 </tr>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013714 <tr class="entries_header">
13715 <th class="th_details" colspan="6">Details</th>
13716 </tr>
13717 <tr class="entry_cont">
13718 <td class="entry_details" colspan="6">
13719 <p>This tag is also used for HEIC image capture.<wbr/></p>
13720 </td>
13721 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013722
13723
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013724 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013725 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013726
13727
13728 <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013729 <td class="entry_name
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013730 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013731 android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013732 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013733 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013734 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013735
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070013736 <span class="entry_type_visibility"> [ndk_public as string]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013737
13738
Igor Murashkinca256272014-10-02 15:27:09 -070013739 <span class="entry_type_hwlevel">[legacy] </span>
13740
Igor Murashkin6c936c12014-05-13 14:51:49 -070013741
13742
13743
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013744 </td> <!-- entry_type -->
13745
13746 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080013747 <p>32 characters describing GPS algorithm to
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013748include in EXIF.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013749 </td>
13750
13751 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080013752 UTF-8 null-terminated string
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013753 </td>
13754
13755 <td class="entry_range">
13756 </td>
13757
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013758 <td class="entry_hal_version">
13759 <p>3.<wbr/>2</p>
13760 </td>
13761
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013762 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013763 <ul class="entry_tags">
13764 <li><a href="#tag_BC">BC</a></li>
13765 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013766 </td>
13767
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013768 </tr>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013769 <tr class="entries_header">
13770 <th class="th_details" colspan="6">Details</th>
13771 </tr>
13772 <tr class="entry_cont">
13773 <td class="entry_details" colspan="6">
13774 <p>This tag is also used for HEIC image capture.<wbr/></p>
13775 </td>
13776 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013777
13778
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013779 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013780 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013781
13782
13783 <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013784 <td class="entry_name
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013785 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013786 android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013787 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013788 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013789 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013790
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070013791 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013792
13793
Igor Murashkinca256272014-10-02 15:27:09 -070013794 <span class="entry_type_hwlevel">[legacy] </span>
13795
Igor Murashkin6c936c12014-05-13 14:51:49 -070013796
13797
13798
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013799 </td> <!-- entry_type -->
13800
13801 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080013802 <p>Time GPS fix was made to include in
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013803EXIF.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013804 </td>
13805
13806 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080013807 UTC in seconds since January 1,<wbr/> 1970
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013808 </td>
13809
13810 <td class="entry_range">
13811 </td>
13812
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013813 <td class="entry_hal_version">
13814 <p>3.<wbr/>2</p>
13815 </td>
13816
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013817 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013818 <ul class="entry_tags">
13819 <li><a href="#tag_BC">BC</a></li>
13820 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013821 </td>
13822
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013823 </tr>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013824 <tr class="entries_header">
13825 <th class="th_details" colspan="6">Details</th>
13826 </tr>
13827 <tr class="entry_cont">
13828 <td class="entry_details" colspan="6">
13829 <p>This tag is also used for HEIC image capture.<wbr/></p>
13830 </td>
13831 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013832
13833
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013834 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013835 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013836
13837
13838 <tr class="entry" id="dynamic_android.jpeg.orientation">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013839 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013840 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013841 android.<wbr/>jpeg.<wbr/>orientation
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013842 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013843 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013844 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013845
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070013846 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013847
13848
Igor Murashkinca256272014-10-02 15:27:09 -070013849 <span class="entry_type_hwlevel">[legacy] </span>
13850
Igor Murashkin6c936c12014-05-13 14:51:49 -070013851
13852
13853
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013854 </td> <!-- entry_type -->
13855
13856 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013857 <p>The orientation for a JPEG image.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013858 </td>
13859
13860 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080013861 Degrees in multiples of 90
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013862 </td>
13863
13864 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080013865 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013866 </td>
13867
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013868 <td class="entry_hal_version">
13869 <p>3.<wbr/>2</p>
13870 </td>
13871
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013872 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013873 <ul class="entry_tags">
13874 <li><a href="#tag_BC">BC</a></li>
13875 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013876 </td>
13877
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013878 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013879 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013880 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013881 </tr>
13882 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013883 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013884 <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
13885to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
13886upright.<wbr/></p>
13887<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
Yin-Chia Yeh58a8b192015-03-27 13:54:56 -070013888rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
13889the thumbnail data will also be rotated.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013890<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
13891by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
Emilian Peevfb438722018-03-28 11:17:14 +010013892<p>To translate from the device orientation given by the Android sensor APIs for camera
13893sensors which are not EXTERNAL,<wbr/> the following sample code may be used:</p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013894<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
13895 if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
13896 int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
13897
13898 //<wbr/> Round device orientation to a multiple of 90
13899 deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
13900
13901 //<wbr/> Reverse device orientation for front-facing cameras
13902 boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
13903 if (facingFront) deviceOrientation = -deviceOrientation;
13904
13905 //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
13906 //<wbr/> the image upright relative to the device orientation
13907 int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
13908
13909 return jpegOrientation;
13910}
13911</code></pre>
Emilian Peevfb438722018-03-28 11:17:14 +010013912<p>For EXTERNAL cameras the sensor orientation will always be set to 0 and the facing will
13913also be set to EXTERNAL.<wbr/> The above code is not relevant in such case.<wbr/></p>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013914<p>This tag is also used to describe the orientation of the HEIC image capture,<wbr/> in which
13915case the rotation is reflected by
13916<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
13917rotating the image data itself.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070013918 </td>
13919 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013920
13921
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013922 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013923 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013924
13925
13926 <tr class="entry" id="dynamic_android.jpeg.quality">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013927 <td class="entry_name
13928 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013929 android.<wbr/>jpeg.<wbr/>quality
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013930 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013931 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013932 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013933
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070013934 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013935
13936
Igor Murashkinca256272014-10-02 15:27:09 -070013937 <span class="entry_type_hwlevel">[legacy] </span>
13938
Igor Murashkin6c936c12014-05-13 14:51:49 -070013939
13940
13941
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013942 </td> <!-- entry_type -->
13943
13944 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080013945 <p>Compression quality of the final JPEG
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070013946image.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013947 </td>
13948
13949 <td class="entry_units">
13950 </td>
13951
13952 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080013953 <p>1-100; larger is higher quality</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013954 </td>
13955
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013956 <td class="entry_hal_version">
13957 <p>3.<wbr/>2</p>
13958 </td>
13959
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013960 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080013961 <ul class="entry_tags">
13962 <li><a href="#tag_BC">BC</a></li>
13963 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013964 </td>
13965
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013966 </tr>
13967 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013968 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013969 </tr>
13970 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013971 <td class="entry_details" colspan="6">
Shuzhen Wanga44fd452018-12-28 18:50:53 -080013972 <p>85-95 is typical usage range.<wbr/> This tag is also used to describe the quality
13973of the HEIC image capture.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013974 </td>
13975 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013976
13977
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080013978 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080013979 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013980
13981
13982 <tr class="entry" id="dynamic_android.jpeg.size">
Igor Murashkin6c936c12014-05-13 14:51:49 -070013983 <td class="entry_name
13984 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080013985 android.<wbr/>jpeg.<wbr/>size
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080013986 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013987 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080013988 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013989
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070013990 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013991
13992
Igor Murashkin6c936c12014-05-13 14:51:49 -070013993
13994
13995
Igor Murashkinca256272014-10-02 15:27:09 -070013996
Igor Murashkin08b8aad2012-11-29 15:23:03 -080013997 </td> <!-- entry_type -->
13998
13999 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080014000 <p>The size of the compressed JPEG image,<wbr/> in
14001bytes</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014002 </td>
14003
14004 <td class="entry_units">
14005 </td>
14006
14007 <td class="entry_range">
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080014008 <p>&gt;= 0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014009 </td>
14010
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014011 <td class="entry_hal_version">
14012 <p>3.<wbr/>2</p>
14013 </td>
14014
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014015 <td class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070014016 <ul class="entry_tags">
14017 <li><a href="#tag_FUTURE">FUTURE</a></li>
14018 </ul>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014019 </td>
14020
14021 </tr>
14022 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014023 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014024 </tr>
14025 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014026 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080014027 <p>If no JPEG output is produced for the request,<wbr/>
14028this must be 0.<wbr/></p>
14029<p>Otherwise,<wbr/> this describes the real size of the compressed
14030JPEG image placed in the output stream.<wbr/> More specifically,<wbr/>
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080014031if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
14032has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
Igor Murashkin0b080452013-12-27 15:30:25 -080014033the JPEG stream will be 1000000 bytes,<wbr/> of which the first
14034500000 make up the real data.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014035 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014036 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014037
14038
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014039 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014040 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014041
14042
14043 <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014044 <td class="entry_name
Shuzhen Wanga44fd452018-12-28 18:50:53 -080014045 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014046 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014047 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014048 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014049 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014050
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014051 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014052
14053
Igor Murashkinca256272014-10-02 15:27:09 -070014054 <span class="entry_type_hwlevel">[legacy] </span>
14055
Igor Murashkin6c936c12014-05-13 14:51:49 -070014056
14057
14058
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014059 </td> <!-- entry_type -->
14060
14061 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080014062 <p>Compression quality of JPEG
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070014063thumbnail.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014064 </td>
14065
14066 <td class="entry_units">
14067 </td>
14068
14069 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080014070 <p>1-100; larger is higher quality</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014071 </td>
14072
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014073 <td class="entry_hal_version">
14074 <p>3.<wbr/>2</p>
14075 </td>
14076
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014077 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014078 <ul class="entry_tags">
14079 <li><a href="#tag_BC">BC</a></li>
14080 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014081 </td>
14082
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014083 </tr>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080014084 <tr class="entries_header">
14085 <th class="th_details" colspan="6">Details</th>
14086 </tr>
14087 <tr class="entry_cont">
14088 <td class="entry_details" colspan="6">
14089 <p>This tag is also used to describe the quality of the HEIC image capture.<wbr/></p>
14090 </td>
14091 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014092
14093
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014094 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014095 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014096
14097
14098 <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014099 <td class="entry_name
Zhijun He5fb671c2014-05-21 17:51:05 -070014100 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080014101 android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014102 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014103 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014104 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014105 <span class="entry_type_container">x</span>
14106
14107 <span class="entry_type_array">
14108 2
14109 </span>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070014110 <span class="entry_type_visibility"> [public as size]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014111
14112
Igor Murashkinca256272014-10-02 15:27:09 -070014113 <span class="entry_type_hwlevel">[legacy] </span>
14114
Igor Murashkin6c936c12014-05-13 14:51:49 -070014115
14116
14117
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014118 </td> <!-- entry_type -->
14119
14120 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070014121 <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014122 </td>
14123
14124 <td class="entry_units">
14125 </td>
14126
14127 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014128 <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014129 </td>
14130
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014131 <td class="entry_hal_version">
14132 <p>3.<wbr/>2</p>
14133 </td>
14134
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014135 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014136 <ul class="entry_tags">
14137 <li><a href="#tag_BC">BC</a></li>
14138 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014139 </td>
14140
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014141 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014142 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014143 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014144 </tr>
14145 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014146 <td class="entry_details" colspan="6">
Zhijun Hef90eeaf2014-01-16 12:13:35 -080014147 <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
14148but the captured JPEG will still be a valid image.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014149<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
14150should have the same aspect ratio as the main JPEG output.<wbr/></p>
Zhijun He5fb671c2014-05-21 17:51:05 -070014151<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
14152ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
14153For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1415416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
14155generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
14156Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
Yin-Chia Yeh390230b2015-06-22 15:50:05 -070014157<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
14158the camera device will handle thumbnail rotation in one of the following ways:</p>
14159<ul>
14160<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
14161 and keep jpeg and thumbnail image data unrotated.<wbr/></li>
14162<li>Rotate the jpeg and thumbnail image data and not set
14163 <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070014164 case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumbnail size in
Yin-Chia Yeh390230b2015-06-22 15:50:05 -070014165 capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
14166 orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
14167 size.<wbr/></li>
14168</ul>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080014169<p>The tag is also used as thumbnail size for HEIC image format capture,<wbr/> in which case the
14170the thumbnail rotation is reflected by
14171<a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>,<wbr/> and not by
14172rotating the thumbnail data itself.<wbr/></p>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014173 </td>
14174 </tr>
14175
Zhijun He5fb671c2014-05-21 17:51:05 -070014176 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014177 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He5fb671c2014-05-21 17:51:05 -070014178 </tr>
14179 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014180 <td class="entry_details" colspan="6">
Zhijun He5fb671c2014-05-21 17:51:05 -070014181 <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070014182The cropping must be done on the primary jpeg image rather than the sensor pre-correction
14183active array.<wbr/> The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't
14184apply to the thumbnail image cropping.<wbr/></p>
Zhijun He5fb671c2014-05-21 17:51:05 -070014185 </td>
14186 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014187
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014188 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014189 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014190
14191
14192
14193 <!-- end of kind -->
14194 </tbody>
14195
14196 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014197 <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014198
14199
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014200 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014201
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014202 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014203 <tr>
14204 <th class="th_name">Property Name</th>
14205 <th class="th_type">Type</th>
14206 <th class="th_description">Description</th>
14207 <th class="th_units">Units</th>
14208 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014209 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014210 <th class="th_tags">Tags</th>
14211 </tr>
14212 </thead>
14213
14214 <tbody>
14215
14216
14217
14218
14219
14220
14221
14222
14223
14224
14225 <tr class="entry" id="controls_android.lens.aperture">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014226 <td class="entry_name
14227 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014228 android.<wbr/>lens.<wbr/>aperture
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014229 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014230 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014231 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014232
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014233 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014234
14235
Igor Murashkinca256272014-10-02 15:27:09 -070014236 <span class="entry_type_hwlevel">[full] </span>
14237
Igor Murashkin6c936c12014-05-13 14:51:49 -070014238
14239
14240
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014241 </td> <!-- entry_type -->
14242
14243 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014244 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
14245effective aperture diameter.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014246 </td>
14247
14248 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014249 The f-number (f/<wbr/>N)
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014250 </td>
14251
14252 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080014253 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014254 </td>
14255
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014256 <td class="entry_hal_version">
14257 <p>3.<wbr/>2</p>
14258 </td>
14259
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014260 <td class="entry_tags">
14261 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014262 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014263 </ul>
14264 </td>
14265
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014266 </tr>
14267 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014268 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014269 </tr>
14270 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014271 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014272 <p>Setting this value is only supported on the camera devices that have a variable
14273aperture lens.<wbr/></p>
Zhijun He1b58d382014-01-10 10:22:53 -080014274<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
14275this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080014276<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>
Zhijun He1b58d382014-01-10 10:22:53 -080014277to achieve manual exposure control.<wbr/></p>
14278<p>The requested aperture value may take several frames to reach the
14279requested value; the camera device will report the current (intermediate)
Zhijun He5169ce12014-01-24 16:48:25 -080014280aperture size in capture result metadata while the aperture is changing.<wbr/>
14281While 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>
Zhijun He1b58d382014-01-10 10:22:53 -080014282<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
14283the ON modes,<wbr/> this will be overridden by the camera device
14284auto-exposure algorithm,<wbr/> the overridden values are then provided
14285back to the user in the corresponding result.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014286 </td>
14287 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014288
14289
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014290 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014291 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014292
14293
14294 <tr class="entry" id="controls_android.lens.filterDensity">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014295 <td class="entry_name
14296 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014297 android.<wbr/>lens.<wbr/>filter<wbr/>Density
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014298 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014299 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014300 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014301
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014302 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014303
14304
Igor Murashkinca256272014-10-02 15:27:09 -070014305 <span class="entry_type_hwlevel">[full] </span>
14306
Igor Murashkin6c936c12014-05-13 14:51:49 -070014307
14308
14309
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014310 </td> <!-- entry_type -->
14311
14312 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014313 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014314 </td>
14315
14316 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014317 Exposure Value (EV)
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014318 </td>
14319
14320 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080014321 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014322 </td>
14323
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014324 <td class="entry_hal_version">
14325 <p>3.<wbr/>2</p>
14326 </td>
14327
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014328 <td class="entry_tags">
14329 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014330 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014331 </ul>
14332 </td>
14333
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014334 </tr>
14335 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014336 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014337 </tr>
14338 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014339 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014340 <p>This control will not be supported on most camera devices.<wbr/></p>
Ruben Brunk83eb3032014-01-15 16:12:07 -080014341<p>Lens filters are typically used to lower the amount of light the
14342sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
14343step is the standard logarithmic representation,<wbr/> which are
14344non-negative,<wbr/> and inversely proportional to the amount of light
14345hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
14346in no reduction of the incoming light,<wbr/> and setting this to 2 would
14347mean that the filter is set to reduce incoming light by two stops
14348(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
Zhijun He5169ce12014-01-24 16:48:25 -080014349<p>It may take several frames before the lens filter density changes
14350to the requested value.<wbr/> While the filter density is still changing,<wbr/>
14351<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014352 </td>
14353 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014354
14355
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014356 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014357 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014358
14359
14360 <tr class="entry" id="controls_android.lens.focalLength">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014361 <td class="entry_name
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080014362 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080014363 android.<wbr/>lens.<wbr/>focal<wbr/>Length
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014364 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014365 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014366 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014367
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014368 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014369
14370
Igor Murashkinca256272014-10-02 15:27:09 -070014371 <span class="entry_type_hwlevel">[legacy] </span>
14372
Igor Murashkin6c936c12014-05-13 14:51:49 -070014373
14374
14375
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014376 </td> <!-- entry_type -->
14377
14378 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014379 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014380 </td>
14381
14382 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014383 Millimeters
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014384 </td>
14385
14386 <td class="entry_range">
Ruben Brunkac9bbb92014-01-15 18:39:35 -080014387 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014388 </td>
14389
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014390 <td class="entry_hal_version">
14391 <p>3.<wbr/>2</p>
14392 </td>
14393
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014394 <td class="entry_tags">
14395 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014396 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014397 </ul>
14398 </td>
14399
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014400 </tr>
14401 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014402 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014403 </tr>
14404 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014405 <td class="entry_details" colspan="6">
Ruben Brunkac9bbb92014-01-15 18:39:35 -080014406 <p>This setting controls the physical focal length of the camera
14407device's lens.<wbr/> Changing the focal length changes the field of
14408view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14409<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
14410setting won't be applied instantaneously,<wbr/> and it may take several
Zhijun He5169ce12014-01-24 16:48:25 -080014411frames before the lens can change to the requested focal length.<wbr/>
Ruben Brunkac9bbb92014-01-15 18:39:35 -080014412While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14413be set to MOVING.<wbr/></p>
Shuzhen Wangd36ef432020-03-12 21:36:18 -070014414<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API
14415level 30,<wbr/> the camera device may combine optical and digital zoom through the
14416<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014417 </td>
14418 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014419
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080014420 <tr class="entries_header">
14421 <th class="th_details" colspan="6">HAL Implementation Details</th>
14422 </tr>
14423 <tr class="entry_cont">
14424 <td class="entry_details" colspan="6">
14425 <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and
14426cropRegion change in the same request,<wbr/> the camera device must make sure that the new
14427focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there
14428is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied
14429immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device
14430will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080014431<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the
14432combination of optical and digital zoom using the new <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> API,<wbr/> in
14433lieu of using <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080014434 </td>
14435 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014436
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014437 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014438 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014439
14440
14441 <tr class="entry" id="controls_android.lens.focusDistance">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014442 <td class="entry_name
14443 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014444 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014445 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014446 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014447 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014448
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014449 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014450
14451
Igor Murashkinca256272014-10-02 15:27:09 -070014452 <span class="entry_type_hwlevel">[full] </span>
14453
Igor Murashkin6c936c12014-05-13 14:51:49 -070014454
14455
14456
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014457 </td> <!-- entry_type -->
14458
14459 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014460 <p>Desired distance to plane of sharpest focus,<wbr/>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070014461measured from frontmost surface of the lens.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014462 </td>
14463
14464 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014465 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014466 </td>
14467
14468 <td class="entry_range">
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080014469 <p>&gt;= 0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014470 </td>
14471
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014472 <td class="entry_hal_version">
14473 <p>3.<wbr/>2</p>
14474 </td>
14475
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014476 <td class="entry_tags">
14477 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014478 <li><a href="#tag_BC">BC</a></li>
14479 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014480 </ul>
14481 </td>
14482
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014483 </tr>
14484 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014485 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014486 </tr>
14487 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014488 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014489 <p>This control can be used for setting manual focus,<wbr/> on devices that support
14490the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
14491<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
14492<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
14493<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>
Zhijun He5169ce12014-01-24 16:48:25 -080014494<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
14495instantaneously,<wbr/> and it may take several frames before the lens
14496can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
14497<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -070014498<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
14499for infinity focus.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014500 </td>
14501 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014502
14503
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014504 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014505 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014506
14507
14508 <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014509 <td class="entry_name
14510 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014511 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014512 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014513 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014514 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014515
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014516 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014517
Igor Murashkin6c936c12014-05-13 14:51:49 -070014518
Igor Murashkinca256272014-10-02 15:27:09 -070014519 <span class="entry_type_hwlevel">[limited] </span>
14520
Igor Murashkin6c936c12014-05-13 14:51:49 -070014521
14522
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014523 <ul class="entry_type_enum">
14524 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080014525 <span class="entry_type_enum_name">OFF (v3.2)</span>
Ruben Brunk218639c2014-01-15 18:09:41 -080014526 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014527 </li>
14528 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080014529 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070014530 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk218639c2014-01-15 18:09:41 -080014531 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014532 </li>
14533 </ul>
14534
14535 </td> <!-- entry_type -->
14536
14537 <td class="entry_description">
Ruben Brunk218639c2014-01-15 18:09:41 -080014538 <p>Sets whether the camera device uses optical image stabilization (OIS)
14539when capturing images.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014540 </td>
14541
14542 <td class="entry_units">
14543 </td>
14544
14545 <td class="entry_range">
Ruben Brunk218639c2014-01-15 18:09:41 -080014546 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014547 </td>
14548
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014549 <td class="entry_hal_version">
14550 <p>3.<wbr/>2</p>
14551 </td>
14552
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014553 <td class="entry_tags">
14554 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014555 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014556 </ul>
14557 </td>
14558
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014559 </tr>
14560 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014561 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014562 </tr>
14563 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014564 <td class="entry_details" colspan="6">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070014565 <p>OIS is used to compensate for motion blur due to small
14566movements of the camera during capture.<wbr/> Unlike digital image
14567stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14568makes use of mechanical elements to stabilize the camera
14569sensor,<wbr/> and thus allows for longer exposure times before
14570camera shake becomes apparent.<wbr/></p>
Zhijun He91449c82014-06-12 10:43:32 -070014571<p>Switching between different optical stabilization modes may take several
14572frames to initialize,<wbr/> the camera device will report the current mode in
14573capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14574optical stabilization modes in the first several capture results may still
14575be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014576<p>If a camera device supports both OIS and digital image stabilization
14577(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14578interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -070014579<p>If <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
14580<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose
14581to turn on hardware based image stabilization in addition to software based stabilization
14582if it deems that appropriate.<wbr/> This key's value in the capture result will reflect which
14583OIS mode was chosen.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070014584<p>Not all devices will support OIS; see
14585<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14586available controls.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014587 </td>
14588 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014589
14590
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014591 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014592 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014593
14594
14595
14596 <!-- end of kind -->
14597 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014598 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014599
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014600 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014601 <tr>
14602 <th class="th_name">Property Name</th>
14603 <th class="th_type">Type</th>
14604 <th class="th_description">Description</th>
14605 <th class="th_units">Units</th>
14606 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014607 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014608 <th class="th_tags">Tags</th>
14609 </tr>
14610 </thead>
14611
14612 <tbody>
14613
14614
14615
14616
14617
14618
14619
14620
14621
14622
14623
14624
14625 <tr class="entry" id="static_android.lens.info.availableApertures">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014626 <td class="entry_name
14627 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014628 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014629 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014630 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014631 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014632 <span class="entry_type_container">x</span>
14633
14634 <span class="entry_type_array">
14635 n
14636 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014637 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014638
14639
Igor Murashkinca256272014-10-02 15:27:09 -070014640 <span class="entry_type_hwlevel">[full] </span>
14641
Igor Murashkin6c936c12014-05-13 14:51:49 -070014642
14643
14644
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014645 </td> <!-- entry_type -->
14646
14647 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014648 <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
14649supported by this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014650 </td>
14651
14652 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014653 The aperture f-number
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014654 </td>
14655
14656 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014657 </td>
14658
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014659 <td class="entry_hal_version">
14660 <p>3.<wbr/>2</p>
14661 </td>
14662
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014663 <td class="entry_tags">
14664 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014665 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014666 </ul>
14667 </td>
14668
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014669 </tr>
14670 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014671 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014672 </tr>
14673 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014674 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014675 <p>If the camera device doesn't support a variable lens aperture,<wbr/>
14676this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
14677<p>If the camera device supports a variable aperture,<wbr/> the aperture values
Zhijun He1b58d382014-01-10 10:22:53 -080014678in this list will be sorted in ascending order.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014679 </td>
14680 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014681
14682
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014683 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014684 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014685
14686
14687 <tr class="entry" id="static_android.lens.info.availableFilterDensities">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014688 <td class="entry_name
14689 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014690 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014691 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014692 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014693 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014694 <span class="entry_type_container">x</span>
14695
14696 <span class="entry_type_array">
14697 n
14698 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014699 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014700
14701
Igor Murashkinca256272014-10-02 15:27:09 -070014702 <span class="entry_type_hwlevel">[full] </span>
14703
Igor Murashkin6c936c12014-05-13 14:51:49 -070014704
14705
14706
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014707 </td> <!-- entry_type -->
14708
14709 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014710 <p>List of neutral density filter values for
14711<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014712 </td>
14713
14714 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014715 Exposure value (EV)
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014716 </td>
14717
14718 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014719 <p>Values are &gt;= 0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014720 </td>
14721
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014722 <td class="entry_hal_version">
14723 <p>3.<wbr/>2</p>
14724 </td>
14725
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014726 <td class="entry_tags">
14727 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014728 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014729 </ul>
14730 </td>
14731
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014732 </tr>
14733 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014734 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014735 </tr>
14736 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014737 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014738 <p>If a neutral density filter is not supported by this camera device,<wbr/>
14739this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
14740filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014741 </td>
14742 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014743
14744
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014745 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014746 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014747
14748
14749 <tr class="entry" id="static_android.lens.info.availableFocalLengths">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014750 <td class="entry_name
14751 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014752 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014753 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014754 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014755 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014756 <span class="entry_type_container">x</span>
14757
14758 <span class="entry_type_array">
14759 n
14760 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014761 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070014762
14763
Igor Murashkinca256272014-10-02 15:27:09 -070014764 <span class="entry_type_hwlevel">[legacy] </span>
14765
Igor Murashkin6c936c12014-05-13 14:51:49 -070014766
Ruben Brunkac9bbb92014-01-15 18:39:35 -080014767 <div class="entry_type_notes">The list of available focal lengths</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014768
14769
14770 </td> <!-- entry_type -->
14771
14772 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014773 <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
14774device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014775 </td>
14776
14777 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014778 Millimeters
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014779 </td>
14780
14781 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014782 <p>Values are &gt; 0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014783 </td>
14784
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014785 <td class="entry_hal_version">
14786 <p>3.<wbr/>2</p>
14787 </td>
14788
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014789 <td class="entry_tags">
14790 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014791 <li><a href="#tag_BC">BC</a></li>
14792 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014793 </ul>
14794 </td>
14795
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014796 </tr>
14797 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014798 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014799 </tr>
14800 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014801 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014802 <p>If optical zoom is not supported,<wbr/> this list will only contain
14803a single value corresponding to the fixed focal length of the
14804device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
14805by the camera device,<wbr/> in ascending order.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014806 </td>
14807 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014808
14809
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014810 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014811 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014812
14813
14814 <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014815 <td class="entry_name
14816 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014817 android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014818 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014819 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014820 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014821 <span class="entry_type_container">x</span>
14822
14823 <span class="entry_type_array">
14824 n
14825 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070014826 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070014827
14828
Igor Murashkinca256272014-10-02 15:27:09 -070014829 <span class="entry_type_hwlevel">[limited] </span>
14830
Igor Murashkin6c936c12014-05-13 14:51:49 -070014831
Igor Murashkin0b080452013-12-27 15:30:25 -080014832 <div class="entry_type_notes">list of enums</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014833
14834
14835 </td> <!-- entry_type -->
14836
14837 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014838 <p>List of optical image stabilization (OIS) modes for
14839<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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014840 </td>
14841
14842 <td class="entry_units">
14843 </td>
14844
14845 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014846 <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014847 </td>
14848
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014849 <td class="entry_hal_version">
14850 <p>3.<wbr/>2</p>
14851 </td>
14852
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014853 <td class="entry_tags">
14854 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014855 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014856 </ul>
14857 </td>
14858
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014859 </tr>
Ruben Brunk218639c2014-01-15 18:09:41 -080014860 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014861 <th class="th_details" colspan="6">Details</th>
Ruben Brunk218639c2014-01-15 18:09:41 -080014862 </tr>
14863 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014864 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014865 <p>If OIS is not supported by a given camera device,<wbr/> this list will
Ruben Brunk218639c2014-01-15 18:09:41 -080014866contain only OFF.<wbr/></p>
14867 </td>
14868 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014869
14870
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014871 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014872 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014873
14874
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014875 <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014876 <td class="entry_name
14877 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080014878 android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014879 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014880 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014881 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014882
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014883 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014884
14885
Igor Murashkinca256272014-10-02 15:27:09 -070014886 <span class="entry_type_hwlevel">[limited] </span>
14887
Igor Murashkin6c936c12014-05-13 14:51:49 -070014888
14889
14890
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014891 </td> <!-- entry_type -->
14892
14893 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014894 <p>Hyperfocal distance for this lens.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014895 </td>
14896
14897 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014898 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014899 </td>
14900
14901 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014902 <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
14903within <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014904 </td>
14905
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014906 <td class="entry_hal_version">
14907 <p>3.<wbr/>2</p>
14908 </td>
14909
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014910 <td class="entry_tags">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014911 </td>
14912
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014913 </tr>
14914 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014915 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014916 </tr>
14917 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014918 <td class="entry_details" colspan="6">
Zhijun He27afb782014-04-29 19:23:08 -070014919 <p>If the lens is not fixed focus,<wbr/> the camera device will report this
Zhijun Hef92c76a2014-02-06 01:40:35 -080014920field 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>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014921 </td>
14922 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014923
14924
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014925 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014926 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014927
14928
14929 <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014930 <td class="entry_name
Igor Murashkin7b721082014-06-19 15:45:58 -070014931 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080014932 android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014933 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014934 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080014935 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014936
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070014937 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014938
14939
Igor Murashkinca256272014-10-02 15:27:09 -070014940 <span class="entry_type_hwlevel">[limited] </span>
14941
Igor Murashkin6c936c12014-05-13 14:51:49 -070014942
14943
14944
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014945 </td> <!-- entry_type -->
14946
14947 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080014948 <p>Shortest distance from frontmost surface
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014949of the lens that can be brought into sharp focus.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014950 </td>
14951
14952 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014953 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014954 </td>
14955
14956 <td class="entry_range">
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080014957 <p>&gt;= 0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014958 </td>
14959
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014960 <td class="entry_hal_version">
14961 <p>3.<wbr/>2</p>
14962 </td>
14963
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014964 <td class="entry_tags">
14965 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080014966 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014967 </ul>
14968 </td>
14969
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014970 </tr>
14971 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014972 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014973 </tr>
14974 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014975 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070014976 <p>If the lens is fixed-focus,<wbr/> this will be
Zhijun Hef92c76a2014-02-06 01:40:35 -0800149770.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014978 </td>
14979 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014980
Igor Murashkin7b721082014-06-19 15:45:58 -070014981 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014982 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin7b721082014-06-19 15:45:58 -070014983 </tr>
14984 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014985 <td class="entry_details" colspan="6">
Igor Murashkin7b721082014-06-19 15:45:58 -070014986 <p>Mandatory for FULL devices; LIMITED devices
14987must always set this value to 0 for fixed-focus; and may omit
14988the minimum focus distance otherwise.<wbr/></p>
14989<p>This field is also mandatory for all devices advertising
14990the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
14991 </td>
14992 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080014993
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080014994 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080014995 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014996
14997
Igor Murashkin08b8aad2012-11-29 15:23:03 -080014998 <tr class="entry" id="static_android.lens.info.shadingMapSize">
Igor Murashkin6c936c12014-05-13 14:51:49 -070014999 <td class="entry_name
15000 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080015001 android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015002 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015003 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080015004 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015005 <span class="entry_type_container">x</span>
15006
15007 <span class="entry_type_array">
15008 2
15009 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070015010 <span class="entry_type_visibility"> [ndk_public as size]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070015011
15012
Igor Murashkinca256272014-10-02 15:27:09 -070015013 <span class="entry_type_hwlevel">[full] </span>
15014
Igor Murashkin6c936c12014-05-13 14:51:49 -070015015
Zhijun He25b8ac52014-02-24 09:49:37 -080015016 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015017
15018
15019 </td> <!-- entry_type -->
15020
15021 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080015022 <p>Dimensions of lens shading map.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015023 </td>
15024
15025 <td class="entry_units">
15026 </td>
15027
15028 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080015029 <p>Both values &gt;= 1</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015030 </td>
15031
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015032 <td class="entry_hal_version">
15033 <p>3.<wbr/>2</p>
15034 </td>
15035
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015036 <td class="entry_tags">
15037 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080015038 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015039 </ul>
15040 </td>
15041
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015042 </tr>
15043 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015044 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015045 </tr>
15046 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015047 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080015048 <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
15049must be smaller than 64x64.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015050 </td>
15051 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015052
15053
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015054 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015055 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015056
Zhijun Hef92c76a2014-02-06 01:40:35 -080015057
15058 <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
Igor Murashkin6c936c12014-05-13 14:51:49 -070015059 <td class="entry_name
Yin-Chia Yeh52f65842014-08-18 10:44:21 -070015060 " rowspan="5">
Zhijun Hef92c76a2014-02-06 01:40:35 -080015061 android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
15062 </td>
15063 <td class="entry_type">
15064 <span class="entry_type_name entry_type_name_enum">byte</span>
15065
15066 <span class="entry_type_visibility"> [public]</span>
15067
Igor Murashkin6c936c12014-05-13 14:51:49 -070015068
Igor Murashkinca256272014-10-02 15:27:09 -070015069 <span class="entry_type_hwlevel">[limited] </span>
15070
Igor Murashkin6c936c12014-05-13 14:51:49 -070015071
15072
Zhijun Hef92c76a2014-02-06 01:40:35 -080015073 <ul class="entry_type_enum">
15074 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080015075 <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
Zhijun Hef92c76a2014-02-06 01:40:35 -080015076 <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070015077<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
15078<p>Setting the lens to the same focus distance on separate occasions may
Zhijun Hef92c76a2014-02-06 01:40:35 -080015079result in a different real focus distance,<wbr/> depending on factors such
15080as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
15081and the device temperature.<wbr/> The focus distance value will still be
15082in 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
15083represents the farthest focus.<wbr/></p></span>
15084 </li>
15085 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080015086 <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070015087 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
15088<p>However,<wbr/> setting the lens to the same focus distance
15089on separate occasions may result in a different real
15090focus distance,<wbr/> depending on factors such as the
15091orientation of the device,<wbr/> the age of the focusing
15092mechanism,<wbr/> and the device temperature.<wbr/></p></span>
Zhijun Hef92c76a2014-02-06 01:40:35 -080015093 </li>
15094 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080015095 <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070015096 <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
15097is calibrated.<wbr/></p>
15098<p>The lens mechanism is calibrated so that setting the
15099same focus distance is repeatable on multiple
15100occasions with good accuracy,<wbr/> and the focus distance
15101corresponds to the real physical distance to the plane
15102of best focus.<wbr/></p></span>
Zhijun Hef92c76a2014-02-06 01:40:35 -080015103 </li>
15104 </ul>
15105
15106 </td> <!-- entry_type -->
15107
15108 <td class="entry_description">
15109 <p>The lens focus distance calibration quality.<wbr/></p>
15110 </td>
15111
15112 <td class="entry_units">
15113 </td>
15114
15115 <td class="entry_range">
15116 </td>
15117
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015118 <td class="entry_hal_version">
15119 <p>3.<wbr/>2</p>
15120 </td>
15121
Zhijun Hef92c76a2014-02-06 01:40:35 -080015122 <td class="entry_tags">
15123 <ul class="entry_tags">
15124 <li><a href="#tag_V1">V1</a></li>
15125 </ul>
15126 </td>
15127
15128 </tr>
15129 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015130 <th class="th_details" colspan="6">Details</th>
Zhijun Hef92c76a2014-02-06 01:40:35 -080015131 </tr>
15132 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015133 <td class="entry_details" colspan="6">
Zhijun Hef92c76a2014-02-06 01:40:35 -080015134 <p>The lens focus distance calibration quality determines the reliability of
15135focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
15136<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
15137<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070015138<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
15139units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
15140and increasing positive numbers represent focusing closer and closer
15141to the camera device.<wbr/> The focus distance control also uses diopters
15142on these devices.<wbr/></p>
15143<p>UNCALIBRATED devices do not use units that are directly comparable
15144to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
15145focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
15146nearest focus the device can achieve.<wbr/></p>
Zhijun Hef92c76a2014-02-06 01:40:35 -080015147 </td>
15148 </tr>
15149
Yin-Chia Yeh52f65842014-08-18 10:44:21 -070015150 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015151 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh52f65842014-08-18 10:44:21 -070015152 </tr>
15153 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015154 <td class="entry_details" colspan="6">
Yin-Chia Yeh52f65842014-08-18 10:44:21 -070015155 <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
15156focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
15157and the lens focus distance is set to 0 diopters
15158(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
15159and is stably focused at infinity even if the device tilts.<wbr/> It may take the
15160lens some time to move; during the move the lens state should be MOVING and
15161the output diopter value should be changing toward 0.<wbr/></p>
15162 </td>
15163 </tr>
Zhijun Hef92c76a2014-02-06 01:40:35 -080015164
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015165 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun Hef92c76a2014-02-06 01:40:35 -080015166 <!-- end of entry -->
15167
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015168
15169
15170
15171
15172 <tr class="entry" id="static_android.lens.facing">
Igor Murashkin6c936c12014-05-13 14:51:49 -070015173 <td class="entry_name
15174 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080015175 android.<wbr/>lens.<wbr/>facing
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015176 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015177 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080015178 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015179
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070015180 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015181
Igor Murashkin6c936c12014-05-13 14:51:49 -070015182
Igor Murashkinca256272014-10-02 15:27:09 -070015183 <span class="entry_type_hwlevel">[legacy] </span>
15184
Igor Murashkin6c936c12014-05-13 14:51:49 -070015185
15186
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015187 <ul class="entry_type_enum">
15188 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080015189 <span class="entry_type_enum_name">FRONT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070015190 <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015191 </li>
15192 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080015193 <span class="entry_type_enum_name">BACK (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070015194 <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015195 </li>
Zhijun Hebe30d4f2015-01-12 15:06:16 -080015196 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080015197 <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
Zhijun Hebe30d4f2015-01-12 15:06:16 -080015198 <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
15199device's screen.<wbr/></p></span>
15200 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015201 </ul>
15202
15203 </td> <!-- entry_type -->
15204
15205 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080015206 <p>Direction the camera faces relative to
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070015207device screen.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015208 </td>
15209
15210 <td class="entry_units">
15211 </td>
15212
15213 <td class="entry_range">
15214 </td>
15215
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015216 <td class="entry_hal_version">
15217 <p>3.<wbr/>2</p>
15218 </td>
15219
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015220 <td class="entry_tags">
15221 </td>
15222
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015223 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015224
15225
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015226 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015227 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015228
15229
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015230 <tr class="entry" id="static_android.lens.poseRotation">
Igor Murashkin6c936c12014-05-13 14:51:49 -070015231 <td class="entry_name
15232 " rowspan="3">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015233 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015234 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015235 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080015236 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015237 <span class="entry_type_container">x</span>
15238
15239 <span class="entry_type_array">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015240 4
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015241 </span>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015242 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070015243
15244
15245
Igor Murashkinca256272014-10-02 15:27:09 -070015246
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015247
15248
15249 </td> <!-- entry_type -->
15250
15251 <td class="entry_description">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015252 <p>The orientation of the camera relative to the sensor
15253coordinate system.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015254 </td>
15255
15256 <td class="entry_units">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015257
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070015258 Quaternion coefficients
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015259
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015260 </td>
15261
15262 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015263 </td>
15264
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015265 <td class="entry_hal_version">
15266 <p>3.<wbr/>2</p>
15267 </td>
15268
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015269 <td class="entry_tags">
15270 <ul class="entry_tags">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015271 <li><a href="#tag_DEPTH">DEPTH</a></li>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015272 </ul>
15273 </td>
15274
15275 </tr>
15276 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015277 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015278 </tr>
15279 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015280 <td class="entry_details" colspan="6">
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070015281 <p>The four coefficients that describe the quaternion
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015282rotation from the Android sensor coordinate system to a
15283camera-aligned coordinate system where the X-axis is
15284aligned with the long side of the image sensor,<wbr/> the Y-axis
15285is aligned with the short side of the image sensor,<wbr/> and
15286the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070015287<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015288to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
15289amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
15290<pre><code> theta = 2 * acos(w)
15291a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
15292a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
15293a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
15294</code></pre>
15295<p>To create a 3x3 rotation matrix that applies the rotation
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070015296defined by this quaternion,<wbr/> the following matrix can be
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015297used:</p>
15298<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
15299 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
15300 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
15301</code></pre>
15302<p>This matrix can then be used to apply the rotation to a
15303 column vector point with</p>
15304<p><code>p' = Rp</code></p>
15305<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
15306 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
Shuzhen Wang35d60582020-01-08 13:05:14 -080015307<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot
15308 be accurately represented by the camera device,<wbr/> and will be represented by
15309 default values matching its default facing.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015310 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015311 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015312
15313
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015314 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015315 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015316
15317
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015318 <tr class="entry" id="static_android.lens.poseTranslation">
Igor Murashkin6c936c12014-05-13 14:51:49 -070015319 <td class="entry_name
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015320 " rowspan="3">
15321 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015322 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015323 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080015324 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015325 <span class="entry_type_container">x</span>
15326
15327 <span class="entry_type_array">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015328 3
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015329 </span>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015330 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015331
15332
Igor Murashkin6c936c12014-05-13 14:51:49 -070015333
15334
15335
Igor Murashkinca256272014-10-02 15:27:09 -070015336
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015337 </td> <!-- entry_type -->
15338
15339 <td class="entry_description">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015340 <p>Position of the camera optical center.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015341 </td>
15342
15343 <td class="entry_units">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015344 Meters
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015345 </td>
15346
15347 <td class="entry_range">
15348 </td>
15349
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015350 <td class="entry_hal_version">
15351 <p>3.<wbr/>2</p>
15352 </td>
15353
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015354 <td class="entry_tags">
15355 <ul class="entry_tags">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015356 <li><a href="#tag_DEPTH">DEPTH</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015357 </ul>
15358 </td>
15359
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015360 </tr>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015361 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015362 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015363 </tr>
15364 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015365 <td class="entry_details" colspan="6">
Eino-Ville Talvala3014c132015-05-29 17:15:37 -070015366 <p>The position of the camera device's lens optical center,<wbr/>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080015367as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
15368<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
15369is relative to the optical center of the largest camera device facing in the same
15370direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
15371coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
15372coordinate system,<wbr/> but not the origin.<wbr/></p>
15373<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
15374position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
15375from the main sensor along the +X axis (to the right from the user's perspective) will
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070015376report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/> Note that this means that,<wbr/> for many computer vision
15377applications,<wbr/> the position needs to be negated to convert it to a translation from the
15378camera to the origin.<wbr/></p>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080015379<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070015380the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080015381camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
15382<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
15383relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
15384camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
15385camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
15386coordinates.<wbr/></p>
15387<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
15388image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
15389<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
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070015390the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as
15391with PRIMARY_<wbr/>CAMERA.<wbr/></p>
Shuzhen Wang35d60582020-01-08 13:05:14 -080015392<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately
15393represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
Changyeon Jo5a59d932022-01-19 13:51:47 -080015394<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is AUTOMOTIVE,<wbr/> then this position is relative to the
15395origin of the automotive sensor coordinate system,<wbr/> which is at the center of the rear
15396axle.<wbr/></p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015397 </td>
15398 </tr>
15399
15400
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015401 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015402 <!-- end of entry -->
15403
15404
15405 <tr class="entry" id="static_android.lens.intrinsicCalibration">
15406 <td class="entry_name
15407 " rowspan="3">
15408 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
15409 </td>
15410 <td class="entry_type">
15411 <span class="entry_type_name">float</span>
15412 <span class="entry_type_container">x</span>
15413
15414 <span class="entry_type_array">
15415 5
15416 </span>
15417 <span class="entry_type_visibility"> [public]</span>
15418
15419
15420
15421
15422
15423
15424 </td> <!-- entry_type -->
15425
15426 <td class="entry_description">
15427 <p>The parameters for this camera device's intrinsic
15428calibration.<wbr/></p>
15429 </td>
15430
15431 <td class="entry_units">
15432
Eino-Ville Talvala7d09eff2015-06-16 11:36:01 -070015433 Pixels in the
15434 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
15435 coordinate system.<wbr/>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015436
15437 </td>
15438
15439 <td class="entry_range">
15440 </td>
15441
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015442 <td class="entry_hal_version">
15443 <p>3.<wbr/>2</p>
15444 </td>
15445
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015446 <td class="entry_tags">
15447 <ul class="entry_tags">
15448 <li><a href="#tag_DEPTH">DEPTH</a></li>
15449 </ul>
15450 </td>
15451
15452 </tr>
15453 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015454 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015455 </tr>
15456 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015457 <td class="entry_details" colspan="6">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015458 <p>The five calibration parameters that describe the
15459transform from camera-centric 3D coordinates to sensor
15460pixel coordinates:</p>
15461<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
15462</code></pre>
15463<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
15464focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
15465axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
15466being aligned with the lens plane.<wbr/></p>
15467<p>These are typically used within a transformation matrix K:</p>
15468<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
15469 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
15470 0 0,<wbr/> 1 ]
15471</code></pre>
15472<p>which can then be combined with the camera pose rotation
15473<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070015474<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015475complete transform from world coordinates to pixel
15476coordinates:</p>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070015477<pre><code>P = [ K 0 * [ R -Rt
15478 0 1 ] 0 1 ]
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015479</code></pre>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070015480<p>(Note the negation of poseTranslation when mapping from camera
15481to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p>
15482<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015483and <code>p_<wbr/>s</code> being a point in the camera active pixel array
15484coordinate system,<wbr/> and with the mapping including the
15485homogeneous division by z:</p>
15486<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
15487p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
15488</code></pre>
15489<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
15490point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
15491(depth) in pixel coordinates.<wbr/></p>
Eino-Ville Talvala7d09eff2015-06-16 11:36:01 -070015492<p>Note that the coordinate system for this transform is the
15493<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/>
15494where <code>(0,<wbr/>0)</code> is the top-left of the
15495preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
15496intrinsic calibration transforms have been applied to a
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070015497world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
Eino-Ville Talvala7d09eff2015-06-16 11:36:01 -070015498transform needs to be applied,<wbr/> and the result adjusted to
15499be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
15500system (where <code>(0,<wbr/> 0)</code> is the top-left of the
15501activeArraySize rectangle),<wbr/> to determine the final pixel
15502coordinate of the world point for processed (non-RAW)
15503output buffers.<wbr/></p>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070015504<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at
15505coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/> So on a device with a
15506precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel
15507indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would
15508have an optical center at the exact center of the pixel grid,<wbr/> at
15509coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel
15510<code>(5,<wbr/>5)</code>.<wbr/></p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015511 </td>
15512 </tr>
15513
15514
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015515 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015516 <!-- end of entry -->
15517
15518
15519 <tr class="entry" id="static_android.lens.radialDistortion">
15520 <td class="entry_name
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070015521 entry_name_deprecated
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015522 " rowspan="3">
15523 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
15524 </td>
15525 <td class="entry_type">
15526 <span class="entry_type_name">float</span>
15527 <span class="entry_type_container">x</span>
15528
15529 <span class="entry_type_array">
Ruben Brunk6ad70382015-06-12 10:19:40 -070015530 6
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015531 </span>
15532 <span class="entry_type_visibility"> [public]</span>
15533
15534
15535
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070015536 <span class="entry_type_deprecated">[deprecated] </span>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015537
15538
15539
15540 </td> <!-- entry_type -->
15541
15542 <td class="entry_description">
15543 <p>The correction coefficients to correct for this camera device's
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070015544radial and tangential lens distortion.<wbr/></p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015545 </td>
15546
15547 <td class="entry_units">
15548
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070015549 Unitless coefficients.<wbr/>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015550
15551 </td>
15552
15553 <td class="entry_range">
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070015554 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015555 </td>
15556
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015557 <td class="entry_hal_version">
15558 <p>3.<wbr/>2</p>
15559 </td>
15560
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015561 <td class="entry_tags">
15562 <ul class="entry_tags">
15563 <li><a href="#tag_DEPTH">DEPTH</a></li>
15564 </ul>
15565 </td>
15566
15567 </tr>
15568 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015569 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015570 </tr>
15571 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015572 <td class="entry_details" colspan="6">
Ruben Brunk6ad70382015-06-12 10:19:40 -070015573 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070015574kappa_<wbr/>3]</code> and two tangential distortion coefficients
15575<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
15576lens's geometric distortion with the mapping equations:</p>
Ruben Brunk6ad70382015-06-12 10:19:40 -070015577<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 ) +
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070015578 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
Ruben Brunk6ad70382015-06-12 10:19:40 -070015579 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070015580 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015581</code></pre>
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070015582<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
15583input image that correspond to the pixel values in the
15584corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
15585<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
15586</code></pre>
15587<p>The pixel coordinates are defined in a normalized
15588coordinate system related to the
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070015589<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070015590Both <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
15591lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
15592of both x and y coordinates are normalized to be 1 at the
15593edge further from the optical center,<wbr/> so the range
15594for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
15595<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
15596optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
15597is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
15598<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080015599 </td>
15600 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015601
15602
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015603 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015604 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015605
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080015606
15607 <tr class="entry" id="static_android.lens.poseReference">
15608 <td class="entry_name
15609 " rowspan="3">
15610 android.<wbr/>lens.<wbr/>pose<wbr/>Reference
15611 </td>
15612 <td class="entry_type">
15613 <span class="entry_type_name entry_type_name_enum">byte</span>
15614
15615 <span class="entry_type_visibility"> [public]</span>
15616
15617
15618
15619
15620
15621 <ul class="entry_type_enum">
15622 <li>
15623 <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
15624 <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
15625the largest camera device facing the same direction as this camera.<wbr/></p>
Eino-Ville Talvalabaf80472018-02-05 16:26:26 -080015626<p>This is the default value for API levels before Android P.<wbr/></p></span>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080015627 </li>
15628 <li>
15629 <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
15630 <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
Eino-Ville Talvalabaf80472018-02-05 16:26:26 -080015631primary gyroscope of this Android device.<wbr/></p></span>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080015632 </li>
Shuzhen Wang35d60582020-01-08 13:05:14 -080015633 <li>
15634 <span class="entry_type_enum_name">UNDEFINED (v3.5)</span>
15635 <span class="entry_type_enum_notes"><p>The camera device cannot represent the values of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>
15636and <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> accurately enough.<wbr/> One such example is a camera device
15637on the cover of a foldable phone: in order to measure the pose translation and rotation,<wbr/>
15638some kind of hinge position sensor would be needed.<wbr/></p>
15639<p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> must be all zeros,<wbr/> and
15640<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> must be values matching its default facing.<wbr/></p></span>
15641 </li>
Changyeon Jo5a59d932022-01-19 13:51:47 -080015642 <li>
15643 <span class="entry_type_enum_name">AUTOMOTIVE (v3.8)</span>
15644 <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 origin of the
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070015645automotive sensor coordinate system,<wbr/> which is at the center of the rear axle.<wbr/></p></span>
Changyeon Jo5a59d932022-01-19 13:51:47 -080015646 </li>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080015647 </ul>
15648
15649 </td> <!-- entry_type -->
15650
15651 <td class="entry_description">
Shuzhen Wang35d60582020-01-08 13:05:14 -080015652 <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> and the accuracy of
15653<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> and <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>.<wbr/></p>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080015654 </td>
15655
15656 <td class="entry_units">
15657 </td>
15658
15659 <td class="entry_range">
15660 </td>
15661
15662 <td class="entry_hal_version">
15663 <p>3.<wbr/>3</p>
15664 </td>
15665
15666 <td class="entry_tags">
15667 </td>
15668
15669 </tr>
15670 <tr class="entries_header">
15671 <th class="th_details" colspan="6">Details</th>
15672 </tr>
15673 <tr class="entry_cont">
15674 <td class="entry_details" colspan="6">
15675 <p>Different calibration methods and use cases can produce better or worse results
15676depending on the selected coordinate origin.<wbr/></p>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080015677 </td>
15678 </tr>
15679
15680
15681 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15682 <!-- end of entry -->
15683
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070015684
15685 <tr class="entry" id="static_android.lens.distortion">
15686 <td class="entry_name
15687 " rowspan="3">
15688 android.<wbr/>lens.<wbr/>distortion
15689 </td>
15690 <td class="entry_type">
15691 <span class="entry_type_name">float</span>
15692 <span class="entry_type_container">x</span>
15693
15694 <span class="entry_type_array">
15695 5
15696 </span>
15697 <span class="entry_type_visibility"> [public]</span>
15698
15699
15700
15701
15702
15703
15704 </td> <!-- entry_type -->
15705
15706 <td class="entry_description">
15707 <p>The correction coefficients to correct for this camera device's
15708radial and tangential lens distortion.<wbr/></p>
15709<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
15710inconsistently defined.<wbr/></p>
15711 </td>
15712
15713 <td class="entry_units">
15714
15715 Unitless coefficients.<wbr/>
15716
15717 </td>
15718
15719 <td class="entry_range">
15720 </td>
15721
15722 <td class="entry_hal_version">
15723 <p>3.<wbr/>3</p>
15724 </td>
15725
15726 <td class="entry_tags">
15727 <ul class="entry_tags">
15728 <li><a href="#tag_DEPTH">DEPTH</a></li>
15729 </ul>
15730 </td>
15731
15732 </tr>
15733 <tr class="entries_header">
15734 <th class="th_details" colspan="6">Details</th>
15735 </tr>
15736 <tr class="entry_cont">
15737 <td class="entry_details" colspan="6">
15738 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
15739kappa_<wbr/>3]</code> and two tangential distortion coefficients
15740<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
15741lens's geometric distortion with the mapping equations:</p>
15742<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
15743 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
15744 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
15745 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
15746</code></pre>
15747<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
15748input image that correspond to the pixel values in the
15749corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
15750<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
15751</code></pre>
15752<p>The pixel coordinates are defined in a coordinate system
15753related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
15754calibration fields; see that entry for details of the mapping stages.<wbr/>
15755Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
15756have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
15757the range of the coordinates depends on the focal length
15758terms of the intrinsic calibration.<wbr/></p>
15759<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
15760optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
15761<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
15762 </td>
15763 </tr>
15764
15765
15766 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15767 <!-- end of entry -->
15768
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080015769
15770 <tr class="entry" id="static_android.lens.distortionMaximumResolution">
15771 <td class="entry_name
15772 " rowspan="3">
15773 android.<wbr/>lens.<wbr/>distortion<wbr/>Maximum<wbr/>Resolution
15774 </td>
15775 <td class="entry_type">
15776 <span class="entry_type_name">float</span>
15777 <span class="entry_type_container">x</span>
15778
15779 <span class="entry_type_array">
15780 5
15781 </span>
15782 <span class="entry_type_visibility"> [public]</span>
15783
15784
15785
15786
15787
15788
15789 </td> <!-- entry_type -->
15790
15791 <td class="entry_description">
15792 <p>The correction coefficients to correct for this camera device's
15793radial and tangential lens distortion for a
15794CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
15795<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
15796 </td>
15797
15798 <td class="entry_units">
15799
15800 Unitless coefficients.<wbr/>
15801
15802 </td>
15803
15804 <td class="entry_range">
15805 </td>
15806
15807 <td class="entry_hal_version">
15808 <p>3.<wbr/>6</p>
15809 </td>
15810
15811 <td class="entry_tags">
15812 <ul class="entry_tags">
15813 <li><a href="#tag_DEPTH">DEPTH</a></li>
15814 </ul>
15815 </td>
15816
15817 </tr>
15818 <tr class="entries_header">
15819 <th class="th_details" colspan="6">Details</th>
15820 </tr>
15821 <tr class="entry_cont">
15822 <td class="entry_details" colspan="6">
15823 <p>Analogous to <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
15824<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
15825 </td>
15826 </tr>
15827
15828
15829 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15830 <!-- end of entry -->
15831
15832
15833 <tr class="entry" id="static_android.lens.intrinsicCalibrationMaximumResolution">
15834 <td class="entry_name
15835 " rowspan="3">
15836 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration<wbr/>Maximum<wbr/>Resolution
15837 </td>
15838 <td class="entry_type">
15839 <span class="entry_type_name">float</span>
15840 <span class="entry_type_container">x</span>
15841
15842 <span class="entry_type_array">
15843 5
15844 </span>
15845 <span class="entry_type_visibility"> [public]</span>
15846
15847
15848
15849
15850
15851
15852 </td> <!-- entry_type -->
15853
15854 <td class="entry_description">
15855 <p>The parameters for this camera device's intrinsic
15856calibration when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
15857<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
15858 </td>
15859
15860 <td class="entry_units">
15861
15862 Pixels in the
15863 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
15864 coordinate system.<wbr/>
15865
15866 </td>
15867
15868 <td class="entry_range">
15869 </td>
15870
15871 <td class="entry_hal_version">
15872 <p>3.<wbr/>6</p>
15873 </td>
15874
15875 <td class="entry_tags">
15876 <ul class="entry_tags">
15877 <li><a href="#tag_DEPTH">DEPTH</a></li>
15878 </ul>
15879 </td>
15880
15881 </tr>
15882 <tr class="entries_header">
15883 <th class="th_details" colspan="6">Details</th>
15884 </tr>
15885 <tr class="entry_cont">
15886 <td class="entry_details" colspan="6">
15887 <p>Analogous to <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
15888<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
15889 </td>
15890 </tr>
15891
15892
15893 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15894 <!-- end of entry -->
15895
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015896
15897
15898 <!-- end of kind -->
15899 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015900 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015901
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070015902 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015903 <tr>
15904 <th class="th_name">Property Name</th>
15905 <th class="th_type">Type</th>
15906 <th class="th_description">Description</th>
15907 <th class="th_units">Units</th>
15908 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015909 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015910 <th class="th_tags">Tags</th>
15911 </tr>
15912 </thead>
15913
15914 <tbody>
15915
15916
15917
15918
15919
15920
15921
15922
15923
15924
15925 <tr class="entry" id="dynamic_android.lens.aperture">
Igor Murashkin6c936c12014-05-13 14:51:49 -070015926 <td class="entry_name
15927 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080015928 android.<wbr/>lens.<wbr/>aperture
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015929 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015930 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080015931 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015932
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070015933 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015934
15935
Igor Murashkinca256272014-10-02 15:27:09 -070015936 <span class="entry_type_hwlevel">[full] </span>
15937
Igor Murashkin6c936c12014-05-13 14:51:49 -070015938
15939
15940
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015941 </td> <!-- entry_type -->
15942
15943 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070015944 <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
15945effective aperture diameter.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015946 </td>
15947
15948 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070015949 The f-number (f/<wbr/>N)
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015950 </td>
15951
15952 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080015953 <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015954 </td>
15955
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015956 <td class="entry_hal_version">
15957 <p>3.<wbr/>2</p>
15958 </td>
15959
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015960 <td class="entry_tags">
15961 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080015962 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015963 </ul>
15964 </td>
15965
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015966 </tr>
15967 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015968 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015969 </tr>
15970 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015971 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070015972 <p>Setting this value is only supported on the camera devices that have a variable
15973aperture lens.<wbr/></p>
Zhijun He1b58d382014-01-10 10:22:53 -080015974<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
15975this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080015976<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>
Zhijun He1b58d382014-01-10 10:22:53 -080015977to achieve manual exposure control.<wbr/></p>
15978<p>The requested aperture value may take several frames to reach the
15979requested value; the camera device will report the current (intermediate)
Zhijun He5169ce12014-01-24 16:48:25 -080015980aperture size in capture result metadata while the aperture is changing.<wbr/>
15981While 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>
Zhijun He1b58d382014-01-10 10:22:53 -080015982<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
15983the ON modes,<wbr/> this will be overridden by the camera device
15984auto-exposure algorithm,<wbr/> the overridden values are then provided
15985back to the user in the corresponding result.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015986 </td>
15987 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015988
15989
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080015990 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080015991 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015992
15993
15994 <tr class="entry" id="dynamic_android.lens.filterDensity">
Igor Murashkin6c936c12014-05-13 14:51:49 -070015995 <td class="entry_name
15996 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080015997 android.<wbr/>lens.<wbr/>filter<wbr/>Density
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080015998 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080015999 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080016000 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016001
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070016002 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016003
16004
Igor Murashkinca256272014-10-02 15:27:09 -070016005 <span class="entry_type_hwlevel">[full] </span>
16006
Igor Murashkin6c936c12014-05-13 14:51:49 -070016007
16008
16009
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016010 </td> <!-- entry_type -->
16011
16012 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016013 <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016014 </td>
16015
16016 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016017 Exposure Value (EV)
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016018 </td>
16019
16020 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080016021 <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016022 </td>
16023
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016024 <td class="entry_hal_version">
16025 <p>3.<wbr/>2</p>
16026 </td>
16027
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016028 <td class="entry_tags">
16029 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080016030 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016031 </ul>
16032 </td>
16033
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016034 </tr>
16035 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016036 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016037 </tr>
16038 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016039 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016040 <p>This control will not be supported on most camera devices.<wbr/></p>
Ruben Brunk83eb3032014-01-15 16:12:07 -080016041<p>Lens filters are typically used to lower the amount of light the
16042sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
16043step is the standard logarithmic representation,<wbr/> which are
16044non-negative,<wbr/> and inversely proportional to the amount of light
16045hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result
16046in no reduction of the incoming light,<wbr/> and setting this to 2 would
16047mean that the filter is set to reduce incoming light by two stops
16048(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
Zhijun He5169ce12014-01-24 16:48:25 -080016049<p>It may take several frames before the lens filter density changes
16050to the requested value.<wbr/> While the filter density is still changing,<wbr/>
16051<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016052 </td>
16053 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016054
16055
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016056 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016057 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016058
16059
16060 <tr class="entry" id="dynamic_android.lens.focalLength">
Igor Murashkin6c936c12014-05-13 14:51:49 -070016061 <td class="entry_name
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080016062 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080016063 android.<wbr/>lens.<wbr/>focal<wbr/>Length
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016064 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016065 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080016066 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016067
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070016068 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016069
16070
Igor Murashkinca256272014-10-02 15:27:09 -070016071 <span class="entry_type_hwlevel">[legacy] </span>
16072
Igor Murashkin6c936c12014-05-13 14:51:49 -070016073
16074
16075
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016076 </td> <!-- entry_type -->
16077
16078 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016079 <p>The desired lens focal length; used for optical zoom.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016080 </td>
16081
16082 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016083 Millimeters
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016084 </td>
16085
16086 <td class="entry_range">
Ruben Brunkac9bbb92014-01-15 18:39:35 -080016087 <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016088 </td>
16089
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016090 <td class="entry_hal_version">
16091 <p>3.<wbr/>2</p>
16092 </td>
16093
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016094 <td class="entry_tags">
16095 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080016096 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016097 </ul>
16098 </td>
16099
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016100 </tr>
16101 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016102 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016103 </tr>
16104 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016105 <td class="entry_details" colspan="6">
Ruben Brunkac9bbb92014-01-15 18:39:35 -080016106 <p>This setting controls the physical focal length of the camera
16107device's lens.<wbr/> Changing the focal length changes the field of
16108view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
16109<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
16110setting won't be applied instantaneously,<wbr/> and it may take several
Zhijun He5169ce12014-01-24 16:48:25 -080016111frames before the lens can change to the requested focal length.<wbr/>
Ruben Brunkac9bbb92014-01-15 18:39:35 -080016112While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
16113be set to MOVING.<wbr/></p>
Shuzhen Wangd36ef432020-03-12 21:36:18 -070016114<p>Optical zoom via this control will not be supported on most devices.<wbr/> Starting from API
16115level 30,<wbr/> the camera device may combine optical and digital zoom through the
16116<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> control.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016117 </td>
16118 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016119
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080016120 <tr class="entries_header">
16121 <th class="th_details" colspan="6">HAL Implementation Details</th>
16122 </tr>
16123 <tr class="entry_cont">
16124 <td class="entry_details" colspan="6">
16125 <p>For a logical camera device supporting both optical and digital zoom,<wbr/> if focalLength and
16126cropRegion change in the same request,<wbr/> the camera device must make sure that the new
16127focalLength and cropRegion take effect in the same frame.<wbr/> This is to make sure that there
16128is no visible field-of-view jump during zoom.<wbr/> For example,<wbr/> if cropRegion is applied
16129immediately,<wbr/> but focalLength takes more than 1 frame to take effect,<wbr/> the camera device
16130will delay the cropRegion so that it's synchronized with focalLength.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080016131<p>Starting from API level 30,<wbr/> it's strongly recommended for HAL to implement the
16132combination of optical and digital zoom using the new <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> API,<wbr/> in
16133lieu of using <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080016134 </td>
16135 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016136
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016137 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016138 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016139
16140
16141 <tr class="entry" id="dynamic_android.lens.focusDistance">
Igor Murashkin6c936c12014-05-13 14:51:49 -070016142 <td class="entry_name
16143 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080016144 android.<wbr/>lens.<wbr/>focus<wbr/>Distance
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016145 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016146 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080016147 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016148
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070016149 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016150
16151
Igor Murashkinca256272014-10-02 15:27:09 -070016152 <span class="entry_type_hwlevel">[full] </span>
16153
Igor Murashkin6c936c12014-05-13 14:51:49 -070016154
16155
16156
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016157 </td> <!-- entry_type -->
16158
16159 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016160 <p>Desired distance to plane of sharpest focus,<wbr/>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070016161measured from frontmost surface of the lens.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016162 </td>
16163
16164 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016165 See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016166 </td>
16167
16168 <td class="entry_range">
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080016169 <p>&gt;= 0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016170 </td>
16171
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016172 <td class="entry_hal_version">
16173 <p>3.<wbr/>2</p>
16174 </td>
16175
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016176 <td class="entry_tags">
16177 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080016178 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016179 </ul>
16180 </td>
16181
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016182 </tr>
16183 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016184 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016185 </tr>
16186 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016187 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080016188 <p>Should be zero for fixed-focus cameras</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016189 </td>
16190 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016191
16192
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016193 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016194 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016195
16196
16197 <tr class="entry" id="dynamic_android.lens.focusRange">
Igor Murashkin6c936c12014-05-13 14:51:49 -070016198 <td class="entry_name
16199 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080016200 android.<wbr/>lens.<wbr/>focus<wbr/>Range
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016201 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016202 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080016203 <span class="entry_type_name">float</span>
Zhijun He50451ad2013-09-26 10:27:47 -070016204 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016205
Zhijun He50451ad2013-09-26 10:27:47 -070016206 <span class="entry_type_array">
16207 2
16208 </span>
Igor Murashkinb0f18b42014-05-30 10:51:40 -070016209 <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070016210
16211
Igor Murashkinca256272014-10-02 15:27:09 -070016212 <span class="entry_type_hwlevel">[limited] </span>
16213
Igor Murashkin6c936c12014-05-13 14:51:49 -070016214
Igor Murashkin0b080452013-12-27 15:30:25 -080016215 <div class="entry_type_notes">Range of scene distances that are in focus</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016216
16217
16218 </td> <!-- entry_type -->
16219
16220 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080016221 <p>The range of scene distances that are in
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070016222sharp focus (depth of field).<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016223 </td>
16224
16225 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016226 A pair of focus distances in diopters: (near,<wbr/>
16227 far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016228 </td>
16229
16230 <td class="entry_range">
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080016231 <p>&gt;=0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016232 </td>
16233
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016234 <td class="entry_hal_version">
16235 <p>3.<wbr/>2</p>
16236 </td>
16237
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016238 <td class="entry_tags">
16239 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080016240 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016241 </ul>
16242 </td>
16243
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016244 </tr>
16245 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016246 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016247 </tr>
16248 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016249 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080016250 <p>If variable focus not supported,<wbr/> can still report
16251fixed depth of field range</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016252 </td>
16253 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016254
16255
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016256 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016257 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016258
16259
16260 <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070016261 <td class="entry_name
16262 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080016263 android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016264 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016265 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080016266 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016267
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070016268 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016269
Igor Murashkin6c936c12014-05-13 14:51:49 -070016270
Igor Murashkinca256272014-10-02 15:27:09 -070016271 <span class="entry_type_hwlevel">[limited] </span>
16272
Igor Murashkin6c936c12014-05-13 14:51:49 -070016273
16274
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016275 <ul class="entry_type_enum">
16276 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080016277 <span class="entry_type_enum_name">OFF (v3.2)</span>
Ruben Brunk218639c2014-01-15 18:09:41 -080016278 <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016279 </li>
16280 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080016281 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070016282 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk218639c2014-01-15 18:09:41 -080016283 <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016284 </li>
16285 </ul>
16286
16287 </td> <!-- entry_type -->
16288
16289 <td class="entry_description">
Ruben Brunk218639c2014-01-15 18:09:41 -080016290 <p>Sets whether the camera device uses optical image stabilization (OIS)
16291when capturing images.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016292 </td>
16293
16294 <td class="entry_units">
16295 </td>
16296
16297 <td class="entry_range">
Ruben Brunk218639c2014-01-15 18:09:41 -080016298 <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016299 </td>
16300
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016301 <td class="entry_hal_version">
16302 <p>3.<wbr/>2</p>
16303 </td>
16304
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016305 <td class="entry_tags">
16306 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080016307 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016308 </ul>
16309 </td>
16310
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016311 </tr>
16312 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016313 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016314 </tr>
16315 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016316 <td class="entry_details" colspan="6">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070016317 <p>OIS is used to compensate for motion blur due to small
16318movements of the camera during capture.<wbr/> Unlike digital image
16319stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
16320makes use of mechanical elements to stabilize the camera
16321sensor,<wbr/> and thus allows for longer exposure times before
16322camera shake becomes apparent.<wbr/></p>
Zhijun He91449c82014-06-12 10:43:32 -070016323<p>Switching between different optical stabilization modes may take several
16324frames to initialize,<wbr/> the camera device will report the current mode in
16325capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
16326optical stabilization modes in the first several capture results may still
16327be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016328<p>If a camera device supports both OIS and digital image stabilization
16329(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
16330interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
Jayant Chowdhary38afcdf2021-09-28 16:32:07 -070016331<p>If <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/>
16332<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose
16333to turn on hardware based image stabilization in addition to software based stabilization
16334if it deems that appropriate.<wbr/> This key's value in the capture result will reflect which
16335OIS mode was chosen.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070016336<p>Not all devices will support OIS; see
16337<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
16338available controls.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016339 </td>
16340 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016341
16342
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016343 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016344 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016345
16346
16347 <tr class="entry" id="dynamic_android.lens.state">
Igor Murashkin6c936c12014-05-13 14:51:49 -070016348 <td class="entry_name
16349 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080016350 android.<wbr/>lens.<wbr/>state
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016351 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016352 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080016353 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016354
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070016355 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016356
Igor Murashkin6c936c12014-05-13 14:51:49 -070016357
Igor Murashkinca256272014-10-02 15:27:09 -070016358 <span class="entry_type_hwlevel">[limited] </span>
16359
Igor Murashkin6c936c12014-05-13 14:51:49 -070016360
16361
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016362 <ul class="entry_type_enum">
16363 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080016364 <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080016365 <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/>
16366<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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016367 </li>
Igor Murashkin0e323a12013-09-06 11:50:48 -070016368 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080016369 <span class="entry_type_enum_name">MOVING (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070016370 <span class="entry_type_enum_notes"><p>One or several of the lens parameters
16371(<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/>
16372<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
16373currently changing.<wbr/></p></span>
Igor Murashkin0e323a12013-09-06 11:50:48 -070016374 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016375 </ul>
16376
16377 </td> <!-- entry_type -->
16378
16379 <td class="entry_description">
Zhijun He5169ce12014-01-24 16:48:25 -080016380 <p>Current lens status.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016381 </td>
16382
16383 <td class="entry_units">
16384 </td>
16385
16386 <td class="entry_range">
16387 </td>
16388
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016389 <td class="entry_hal_version">
16390 <p>3.<wbr/>2</p>
16391 </td>
16392
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016393 <td class="entry_tags">
16394 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080016395 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016396 </ul>
16397 </td>
16398
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016399 </tr>
Zhijun He5169ce12014-01-24 16:48:25 -080016400 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016401 <th class="th_details" colspan="6">Details</th>
Zhijun He5169ce12014-01-24 16:48:25 -080016402 </tr>
16403 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016404 <td class="entry_details" colspan="6">
Zhijun He5169ce12014-01-24 16:48:25 -080016405 <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/>
16406<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/>
16407they may take several frames to reach the requested values.<wbr/> This state indicates
16408the current status of the lens parameters.<wbr/></p>
16409<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
16410either because the parameters are all fixed,<wbr/> or because the lens has had enough
16411time to reach the most recently-requested values.<wbr/>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070016412If all these lens parameters are not changeable for a camera device,<wbr/> as listed below:</p>
Zhijun He5169ce12014-01-24 16:48:25 -080016413<ul>
16414<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
16415<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
16416<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/>
16417which means the optical zoom is not supported.<wbr/></li>
16418<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>
16419<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>
16420</ul>
16421<p>Then this state will always be STATIONARY.<wbr/></p>
16422<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
16423is changing.<wbr/></p>
16424 </td>
16425 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016426
16427
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016428 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080016429 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016430
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016431
16432 <tr class="entry" id="dynamic_android.lens.poseRotation">
16433 <td class="entry_name
16434 " rowspan="3">
16435 android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
16436 </td>
16437 <td class="entry_type">
16438 <span class="entry_type_name">float</span>
16439 <span class="entry_type_container">x</span>
16440
16441 <span class="entry_type_array">
16442 4
16443 </span>
16444 <span class="entry_type_visibility"> [public]</span>
16445
16446
16447
16448
16449
16450
16451 </td> <!-- entry_type -->
16452
16453 <td class="entry_description">
16454 <p>The orientation of the camera relative to the sensor
16455coordinate system.<wbr/></p>
16456 </td>
16457
16458 <td class="entry_units">
16459
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070016460 Quaternion coefficients
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016461
16462 </td>
16463
16464 <td class="entry_range">
16465 </td>
16466
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016467 <td class="entry_hal_version">
16468 <p>3.<wbr/>2</p>
16469 </td>
16470
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016471 <td class="entry_tags">
16472 <ul class="entry_tags">
16473 <li><a href="#tag_DEPTH">DEPTH</a></li>
16474 </ul>
16475 </td>
16476
16477 </tr>
16478 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016479 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016480 </tr>
16481 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016482 <td class="entry_details" colspan="6">
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070016483 <p>The four coefficients that describe the quaternion
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016484rotation from the Android sensor coordinate system to a
16485camera-aligned coordinate system where the X-axis is
16486aligned with the long side of the image sensor,<wbr/> the Y-axis
16487is aligned with the short side of the image sensor,<wbr/> and
16488the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070016489<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016490to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
16491amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
16492<pre><code> theta = 2 * acos(w)
16493a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
16494a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
16495a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
16496</code></pre>
16497<p>To create a 3x3 rotation matrix that applies the rotation
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070016498defined by this quaternion,<wbr/> the following matrix can be
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016499used:</p>
16500<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/> 2xy - 2zw,<wbr/> 2xz + 2yw,<wbr/>
16501 2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/> 2yz - 2xw,<wbr/>
16502 2xz - 2yw,<wbr/> 2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
16503</code></pre>
16504<p>This matrix can then be used to apply the rotation to a
16505 column vector point with</p>
16506<p><code>p' = Rp</code></p>
16507<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
16508 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
Shuzhen Wang35d60582020-01-08 13:05:14 -080016509<p>If <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> the quaternion rotation cannot
16510 be accurately represented by the camera device,<wbr/> and will be represented by
16511 default values matching its default facing.<wbr/></p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016512 </td>
16513 </tr>
16514
16515
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016516 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016517 <!-- end of entry -->
16518
16519
16520 <tr class="entry" id="dynamic_android.lens.poseTranslation">
16521 <td class="entry_name
16522 " rowspan="3">
16523 android.<wbr/>lens.<wbr/>pose<wbr/>Translation
16524 </td>
16525 <td class="entry_type">
16526 <span class="entry_type_name">float</span>
16527 <span class="entry_type_container">x</span>
16528
16529 <span class="entry_type_array">
16530 3
16531 </span>
16532 <span class="entry_type_visibility"> [public]</span>
16533
16534
16535
16536
16537
16538
16539 </td> <!-- entry_type -->
16540
16541 <td class="entry_description">
16542 <p>Position of the camera optical center.<wbr/></p>
16543 </td>
16544
16545 <td class="entry_units">
16546 Meters
16547 </td>
16548
16549 <td class="entry_range">
16550 </td>
16551
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016552 <td class="entry_hal_version">
16553 <p>3.<wbr/>2</p>
16554 </td>
16555
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016556 <td class="entry_tags">
16557 <ul class="entry_tags">
16558 <li><a href="#tag_DEPTH">DEPTH</a></li>
16559 </ul>
16560 </td>
16561
16562 </tr>
16563 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016564 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016565 </tr>
16566 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016567 <td class="entry_details" colspan="6">
Eino-Ville Talvala3014c132015-05-29 17:15:37 -070016568 <p>The position of the camera device's lens optical center,<wbr/>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080016569as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
16570<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
16571is relative to the optical center of the largest camera device facing in the same
16572direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
16573coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
16574coordinate system,<wbr/> but not the origin.<wbr/></p>
16575<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
16576position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
16577from the main sensor along the +X axis (to the right from the user's perspective) will
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070016578report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/> Note that this means that,<wbr/> for many computer vision
16579applications,<wbr/> the position needs to be negated to convert it to a translation from the
16580camera to the origin.<wbr/></p>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080016581<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070016582the source camera <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> must be corrected for.<wbr/> Then the source
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080016583camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
16584<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
16585relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
16586camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
16587camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
16588coordinates.<wbr/></p>
16589<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
16590image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
16591<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
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070016592the center of the primary gyroscope on the device.<wbr/> The axis definitions are the same as
16593with PRIMARY_<wbr/>CAMERA.<wbr/></p>
Shuzhen Wang35d60582020-01-08 13:05:14 -080016594<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is UNDEFINED,<wbr/> this position cannot be accurately
16595represented by the camera device,<wbr/> and will be represented as <code>(0,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
Changyeon Jo5a59d932022-01-19 13:51:47 -080016596<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is AUTOMOTIVE,<wbr/> then this position is relative to the
16597origin of the automotive sensor coordinate system,<wbr/> which is at the center of the rear
16598axle.<wbr/></p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016599 </td>
16600 </tr>
16601
16602
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016603 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016604 <!-- end of entry -->
16605
16606
16607 <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
16608 <td class="entry_name
16609 " rowspan="3">
16610 android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
16611 </td>
16612 <td class="entry_type">
16613 <span class="entry_type_name">float</span>
16614 <span class="entry_type_container">x</span>
16615
16616 <span class="entry_type_array">
16617 5
16618 </span>
16619 <span class="entry_type_visibility"> [public]</span>
16620
16621
16622
16623
16624
16625
16626 </td> <!-- entry_type -->
16627
16628 <td class="entry_description">
16629 <p>The parameters for this camera device's intrinsic
16630calibration.<wbr/></p>
16631 </td>
16632
16633 <td class="entry_units">
16634
Eino-Ville Talvala7d09eff2015-06-16 11:36:01 -070016635 Pixels in the
16636 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
16637 coordinate system.<wbr/>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016638
16639 </td>
16640
16641 <td class="entry_range">
16642 </td>
16643
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016644 <td class="entry_hal_version">
16645 <p>3.<wbr/>2</p>
16646 </td>
16647
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016648 <td class="entry_tags">
16649 <ul class="entry_tags">
16650 <li><a href="#tag_DEPTH">DEPTH</a></li>
16651 </ul>
16652 </td>
16653
16654 </tr>
16655 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016656 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016657 </tr>
16658 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016659 <td class="entry_details" colspan="6">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016660 <p>The five calibration parameters that describe the
16661transform from camera-centric 3D coordinates to sensor
16662pixel coordinates:</p>
16663<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
16664</code></pre>
16665<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
16666focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
16667axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
16668being aligned with the lens plane.<wbr/></p>
16669<p>These are typically used within a transformation matrix K:</p>
16670<pre><code>K = [ f_<wbr/>x,<wbr/> s,<wbr/> c_<wbr/>x,<wbr/>
16671 0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
16672 0 0,<wbr/> 1 ]
16673</code></pre>
16674<p>which can then be combined with the camera pose rotation
16675<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070016676<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respectively) to calculate the
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016677complete transform from world coordinates to pixel
16678coordinates:</p>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070016679<pre><code>P = [ K 0 * [ R -Rt
16680 0 1 ] 0 1 ]
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016681</code></pre>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070016682<p>(Note the negation of poseTranslation when mapping from camera
16683to world coordinates,<wbr/> and multiplication by the rotation).<wbr/></p>
16684<p>With <code>p_<wbr/>w</code> being a point in the world coordinate system
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016685and <code>p_<wbr/>s</code> being a point in the camera active pixel array
16686coordinate system,<wbr/> and with the mapping including the
16687homogeneous division by z:</p>
16688<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
16689p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
16690</code></pre>
16691<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
16692point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
16693(depth) in pixel coordinates.<wbr/></p>
Eino-Ville Talvala7d09eff2015-06-16 11:36:01 -070016694<p>Note that the coordinate system for this transform is the
16695<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/>
16696where <code>(0,<wbr/>0)</code> is the top-left of the
16697preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
16698intrinsic calibration transforms have been applied to a
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070016699world point,<wbr/> then the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>
Eino-Ville Talvala7d09eff2015-06-16 11:36:01 -070016700transform needs to be applied,<wbr/> and the result adjusted to
16701be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
16702system (where <code>(0,<wbr/> 0)</code> is the top-left of the
16703activeArraySize rectangle),<wbr/> to determine the final pixel
16704coordinate of the world point for processed (non-RAW)
16705output buffers.<wbr/></p>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070016706<p>For camera devices,<wbr/> the center of pixel <code>(x,<wbr/>y)</code> is located at
16707coordinate <code>(x + 0.<wbr/>5,<wbr/> y + 0.<wbr/>5)</code>.<wbr/> So on a device with a
16708precorrection active array of size <code>(10,<wbr/>10)</code>,<wbr/> the valid pixel
16709indices go from <code>(0,<wbr/>0)-(9,<wbr/>9)</code>,<wbr/> and an perfectly-built camera would
16710have an optical center at the exact center of the pixel grid,<wbr/> at
16711coordinates <code>(5.<wbr/>0,<wbr/> 5.<wbr/>0)</code>,<wbr/> which is the top-left corner of pixel
16712<code>(5,<wbr/>5)</code>.<wbr/></p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016713 </td>
16714 </tr>
16715
16716
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016717 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016718 <!-- end of entry -->
16719
16720
16721 <tr class="entry" id="dynamic_android.lens.radialDistortion">
16722 <td class="entry_name
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070016723 entry_name_deprecated
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016724 " rowspan="3">
16725 android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
16726 </td>
16727 <td class="entry_type">
16728 <span class="entry_type_name">float</span>
16729 <span class="entry_type_container">x</span>
16730
16731 <span class="entry_type_array">
Ruben Brunk6ad70382015-06-12 10:19:40 -070016732 6
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016733 </span>
16734 <span class="entry_type_visibility"> [public]</span>
16735
16736
16737
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070016738 <span class="entry_type_deprecated">[deprecated] </span>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016739
16740
16741
16742 </td> <!-- entry_type -->
16743
16744 <td class="entry_description">
16745 <p>The correction coefficients to correct for this camera device's
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070016746radial and tangential lens distortion.<wbr/></p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016747 </td>
16748
16749 <td class="entry_units">
16750
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070016751 Unitless coefficients.<wbr/>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016752
16753 </td>
16754
16755 <td class="entry_range">
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070016756 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016757 </td>
16758
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016759 <td class="entry_hal_version">
16760 <p>3.<wbr/>2</p>
16761 </td>
16762
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016763 <td class="entry_tags">
16764 <ul class="entry_tags">
16765 <li><a href="#tag_DEPTH">DEPTH</a></li>
16766 </ul>
16767 </td>
16768
16769 </tr>
16770 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016771 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016772 </tr>
16773 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016774 <td class="entry_details" colspan="6">
Ruben Brunk6ad70382015-06-12 10:19:40 -070016775 <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070016776kappa_<wbr/>3]</code> and two tangential distortion coefficients
16777<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
16778lens's geometric distortion with the mapping equations:</p>
Ruben Brunk6ad70382015-06-12 10:19:40 -070016779<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 ) +
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070016780 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
Ruben Brunk6ad70382015-06-12 10:19:40 -070016781 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070016782 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016783</code></pre>
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070016784<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
16785input image that correspond to the pixel values in the
16786corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
16787<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
16788</code></pre>
16789<p>The pixel coordinates are defined in a normalized
16790coordinate system related to the
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070016791<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
Eino-Ville Talvalab5dd68b2015-05-29 16:03:31 -070016792Both <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
16793lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
16794of both x and y coordinates are normalized to be 1 at the
16795edge further from the optical center,<wbr/> so the range
16796for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
16797<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
16798optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
16799is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
16800<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016801 </td>
16802 </tr>
16803
16804
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016805 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080016806 <!-- end of entry -->
16807
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070016808
16809 <tr class="entry" id="dynamic_android.lens.distortion">
16810 <td class="entry_name
16811 " rowspan="3">
16812 android.<wbr/>lens.<wbr/>distortion
16813 </td>
16814 <td class="entry_type">
16815 <span class="entry_type_name">float</span>
16816 <span class="entry_type_container">x</span>
16817
16818 <span class="entry_type_array">
16819 5
16820 </span>
16821 <span class="entry_type_visibility"> [public]</span>
16822
16823
16824
16825
16826
16827
16828 </td> <!-- entry_type -->
16829
16830 <td class="entry_description">
16831 <p>The correction coefficients to correct for this camera device's
16832radial and tangential lens distortion.<wbr/></p>
16833<p>Replaces the deprecated <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> field,<wbr/> which was
16834inconsistently defined.<wbr/></p>
16835 </td>
16836
16837 <td class="entry_units">
16838
16839 Unitless coefficients.<wbr/>
16840
16841 </td>
16842
16843 <td class="entry_range">
16844 </td>
16845
16846 <td class="entry_hal_version">
16847 <p>3.<wbr/>3</p>
16848 </td>
16849
16850 <td class="entry_tags">
16851 <ul class="entry_tags">
16852 <li><a href="#tag_DEPTH">DEPTH</a></li>
16853 </ul>
16854 </td>
16855
16856 </tr>
16857 <tr class="entries_header">
16858 <th class="th_details" colspan="6">Details</th>
16859 </tr>
16860 <tr class="entry_cont">
16861 <td class="entry_details" colspan="6">
16862 <p>Three radial distortion coefficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
16863kappa_<wbr/>3]</code> and two tangential distortion coefficients
16864<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
16865lens's geometric distortion with the mapping equations:</p>
16866<pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
16867 kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
16868 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
16869 kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
16870</code></pre>
16871<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
16872input image that correspond to the pixel values in the
16873corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
16874<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
16875</code></pre>
16876<p>The pixel coordinates are defined in a coordinate system
16877related to the <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
16878calibration fields; see that entry for details of the mapping stages.<wbr/>
16879Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code>
16880have <code>(0,<wbr/>0)</code> at the lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>,<wbr/> and
16881the range of the coordinates depends on the focal length
16882terms of the intrinsic calibration.<wbr/></p>
16883<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
16884optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
16885<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
16886 </td>
16887 </tr>
16888
16889
16890 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16891 <!-- end of entry -->
16892
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016893
16894
16895 <!-- end of kind -->
16896 </tbody>
16897
16898 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016899 <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016900
16901
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016902 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016903
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070016904 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016905 <tr>
16906 <th class="th_name">Property Name</th>
16907 <th class="th_type">Type</th>
16908 <th class="th_description">Description</th>
16909 <th class="th_units">Units</th>
16910 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016911 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016912 <th class="th_tags">Tags</th>
16913 </tr>
16914 </thead>
16915
16916 <tbody>
16917
16918
16919
16920
16921
16922
16923
16924
16925
16926
16927 <tr class="entry" id="controls_android.noiseReduction.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070016928 <td class="entry_name
Zhijun He41d6f042015-01-15 18:17:24 -080016929 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080016930 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080016931 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016932 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080016933 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016934
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070016935 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016936
Igor Murashkin6c936c12014-05-13 14:51:49 -070016937
Igor Murashkinca256272014-10-02 15:27:09 -070016938 <span class="entry_type_hwlevel">[full] </span>
16939
Igor Murashkin6c936c12014-05-13 14:51:49 -070016940
16941
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016942 <ul class="entry_type_enum">
16943 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080016944 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070016945 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016946 </li>
16947 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080016948 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070016949 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070016950output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
16951relative to sensor.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016952 </li>
16953 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080016954 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070016955 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
16956rate relative to sensor output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016957 </li>
Zhijun He41d6f042015-01-15 18:17:24 -080016958 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080016959 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
Zhijun He41d6f042015-01-15 18:17:24 -080016960 <span class="entry_type_enum_optional">[optional]</span>
16961 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
16962sensor output.<wbr/> </p></span>
16963 </li>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070016964 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080016965 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070016966 <span class="entry_type_enum_optional">[optional]</span>
16967 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080016968based 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>)
16969or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
16970supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
16971noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
16972and the quality is equal to or better than FAST (since it is only applied to
16973lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070016974<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
16975with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
16976high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
16977produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
16978high-resolution buffers must not have noise reduction applied to maximize efficiency of
16979preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
16980low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
16981applied for reasonable preview quality.<wbr/></p>
16982<p>This mode is guaranteed to be supported by devices that support either the
16983YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
Chien-Yu Chend91ea142015-07-08 11:49:38 -070016984(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
16985be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070016986 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016987 </ul>
16988
16989 </td> <!-- entry_type -->
16990
16991 <td class="entry_description">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070016992 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080016993 </td>
16994
16995 <td class="entry_units">
16996 </td>
16997
16998 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070016999 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017000 </td>
17001
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017002 <td class="entry_hal_version">
17003 <p>3.<wbr/>2</p>
17004 </td>
17005
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017006 <td class="entry_tags">
17007 <ul class="entry_tags">
17008 <li><a href="#tag_V1">V1</a></li>
Zhijun He51379152015-04-24 17:59:50 -070017009 <li><a href="#tag_REPROC">REPROC</a></li>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017010 </ul>
17011 </td>
17012
17013 </tr>
17014 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017015 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017016 </tr>
17017 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017018 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070017019 <p>The noise reduction algorithm attempts to improve image quality by removing
Zhijun He41d6f042015-01-15 18:17:24 -080017020excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
17021<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
17022YUV domain.<wbr/></p>
17023<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
17024demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
17025This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
17026<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>
Zhijun Hef90eeaf2014-01-16 12:13:35 -080017027<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
17028will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
17029will use the highest-quality noise filtering algorithms,<wbr/>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070017030even if it slows down capture rate.<wbr/> FAST means the camera device will not
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070017031slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
17032MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
17033Every output stream will have a similar amount of enhancement applied.<wbr/></p>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070017034<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
17035buffer of high-resolution images during preview and reprocess image(s) from that buffer
17036into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
17037noise reduction to low-resolution streams (below maximum recording resolution) to maximize
17038preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
17039those will be reprocessed later if necessary.<wbr/></p>
Zhijun He41d6f042015-01-15 18:17:24 -080017040<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
17041will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
17042may adjust the noise reduction parameters for best image quality based on the
17043<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017044 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017045 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017046
Zhijun He41d6f042015-01-15 18:17:24 -080017047 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017048 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He41d6f042015-01-15 18:17:24 -080017049 </tr>
17050 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017051 <td class="entry_details" colspan="6">
Zhijun He41d6f042015-01-15 18:17:24 -080017052 <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
17053adjust the internal noise reduction parameters appropriately to get the best quality
17054images.<wbr/></p>
17055 </td>
17056 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017057
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017058 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017059 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017060
17061
17062 <tr class="entry" id="controls_android.noiseReduction.strength">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017063 <td class="entry_name
17064 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080017065 android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017066 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017067 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080017068 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017069
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017070 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017071
17072
Igor Murashkin6c936c12014-05-13 14:51:49 -070017073
17074
17075
Igor Murashkinca256272014-10-02 15:27:09 -070017076
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017077 </td> <!-- entry_type -->
17078
17079 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017080 <p>Control the amount of noise reduction
17081applied to the images</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017082 </td>
17083
17084 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080017085 1-10; 10 is max noise reduction
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017086 </td>
17087
17088 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080017089 <p>1 - 10</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017090 </td>
17091
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017092 <td class="entry_hal_version">
17093 <p>3.<wbr/>2</p>
17094 </td>
17095
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017096 <td class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070017097 <ul class="entry_tags">
17098 <li><a href="#tag_FUTURE">FUTURE</a></li>
17099 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017100 </td>
17101
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017102 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017103
17104
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017105 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017106 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017107
17108
17109
17110 <!-- end of kind -->
17111 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017112 <tr><td colspan="7" class="kind">static</td></tr>
Ruben Brunkd14f7162014-03-04 15:01:25 -080017113
17114 <thead class="entries_header">
17115 <tr>
17116 <th class="th_name">Property Name</th>
17117 <th class="th_type">Type</th>
17118 <th class="th_description">Description</th>
17119 <th class="th_units">Units</th>
17120 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017121 <th class="th_hal_version">Initial HIDL HAL version</th>
Ruben Brunkd14f7162014-03-04 15:01:25 -080017122 <th class="th_tags">Tags</th>
17123 </tr>
17124 </thead>
17125
17126 <tbody>
17127
17128
17129
17130
17131
17132
17133
17134
17135
17136
17137 <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017138 <td class="entry_name
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070017139 " rowspan="5">
Ruben Brunkd14f7162014-03-04 15:01:25 -080017140 android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
17141 </td>
17142 <td class="entry_type">
17143 <span class="entry_type_name">byte</span>
17144 <span class="entry_type_container">x</span>
17145
17146 <span class="entry_type_array">
17147 n
17148 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070017149 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070017150
17151
Igor Murashkinca256272014-10-02 15:27:09 -070017152 <span class="entry_type_hwlevel">[limited] </span>
17153
Igor Murashkin6c936c12014-05-13 14:51:49 -070017154
Ruben Brunkd14f7162014-03-04 15:01:25 -080017155 <div class="entry_type_notes">list of enums</div>
17156
17157
17158 </td> <!-- entry_type -->
17159
17160 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070017161 <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
17162by this camera device.<wbr/></p>
Ruben Brunkd14f7162014-03-04 15:01:25 -080017163 </td>
17164
17165 <td class="entry_units">
17166 </td>
17167
17168 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070017169 <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
Ruben Brunkd14f7162014-03-04 15:01:25 -080017170 </td>
17171
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017172 <td class="entry_hal_version">
17173 <p>3.<wbr/>2</p>
17174 </td>
17175
Ruben Brunkd14f7162014-03-04 15:01:25 -080017176 <td class="entry_tags">
17177 <ul class="entry_tags">
17178 <li><a href="#tag_V1">V1</a></li>
Zhijun He51379152015-04-24 17:59:50 -070017179 <li><a href="#tag_REPROC">REPROC</a></li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080017180 </ul>
17181 </td>
17182
17183 </tr>
17184 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017185 <th class="th_details" colspan="6">Details</th>
Ruben Brunkd14f7162014-03-04 15:01:25 -080017186 </tr>
17187 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017188 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070017189 <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
Chien-Yu Chend91ea142015-07-08 11:49:38 -070017190<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
17191ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -070017192<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
Ruben Brunkd14f7162014-03-04 15:01:25 -080017193 </td>
17194 </tr>
17195
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070017196 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017197 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070017198 </tr>
17199 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017200 <td class="entry_details" colspan="6">
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070017201 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
17202on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
17203That is,<wbr/> if the highest quality implementation on the camera device does not slow down
17204capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
17205 </td>
17206 </tr>
Ruben Brunkd14f7162014-03-04 15:01:25 -080017207
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017208 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunkd14f7162014-03-04 15:01:25 -080017209 <!-- end of entry -->
17210
17211
17212
17213 <!-- end of kind -->
17214 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017215 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017216
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017217 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017218 <tr>
17219 <th class="th_name">Property Name</th>
17220 <th class="th_type">Type</th>
17221 <th class="th_description">Description</th>
17222 <th class="th_units">Units</th>
17223 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017224 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017225 <th class="th_tags">Tags</th>
17226 </tr>
17227 </thead>
17228
17229 <tbody>
17230
17231
17232
17233
17234
17235
17236
17237
17238
17239
17240 <tr class="entry" id="dynamic_android.noiseReduction.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017241 <td class="entry_name
Zhijun He41d6f042015-01-15 18:17:24 -080017242 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080017243 android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017244 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017245 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080017246 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017247
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017248 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017249
Igor Murashkin6c936c12014-05-13 14:51:49 -070017250
Igor Murashkinca256272014-10-02 15:27:09 -070017251 <span class="entry_type_hwlevel">[full] </span>
17252
Igor Murashkin6c936c12014-05-13 14:51:49 -070017253
17254
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017255 <ul class="entry_type_enum">
17256 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080017257 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070017258 <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017259 </li>
17260 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080017261 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070017262 <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070017263output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
17264relative to sensor.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017265 </li>
17266 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080017267 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070017268 <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
17269rate relative to sensor output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017270 </li>
Zhijun He41d6f042015-01-15 18:17:24 -080017271 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080017272 <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
Zhijun He41d6f042015-01-15 18:17:24 -080017273 <span class="entry_type_enum_optional">[optional]</span>
17274 <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
17275sensor output.<wbr/> </p></span>
17276 </li>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070017277 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080017278 <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070017279 <span class="entry_type_enum_optional">[optional]</span>
17280 <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017281based 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>)
17282or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
17283supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
17284noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
17285and the quality is equal to or better than FAST (since it is only applied to
17286lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070017287<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
17288with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
17289high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
17290produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the
17291high-resolution buffers must not have noise reduction applied to maximize efficiency of
17292preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
17293low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
17294applied for reasonable preview quality.<wbr/></p>
17295<p>This mode is guaranteed to be supported by devices that support either the
17296YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
Chien-Yu Chend91ea142015-07-08 11:49:38 -070017297(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
17298be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070017299 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017300 </ul>
17301
17302 </td> <!-- entry_type -->
17303
17304 <td class="entry_description">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070017305 <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017306 </td>
17307
17308 <td class="entry_units">
17309 </td>
17310
17311 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070017312 <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017313 </td>
17314
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017315 <td class="entry_hal_version">
17316 <p>3.<wbr/>2</p>
17317 </td>
17318
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017319 <td class="entry_tags">
17320 <ul class="entry_tags">
17321 <li><a href="#tag_V1">V1</a></li>
Zhijun He51379152015-04-24 17:59:50 -070017322 <li><a href="#tag_REPROC">REPROC</a></li>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017323 </ul>
17324 </td>
17325
17326 </tr>
17327 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017328 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017329 </tr>
17330 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017331 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070017332 <p>The noise reduction algorithm attempts to improve image quality by removing
Zhijun He41d6f042015-01-15 18:17:24 -080017333excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
17334<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
17335YUV domain.<wbr/></p>
17336<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
17337demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
17338This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
17339<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>
Zhijun Hef90eeaf2014-01-16 12:13:35 -080017340<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
17341will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
17342will use the highest-quality noise filtering algorithms,<wbr/>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070017343even if it slows down capture rate.<wbr/> FAST means the camera device will not
Chien-Yu Chen9365b4e2015-07-14 16:33:58 -070017344slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
17345MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
17346Every output stream will have a similar amount of enhancement applied.<wbr/></p>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070017347<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
17348buffer of high-resolution images during preview and reprocess image(s) from that buffer
17349into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
17350noise reduction to low-resolution streams (below maximum recording resolution) to maximize
17351preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
17352those will be reprocessed later if necessary.<wbr/></p>
Zhijun He41d6f042015-01-15 18:17:24 -080017353<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
17354will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
17355may adjust the noise reduction parameters for best image quality based on the
17356<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017357 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017358 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017359
Zhijun He41d6f042015-01-15 18:17:24 -080017360 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017361 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He41d6f042015-01-15 18:17:24 -080017362 </tr>
17363 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017364 <td class="entry_details" colspan="6">
Zhijun He41d6f042015-01-15 18:17:24 -080017365 <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
17366adjust the internal noise reduction parameters appropriately to get the best quality
17367images.<wbr/></p>
17368 </td>
17369 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017370
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017371 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017372 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017373
17374
17375
17376 <!-- end of kind -->
17377 </tbody>
17378
17379 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017380 <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017381
17382
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017383 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017384
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017385 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017386 <tr>
17387 <th class="th_name">Property Name</th>
17388 <th class="th_type">Type</th>
17389 <th class="th_description">Description</th>
17390 <th class="th_units">Units</th>
17391 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017392 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017393 <th class="th_tags">Tags</th>
17394 </tr>
17395 </thead>
17396
17397 <tbody>
17398
17399
17400
17401
17402
17403
17404
17405
17406
17407
17408 <tr class="entry" id="static_android.quirks.meteringCropRegion">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017409 <td class="entry_name
17410 entry_name_deprecated
17411 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080017412 android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017413 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017414 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080017415 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017416
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017417 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017418
17419
Igor Murashkinca256272014-10-02 15:27:09 -070017420
Igor Murashkin6c936c12014-05-13 14:51:49 -070017421 <span class="entry_type_deprecated">[deprecated] </span>
17422
17423
17424
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017425 </td> <!-- entry_type -->
17426
17427 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017428 <p>If set to 1,<wbr/> the camera service does not
Igor Murashkin8aa2a112013-12-09 12:06:17 -080017429scale 'normalized' coordinates with respect to the crop
Igor Murashkin0b080452013-12-27 15:30:25 -080017430region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
17431and output (face rectangles).<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017432 </td>
17433
17434 <td class="entry_units">
17435 </td>
17436
17437 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017438 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017439 </td>
17440
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017441 <td class="entry_hal_version">
17442 <p>3.<wbr/>2</p>
17443 </td>
17444
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017445 <td class="entry_tags">
17446 </td>
17447
17448 </tr>
17449 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017450 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017451 </tr>
17452 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017453 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080017454 <p>Normalized coordinates refer to those in the
17455(-1000,<wbr/>1000) range mentioned in the
17456android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
Igor Murashkin8aa2a112013-12-09 12:06:17 -080017457<p>HAL implementations should instead always use and emit
Igor Murashkin0b080452013-12-27 15:30:25 -080017458sensor array-relative coordinates for all region data.<wbr/> Does
17459not need to be listed in static metadata.<wbr/> Support will be
17460removed in future versions of camera service.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017461 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017462 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017463
17464
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017465 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017466 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017467
17468
17469 <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017470 <td class="entry_name
17471 entry_name_deprecated
17472 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080017473 android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017474 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017475 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080017476 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017477
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017478 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017479
17480
Igor Murashkinca256272014-10-02 15:27:09 -070017481
Igor Murashkin6c936c12014-05-13 14:51:49 -070017482 <span class="entry_type_deprecated">[deprecated] </span>
17483
17484
17485
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017486 </td> <!-- entry_type -->
17487
17488 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017489 <p>If set to 1,<wbr/> then the camera service always
17490switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
17491trigger.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017492 </td>
17493
17494 <td class="entry_units">
17495 </td>
17496
17497 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017498 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017499 </td>
17500
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017501 <td class="entry_hal_version">
17502 <p>3.<wbr/>2</p>
17503 </td>
17504
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017505 <td class="entry_tags">
17506 </td>
17507
17508 </tr>
17509 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017510 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017511 </tr>
17512 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017513 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080017514 <p>HAL implementations should implement AF trigger
17515modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
17516CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
17517not need to be listed in static metadata.<wbr/> Support will be
17518removed in future versions of camera service</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017519 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017520 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017521
17522
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017523 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017524 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017525
17526
17527 <tr class="entry" id="static_android.quirks.useZslFormat">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017528 <td class="entry_name
17529 entry_name_deprecated
17530 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080017531 android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017532 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017533 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080017534 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017535
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017536 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017537
17538
Igor Murashkinca256272014-10-02 15:27:09 -070017539
Igor Murashkin6c936c12014-05-13 14:51:49 -070017540 <span class="entry_type_deprecated">[deprecated] </span>
17541
17542
17543
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017544 </td> <!-- entry_type -->
17545
17546 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017547 <p>If set to 1,<wbr/> the camera service uses
17548CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
17549HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
17550shutter lag stream</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017551 </td>
17552
17553 <td class="entry_units">
17554 </td>
17555
17556 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017557 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017558 </td>
17559
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017560 <td class="entry_hal_version">
17561 <p>3.<wbr/>2</p>
17562 </td>
17563
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017564 <td class="entry_tags">
17565 </td>
17566
17567 </tr>
17568 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017569 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017570 </tr>
17571 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017572 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080017573 <p>HAL implementations should use gralloc usage flags
Igor Murashkin8aa2a112013-12-09 12:06:17 -080017574to determine that a stream will be used for
Igor Murashkin0b080452013-12-27 15:30:25 -080017575zero-shutter-lag,<wbr/> instead of relying on an explicit
17576format setting.<wbr/> Does not need to be listed in static
17577metadata.<wbr/> Support will be removed in future versions of
17578camera service.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017579 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017580 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017581
17582
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017583 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017584 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017585
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017586
17587 <tr class="entry" id="static_android.quirks.usePartialResult">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017588 <td class="entry_name
17589 entry_name_deprecated
17590 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080017591 android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017592 </td>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017593 <td class="entry_type">
17594 <span class="entry_type_name">byte</span>
17595
Eino-Ville Talvala52a64a52013-11-07 14:43:43 -080017596 <span class="entry_type_visibility"> [hidden]</span>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017597
17598
Igor Murashkinca256272014-10-02 15:27:09 -070017599
Igor Murashkin6c936c12014-05-13 14:51:49 -070017600 <span class="entry_type_deprecated">[deprecated] </span>
17601
17602
17603
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017604 </td> <!-- entry_type -->
17605
17606 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017607 <p>If set to 1,<wbr/> the HAL will always split result
17608metadata for a single capture into multiple buffers,<wbr/>
17609returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017610 </td>
17611
17612 <td class="entry_units">
17613 </td>
17614
17615 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017616 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017617 </td>
17618
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017619 <td class="entry_hal_version">
17620 <p>3.<wbr/>2</p>
17621 </td>
17622
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017623 <td class="entry_tags">
17624 </td>
17625
17626 </tr>
17627 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017628 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017629 </tr>
17630 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017631 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080017632 <p>Does not need to be listed in static
17633metadata.<wbr/> Support for partial results will be reworked in
17634future versions of camera service.<wbr/> This quirk will stop
Igor Murashkin8aa2a112013-12-09 12:06:17 -080017635working at that point; DO NOT USE without careful
Igor Murashkin0b080452013-12-27 15:30:25 -080017636consideration of future support.<wbr/></p>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017637 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017638 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017639
Igor Murashkin7761a222014-01-27 16:06:38 -080017640 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017641 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin7761a222014-01-27 16:06:38 -080017642 </tr>
17643 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017644 <td class="entry_details" colspan="6">
Igor Murashkin7761a222014-01-27 16:06:38 -080017645 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
17646for information on how to implement partial results.<wbr/></p>
17647 </td>
17648 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017649
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017650 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017651 <!-- end of entry -->
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017652
17653
17654
17655 <!-- end of kind -->
17656 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017657 <tr><td colspan="7" class="kind">dynamic</td></tr>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017658
17659 <thead class="entries_header">
17660 <tr>
17661 <th class="th_name">Property Name</th>
17662 <th class="th_type">Type</th>
17663 <th class="th_description">Description</th>
17664 <th class="th_units">Units</th>
17665 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017666 <th class="th_hal_version">Initial HIDL HAL version</th>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017667 <th class="th_tags">Tags</th>
17668 </tr>
17669 </thead>
17670
17671 <tbody>
17672
17673
17674
17675
17676
17677
17678
17679
17680
17681
17682 <tr class="entry" id="dynamic_android.quirks.partialResult">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017683 <td class="entry_name
17684 entry_name_deprecated
17685 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080017686 android.<wbr/>quirks.<wbr/>partial<wbr/>Result
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017687 </td>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017688 <td class="entry_type">
17689 <span class="entry_type_name entry_type_name_enum">byte</span>
17690
Eino-Ville Talvala52a64a52013-11-07 14:43:43 -080017691 <span class="entry_type_visibility"> [hidden as boolean]</span>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017692
Igor Murashkin6c936c12014-05-13 14:51:49 -070017693
Igor Murashkinca256272014-10-02 15:27:09 -070017694
Igor Murashkin6c936c12014-05-13 14:51:49 -070017695 <span class="entry_type_deprecated">[deprecated] </span>
17696
17697
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017698 <ul class="entry_type_enum">
17699 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080017700 <span class="entry_type_enum_name">FINAL (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080017701 <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
17702for this capture.<wbr/></p></span>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017703 </li>
17704 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080017705 <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080017706 <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
17707capture.<wbr/> More result buffers for this capture will be sent
Zhijun He25b8ac52014-02-24 09:49:37 -080017708by the camera device,<wbr/> the last of which will be marked
Igor Murashkina10351a2014-01-15 17:05:22 -080017709FINAL.<wbr/></p></span>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017710 </li>
17711 </ul>
17712
17713 </td> <!-- entry_type -->
17714
17715 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017716 <p>Whether a result given to the framework is the
17717final one for the capture,<wbr/> or only a partial that contains a
Igor Murashkin8aa2a112013-12-09 12:06:17 -080017718subset of the full set of dynamic metadata
Igor Murashkin0b080452013-12-27 15:30:25 -080017719values.<wbr/></p>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017720 </td>
17721
17722 <td class="entry_units">
17723 </td>
17724
17725 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017726 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17727 <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017728 </td>
17729
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017730 <td class="entry_hal_version">
17731 <p>3.<wbr/>2</p>
17732 </td>
17733
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017734 <td class="entry_tags">
17735 </td>
17736
17737 </tr>
17738 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017739 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017740 </tr>
17741 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017742 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080017743 <p>The entries in the result metadata buffers for a
17744single capture may not overlap,<wbr/> except for this entry.<wbr/> The
Igor Murashkin8aa2a112013-12-09 12:06:17 -080017745FINAL buffers must retain FIFO ordering relative to the
Igor Murashkin0b080452013-12-27 15:30:25 -080017746requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
17747always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
17748before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
17749in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
17750capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
Zhijun He25b8ac52014-02-24 09:49:37 -080017751only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017752 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017753 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017754
Igor Murashkin7761a222014-01-27 16:06:38 -080017755 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017756 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin7761a222014-01-27 16:06:38 -080017757 </tr>
17758 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017759 <td class="entry_details" colspan="6">
Igor Murashkin7761a222014-01-27 16:06:38 -080017760 <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
17761for information on how to implement partial results.<wbr/></p>
17762 </td>
17763 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017764
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017765 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017766 <!-- end of entry -->
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -070017767
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017768
17769
17770 <!-- end of kind -->
17771 </tbody>
17772
17773 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017774 <tr><td colspan="7" id="section_request" class="section">request</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017775
17776
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017777 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017778
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017779 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017780 <tr>
17781 <th class="th_name">Property Name</th>
17782 <th class="th_type">Type</th>
17783 <th class="th_description">Description</th>
17784 <th class="th_units">Units</th>
17785 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017786 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017787 <th class="th_tags">Tags</th>
17788 </tr>
17789 </thead>
17790
17791 <tbody>
17792
17793
17794
17795
17796
17797
17798
17799
17800
17801
17802 <tr class="entry" id="controls_android.request.frameCount">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017803 <td class="entry_name
17804 entry_name_deprecated
17805 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080017806 android.<wbr/>request.<wbr/>frame<wbr/>Count
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017807 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017808 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080017809 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017810
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017811 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017812
17813
Igor Murashkinca256272014-10-02 15:27:09 -070017814
Igor Murashkin6c936c12014-05-13 14:51:49 -070017815 <span class="entry_type_deprecated">[deprecated] </span>
17816
17817
17818
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017819 </td> <!-- entry_type -->
17820
17821 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017822 <p>A frame counter set by the framework.<wbr/> Must
17823be maintained unchanged in output frame.<wbr/> This value monotonically
17824increases with every new result (that is,<wbr/> each new result has a unique
17825frameCount value).<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017826 </td>
17827
17828 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080017829 incrementing integer
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017830 </td>
17831
17832 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017833 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17834 <p>Any int.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017835 </td>
17836
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017837 <td class="entry_hal_version">
17838 <p>3.<wbr/>2</p>
17839 </td>
17840
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017841 <td class="entry_tags">
17842 </td>
17843
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017844 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017845
17846
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017847 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017848 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017849
17850
17851 <tr class="entry" id="controls_android.request.id">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017852 <td class="entry_name
17853 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080017854 android.<wbr/>request.<wbr/>id
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017855 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017856 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080017857 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017858
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017859 <span class="entry_type_visibility"> [hidden]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017860
17861
Igor Murashkin6c936c12014-05-13 14:51:49 -070017862
17863
17864
Igor Murashkinca256272014-10-02 15:27:09 -070017865
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017866 </td> <!-- entry_type -->
17867
17868 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017869 <p>An application-specified ID for the current
17870request.<wbr/> Must be maintained unchanged in output
17871frame</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017872 </td>
17873
17874 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080017875 arbitrary integer assigned by application
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017876 </td>
17877
17878 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080017879 <p>Any int</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017880 </td>
17881
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017882 <td class="entry_hal_version">
17883 <p>3.<wbr/>2</p>
17884 </td>
17885
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017886 <td class="entry_tags">
17887 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080017888 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017889 </ul>
17890 </td>
17891
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017892 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017893
17894
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017895 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017896 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017897
17898
17899 <tr class="entry" id="controls_android.request.inputStreams">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017900 <td class="entry_name
17901 entry_name_deprecated
17902 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080017903 android.<wbr/>request.<wbr/>input<wbr/>Streams
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017904 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017905 <td class="entry_type">
Zhijun Hee36cdbe2013-09-06 14:28:37 -070017906 <span class="entry_type_name">int32</span>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070017907 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017908
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070017909 <span class="entry_type_array">
17910 n
17911 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017912 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017913
17914
Igor Murashkinca256272014-10-02 15:27:09 -070017915
Igor Murashkin6c936c12014-05-13 14:51:49 -070017916 <span class="entry_type_deprecated">[deprecated] </span>
17917
17918
17919
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017920 </td> <!-- entry_type -->
17921
17922 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017923 <p>List which camera reprocess stream is used
17924for the source of reprocessing data.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017925 </td>
17926
17927 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080017928 List of camera reprocess stream IDs
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017929 </td>
17930
17931 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017932 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17933 <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017934 </td>
17935
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017936 <td class="entry_hal_version">
17937 <p>3.<wbr/>2</p>
17938 </td>
17939
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017940 <td class="entry_tags">
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070017941 <ul class="entry_tags">
17942 <li><a href="#tag_HAL2">HAL2</a></li>
17943 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017944 </td>
17945
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017946 </tr>
17947 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017948 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017949 </tr>
17950 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017951 <td class="entry_details" colspan="6">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080017952 <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
Igor Murashkin0b080452013-12-27 15:30:25 -080017953REPROCESS.<wbr/> Ignored otherwise</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017954 </td>
17955 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017956
17957
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080017958 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080017959 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017960
17961
17962 <tr class="entry" id="controls_android.request.metadataMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070017963 <td class="entry_name
17964 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080017965 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080017966 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017967 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080017968 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017969
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070017970 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017971
Igor Murashkin6c936c12014-05-13 14:51:49 -070017972
17973
17974
Igor Murashkinca256272014-10-02 15:27:09 -070017975
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017976 <ul class="entry_type_enum">
17977 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080017978 <span class="entry_type_enum_name">NONE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080017979 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17980for application-bound buffer data.<wbr/> If no
17981application-bound streams exist,<wbr/> no frame should be
17982placed in the output frame queue.<wbr/> If such streams
17983exist,<wbr/> a frame should be placed on the output queue
17984with null metadata but with the necessary output buffer
17985information.<wbr/> Timestamp information should still be
17986included with any output stream buffers</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017987 </li>
17988 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080017989 <span class="entry_type_enum_name">FULL (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080017990 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17991only be produced if they are separately
17992enabled</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080017993 </li>
17994 </ul>
17995
17996 </td> <!-- entry_type -->
17997
17998 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080017999 <p>How much metadata to produce on
18000output</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018001 </td>
18002
18003 <td class="entry_units">
18004 </td>
18005
18006 <td class="entry_range">
18007 </td>
18008
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018009 <td class="entry_hal_version">
18010 <p>3.<wbr/>2</p>
18011 </td>
18012
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018013 <td class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070018014 <ul class="entry_tags">
18015 <li><a href="#tag_FUTURE">FUTURE</a></li>
18016 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018017 </td>
18018
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018019 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018020
18021
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018022 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018023 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018024
18025
18026 <tr class="entry" id="controls_android.request.outputStreams">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018027 <td class="entry_name
18028 entry_name_deprecated
18029 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080018030 android.<wbr/>request.<wbr/>output<wbr/>Streams
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018031 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018032 <td class="entry_type">
Zhijun Hee36cdbe2013-09-06 14:28:37 -070018033 <span class="entry_type_name">int32</span>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070018034 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018035
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070018036 <span class="entry_type_array">
18037 n
18038 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070018039 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018040
18041
Igor Murashkinca256272014-10-02 15:27:09 -070018042
Igor Murashkin6c936c12014-05-13 14:51:49 -070018043 <span class="entry_type_deprecated">[deprecated] </span>
18044
18045
18046
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018047 </td> <!-- entry_type -->
18048
18049 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080018050 <p>Lists which camera output streams image data
18051from this capture must be sent to</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018052 </td>
18053
18054 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080018055 List of camera stream IDs
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018056 </td>
18057
18058 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018059 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18060 <p>List must only include streams that have been
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080018061created</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018062 </td>
18063
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018064 <td class="entry_hal_version">
18065 <p>3.<wbr/>2</p>
18066 </td>
18067
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018068 <td class="entry_tags">
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070018069 <ul class="entry_tags">
18070 <li><a href="#tag_HAL2">HAL2</a></li>
18071 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018072 </td>
18073
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018074 </tr>
18075 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018076 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018077 </tr>
18078 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018079 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080018080 <p>If no output streams are listed,<wbr/> then the image
18081data should simply be discarded.<wbr/> The image data must
18082still be captured for metadata and statistics production,<wbr/>
18083and the lens and flash must operate as requested.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018084 </td>
18085 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018086
18087
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018088 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018089 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018090
18091
18092 <tr class="entry" id="controls_android.request.type">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018093 <td class="entry_name
18094 entry_name_deprecated
18095 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080018096 android.<wbr/>request.<wbr/>type
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018097 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018098 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080018099 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018100
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070018101 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018102
Igor Murashkin6c936c12014-05-13 14:51:49 -070018103
Igor Murashkinca256272014-10-02 15:27:09 -070018104
Igor Murashkin6c936c12014-05-13 14:51:49 -070018105 <span class="entry_type_deprecated">[deprecated] </span>
18106
18107
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018108 <ul class="entry_type_enum">
18109 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018110 <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080018111 <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
18112and process it according to the
18113settings</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018114 </li>
18115 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018116 <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080018117 <span class="entry_type_enum_notes"><p>Process previously captured data; the
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080018118<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
Igor Murashkina10351a2014-01-15 17:05:22 -080018119source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
18120needed for reprocessing with [RP]</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018121 </li>
18122 </ul>
18123
18124 </td> <!-- entry_type -->
18125
18126 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080018127 <p>The type of the request; either CAPTURE or
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018128REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018129 </td>
18130
18131 <td class="entry_units">
18132 </td>
18133
18134 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018135 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018136 </td>
18137
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018138 <td class="entry_hal_version">
18139 <p>3.<wbr/>2</p>
18140 </td>
18141
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018142 <td class="entry_tags">
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070018143 <ul class="entry_tags">
18144 <li><a href="#tag_HAL2">HAL2</a></li>
18145 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018146 </td>
18147
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018148 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018149
18150
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018151 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018152 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018153
18154
18155
18156 <!-- end of kind -->
18157 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018158 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018159
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070018160 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018161 <tr>
18162 <th class="th_name">Property Name</th>
18163 <th class="th_type">Type</th>
18164 <th class="th_description">Description</th>
18165 <th class="th_units">Units</th>
18166 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018167 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018168 <th class="th_tags">Tags</th>
18169 </tr>
18170 </thead>
18171
18172 <tbody>
18173
18174
18175
18176
18177
18178
18179
18180
18181
18182
18183 <tr class="entry" id="static_android.request.maxNumOutputStreams">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018184 <td class="entry_name
18185 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080018186 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018187 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018188 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080018189 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018190 <span class="entry_type_container">x</span>
18191
18192 <span class="entry_type_array">
18193 3
18194 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070018195 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018196
18197
Igor Murashkinca256272014-10-02 15:27:09 -070018198 <span class="entry_type_hwlevel">[legacy] </span>
18199
Igor Murashkin6c936c12014-05-13 14:51:49 -070018200
18201
18202
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018203 </td> <!-- entry_type -->
18204
18205 <td class="entry_description">
Zhijun He12744b22014-01-22 15:58:57 -080018206 <p>The maximum numbers of different types of output streams
18207that can be configured and used simultaneously by a camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018208 </td>
18209
18210 <td class="entry_units">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018211 </td>
18212
18213 <td class="entry_range">
Zhijun He3e6b6182014-04-24 11:17:25 -070018214 <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
18215<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
18216<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
Zhijun He2e76d002014-02-12 13:37:03 -080018217for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
18218&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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018219 </td>
18220
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018221 <td class="entry_hal_version">
18222 <p>3.<wbr/>2</p>
18223 </td>
18224
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018225 <td class="entry_tags">
18226 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080018227 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018228 </ul>
18229 </td>
18230
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018231 </tr>
18232 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018233 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018234 </tr>
18235 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018236 <td class="entry_details" colspan="6">
Zhijun He12744b22014-01-22 15:58:57 -080018237 <p>This is a 3 element tuple that contains the max number of output simultaneous
Zhijun He3e6b6182014-04-24 11:17:25 -070018238streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
18239formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
18240stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
Zhijun He12744b22014-01-22 15:58:57 -080018241number 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>
18242<p>This lists the upper bound of the number of output streams supported by
18243the camera device.<wbr/> Using more streams simultaneously may require more hardware and
Igor Murashkin35a108f2014-05-27 10:51:25 -070018244CPU resources that will consume more power.<wbr/> The image format for an output stream can
Zhijun He3e6b6182014-04-24 11:17:25 -070018245be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070018246The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be categorized
Zhijun He3e6b6182014-04-24 11:17:25 -070018247into the 3 stream types as below:</p>
Zhijun He12744b22014-01-22 15:58:57 -080018248<ul>
Zhijun He3e6b6182014-04-24 11:17:25 -070018249<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018250 Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018251<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
18252 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
18253<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically
18254 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070018255 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> .<wbr/></li>
Zhijun He12744b22014-01-22 15:58:57 -080018256</ul>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018257 </td>
18258 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018259
18260
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018261 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018262 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018263
18264
Igor Murashkin35a108f2014-05-27 10:51:25 -070018265 <tr class="entry" id="static_android.request.maxNumOutputRaw">
18266 <td class="entry_name
18267 " rowspan="3">
18268 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
18269 </td>
18270 <td class="entry_type">
18271 <span class="entry_type_name">int32</span>
18272
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070018273 <span class="entry_type_visibility"> [java_public]</span>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018274
18275 <span class="entry_type_synthetic">[synthetic] </span>
18276
Igor Murashkinca256272014-10-02 15:27:09 -070018277 <span class="entry_type_hwlevel">[legacy] </span>
18278
Igor Murashkin35a108f2014-05-27 10:51:25 -070018279
18280
18281
18282 </td> <!-- entry_type -->
18283
18284 <td class="entry_description">
18285 <p>The maximum numbers of different types of output streams
18286that can be configured and used simultaneously by a camera device
18287for any <code>RAW</code> formats.<wbr/></p>
18288 </td>
18289
18290 <td class="entry_units">
18291 </td>
18292
18293 <td class="entry_range">
18294 <p>&gt;= 0</p>
18295 </td>
18296
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018297 <td class="entry_hal_version">
18298 <p>3.<wbr/>2</p>
18299 </td>
18300
Igor Murashkin35a108f2014-05-27 10:51:25 -070018301 <td class="entry_tags">
18302 </td>
18303
18304 </tr>
18305 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018306 <th class="th_details" colspan="6">Details</th>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018307 </tr>
18308 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018309 <td class="entry_details" colspan="6">
Igor Murashkin35a108f2014-05-27 10:51:25 -070018310 <p>This value contains the max number of output simultaneous
18311streams from the raw sensor.<wbr/></p>
18312<p>This lists the upper bound of the number of output streams supported by
18313the camera device.<wbr/> Using more streams simultaneously may require more hardware and
18314CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
18315be 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>
18316<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
18317<ul>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018318<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
18319<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
18320<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018321</ul>
Igor Murashkinca256272014-10-02 15:27:09 -070018322<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
18323never support raw streams.<wbr/></p>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018324 </td>
18325 </tr>
18326
18327
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018328 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018329 <!-- end of entry -->
18330
18331
18332 <tr class="entry" id="static_android.request.maxNumOutputProc">
18333 <td class="entry_name
18334 " rowspan="3">
18335 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
18336 </td>
18337 <td class="entry_type">
18338 <span class="entry_type_name">int32</span>
18339
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070018340 <span class="entry_type_visibility"> [java_public]</span>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018341
18342 <span class="entry_type_synthetic">[synthetic] </span>
18343
Igor Murashkinca256272014-10-02 15:27:09 -070018344 <span class="entry_type_hwlevel">[legacy] </span>
18345
Igor Murashkin35a108f2014-05-27 10:51:25 -070018346
18347
18348
18349 </td> <!-- entry_type -->
18350
18351 <td class="entry_description">
18352 <p>The maximum numbers of different types of output streams
18353that can be configured and used simultaneously by a camera device
18354for any processed (but not-stalling) formats.<wbr/></p>
18355 </td>
18356
18357 <td class="entry_units">
18358 </td>
18359
18360 <td class="entry_range">
18361 <p>&gt;= 3
18362for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
18363&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>
18364 </td>
18365
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018366 <td class="entry_hal_version">
18367 <p>3.<wbr/>2</p>
18368 </td>
18369
Igor Murashkin35a108f2014-05-27 10:51:25 -070018370 <td class="entry_tags">
18371 </td>
18372
18373 </tr>
18374 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018375 <th class="th_details" colspan="6">Details</th>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018376 </tr>
18377 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018378 <td class="entry_details" colspan="6">
Igor Murashkin35a108f2014-05-27 10:51:25 -070018379 <p>This value contains the max number of output simultaneous
18380streams for any processed (but not-stalling) formats.<wbr/></p>
18381<p>This lists the upper bound of the number of output streams supported by
18382the camera device.<wbr/> Using more streams simultaneously may require more hardware and
18383CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
18384be 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>
18385<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
18386Typically:</p>
18387<ul>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018388<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
18389<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
18390<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
18391<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>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070018392<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a></li>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018393</ul>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018394<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
18395processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070018396<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018397 </td>
18398 </tr>
18399
18400
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018401 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018402 <!-- end of entry -->
18403
18404
18405 <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
18406 <td class="entry_name
18407 " rowspan="3">
18408 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
18409 </td>
18410 <td class="entry_type">
18411 <span class="entry_type_name">int32</span>
18412
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070018413 <span class="entry_type_visibility"> [java_public]</span>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018414
18415 <span class="entry_type_synthetic">[synthetic] </span>
18416
Igor Murashkinca256272014-10-02 15:27:09 -070018417 <span class="entry_type_hwlevel">[legacy] </span>
18418
Igor Murashkin35a108f2014-05-27 10:51:25 -070018419
18420
18421
18422 </td> <!-- entry_type -->
18423
18424 <td class="entry_description">
18425 <p>The maximum numbers of different types of output streams
18426that can be configured and used simultaneously by a camera device
18427for any processed (and stalling) formats.<wbr/></p>
18428 </td>
18429
18430 <td class="entry_units">
18431 </td>
18432
18433 <td class="entry_range">
18434 <p>&gt;= 1</p>
18435 </td>
18436
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018437 <td class="entry_hal_version">
18438 <p>3.<wbr/>2</p>
18439 </td>
18440
Igor Murashkin35a108f2014-05-27 10:51:25 -070018441 <td class="entry_tags">
18442 </td>
18443
18444 </tr>
18445 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018446 <th class="th_details" colspan="6">Details</th>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018447 </tr>
18448 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018449 <td class="entry_details" colspan="6">
Igor Murashkin35a108f2014-05-27 10:51:25 -070018450 <p>This value contains the max number of output simultaneous
18451streams for any processed (but not-stalling) formats.<wbr/></p>
18452<p>This lists the upper bound of the number of output streams supported by
18453the camera device.<wbr/> Using more streams simultaneously may require more hardware and
18454CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
18455be 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>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018456<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018457&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>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018458<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
18459processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
Igor Murashkinca256272014-10-02 15:27:09 -070018460<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018461 </td>
18462 </tr>
18463
18464
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018465 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin35a108f2014-05-27 10:51:25 -070018466 <!-- end of entry -->
18467
18468
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018469 <tr class="entry" id="static_android.request.maxNumReprocessStreams">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018470 <td class="entry_name
18471 entry_name_deprecated
18472 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080018473 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018474 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018475 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080018476 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018477 <span class="entry_type_container">x</span>
18478
18479 <span class="entry_type_array">
18480 1
18481 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070018482 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018483
18484
Igor Murashkinca256272014-10-02 15:27:09 -070018485
Igor Murashkin6c936c12014-05-13 14:51:49 -070018486 <span class="entry_type_deprecated">[deprecated] </span>
18487
18488
18489
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018490 </td> <!-- entry_type -->
18491
18492 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080018493 <p>How many reprocessing streams of any type
Zhijun He12744b22014-01-22 15:58:57 -080018494can be allocated at the same time.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018495 </td>
18496
18497 <td class="entry_units">
18498 </td>
18499
18500 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018501 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Zhijun He12744b22014-01-22 15:58:57 -080018502 <p>&gt;= 0</p>
18503 </td>
18504
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018505 <td class="entry_hal_version">
18506 <p>3.<wbr/>2</p>
18507 </td>
18508
Zhijun He12744b22014-01-22 15:58:57 -080018509 <td class="entry_tags">
18510 <ul class="entry_tags">
18511 <li><a href="#tag_HAL2">HAL2</a></li>
18512 </ul>
18513 </td>
18514
18515 </tr>
18516 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018517 <th class="th_details" colspan="6">Details</th>
Zhijun He12744b22014-01-22 15:58:57 -080018518 </tr>
18519 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018520 <td class="entry_details" colspan="6">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018521 <p>Only used by HAL2.<wbr/>x.<wbr/></p>
Zhijun He12744b22014-01-22 15:58:57 -080018522<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
18523 </td>
18524 </tr>
18525
18526
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018527 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He12744b22014-01-22 15:58:57 -080018528 <!-- end of entry -->
18529
18530
18531 <tr class="entry" id="static_android.request.maxNumInputStreams">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018532 <td class="entry_name
Zhijun He41d6f042015-01-15 18:17:24 -080018533 " rowspan="5">
Zhijun He12744b22014-01-22 15:58:57 -080018534 android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
18535 </td>
18536 <td class="entry_type">
18537 <span class="entry_type_name">int32</span>
18538
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018539 <span class="entry_type_visibility"> [java_public]</span>
Zhijun He12744b22014-01-22 15:58:57 -080018540
18541
Igor Murashkinca256272014-10-02 15:27:09 -070018542 <span class="entry_type_hwlevel">[full] </span>
18543
Igor Murashkin6c936c12014-05-13 14:51:49 -070018544
18545
18546
Zhijun He12744b22014-01-22 15:58:57 -080018547 </td> <!-- entry_type -->
18548
18549 <td class="entry_description">
18550 <p>The maximum numbers of any type of input streams
18551that can be configured and used simultaneously by a camera device.<wbr/></p>
18552 </td>
18553
18554 <td class="entry_units">
18555 </td>
18556
18557 <td class="entry_range">
Zhijun Hedf726fa2014-06-25 08:35:53 -070018558 <p>0 or 1.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018559 </td>
18560
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018561 <td class="entry_hal_version">
18562 <p>3.<wbr/>2</p>
18563 </td>
18564
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018565 <td class="entry_tags">
Zhijun He51379152015-04-24 17:59:50 -070018566 <ul class="entry_tags">
18567 <li><a href="#tag_REPROC">REPROC</a></li>
18568 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018569 </td>
18570
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018571 </tr>
Zhijun He12744b22014-01-22 15:58:57 -080018572 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018573 <th class="th_details" colspan="6">Details</th>
Zhijun He12744b22014-01-22 15:58:57 -080018574 </tr>
18575 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018576 <td class="entry_details" colspan="6">
Zhijun He12744b22014-01-22 15:58:57 -080018577 <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018578<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
18579input stream,<wbr/> there must be at least one output stream configured to to receive the
18580reprocessed images.<wbr/></p>
Zhijun He41d6f042015-01-15 18:17:24 -080018581<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
18582only the input buffer will be used to produce these output stream buffers,<wbr/> and a
18583new sensor image will not be captured.<wbr/></p>
Zhijun He12744b22014-01-22 15:58:57 -080018584<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070018585stream image format will be PRIVATE,<wbr/> the associated output stream image format
Zhijun He12744b22014-01-22 15:58:57 -080018586should be JPEG.<wbr/></p>
18587 </td>
18588 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018589
Zhijun He41d6f042015-01-15 18:17:24 -080018590 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018591 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He41d6f042015-01-15 18:17:24 -080018592 </tr>
18593 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018594 <td class="entry_details" colspan="6">
Zhijun He41d6f042015-01-15 18:17:24 -080018595 <p>For the reprocessing flow and controls,<wbr/> see
18596hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
18597 </td>
18598 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080018599
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018600 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080018601 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080018602
Igor Murashkina46e02f2014-01-09 17:43:38 -080018603
18604 <tr class="entry" id="static_android.request.pipelineMaxDepth">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018605 <td class="entry_name
18606 " rowspan="5">
Igor Murashkina46e02f2014-01-09 17:43:38 -080018607 android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
18608 </td>
18609 <td class="entry_type">
18610 <span class="entry_type_name">byte</span>
18611
18612 <span class="entry_type_visibility"> [public]</span>
18613
18614
Igor Murashkinca256272014-10-02 15:27:09 -070018615 <span class="entry_type_hwlevel">[legacy] </span>
18616
Igor Murashkin6c936c12014-05-13 14:51:49 -070018617
18618
18619
Igor Murashkina46e02f2014-01-09 17:43:38 -080018620 </td> <!-- entry_type -->
18621
18622 <td class="entry_description">
18623 <p>Specifies the number of maximum pipeline stages a frame
18624has to go through from when it's exposed to when it's available
18625to the framework.<wbr/></p>
18626 </td>
18627
18628 <td class="entry_units">
18629 </td>
18630
18631 <td class="entry_range">
18632 </td>
18633
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018634 <td class="entry_hal_version">
18635 <p>3.<wbr/>2</p>
18636 </td>
18637
Igor Murashkina46e02f2014-01-09 17:43:38 -080018638 <td class="entry_tags">
18639 </td>
18640
18641 </tr>
18642 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018643 <th class="th_details" colspan="6">Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080018644 </tr>
18645 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018646 <td class="entry_details" colspan="6">
Igor Murashkina46e02f2014-01-09 17:43:38 -080018647 <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
18648one stage to readout) from the sensor.<wbr/> The ISP then usually adds
18649its own stages to do custom HW processing.<wbr/> Further stages may be
18650added by SW processing.<wbr/></p>
18651<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
18652processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
18653depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
18654the max pipeline depth.<wbr/></p>
18655<p>A pipeline depth of X stages is equivalent to a pipeline latency of
18656X frame intervals.<wbr/></p>
Zhijun He7defc682015-05-22 17:04:15 -070018657<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
18658the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080018659 </td>
18660 </tr>
18661
18662 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018663 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080018664 </tr>
18665 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018666 <td class="entry_details" colspan="6">
Zhijun He7defc682015-05-22 17:04:15 -070018667 <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
18668max batch sizes may be larger than 1.<wbr/></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080018669 </td>
18670 </tr>
18671
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018672 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkina46e02f2014-01-09 17:43:38 -080018673 <!-- end of entry -->
18674
Igor Murashkin2e291102014-01-10 14:18:30 -080018675
18676 <tr class="entry" id="static_android.request.partialResultCount">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018677 <td class="entry_name
18678 " rowspan="3">
Igor Murashkin2e291102014-01-10 14:18:30 -080018679 android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
18680 </td>
18681 <td class="entry_type">
18682 <span class="entry_type_name">int32</span>
18683
18684 <span class="entry_type_visibility"> [public]</span>
18685
18686
Igor Murashkin6c936c12014-05-13 14:51:49 -070018687
18688
18689
Igor Murashkinca256272014-10-02 15:27:09 -070018690
Igor Murashkin2e291102014-01-10 14:18:30 -080018691 </td> <!-- entry_type -->
18692
18693 <td class="entry_description">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018694 <p>Defines how many sub-components
Igor Murashkin2e291102014-01-10 14:18:30 -080018695a result will be composed of.<wbr/></p>
18696 </td>
18697
18698 <td class="entry_units">
18699 </td>
18700
18701 <td class="entry_range">
18702 <p>&gt;= 1</p>
18703 </td>
18704
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018705 <td class="entry_hal_version">
18706 <p>3.<wbr/>2</p>
18707 </td>
18708
Igor Murashkin2e291102014-01-10 14:18:30 -080018709 <td class="entry_tags">
18710 </td>
18711
18712 </tr>
18713 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018714 <th class="th_details" colspan="6">Details</th>
Igor Murashkin2e291102014-01-10 14:18:30 -080018715 </tr>
18716 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018717 <td class="entry_details" colspan="6">
Igor Murashkin2e291102014-01-10 14:18:30 -080018718 <p>In order to combat the pipeline latency,<wbr/> partial results
18719may be delivered to the application layer from the camera device as
18720soon as they are available.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018721<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
18722results are not supported,<wbr/> and only the final TotalCaptureResult will
18723be produced by the camera device.<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070018724<p>A typical use case for this might be: after requesting an
18725auto-focus (AF) lock the new AF state might be available 50%
18726of the way through the pipeline.<wbr/> The camera device could
18727then immediately dispatch this state via a partial result to
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018728the application,<wbr/> and the rest of the metadata via later
18729partial results.<wbr/></p>
Igor Murashkin2e291102014-01-10 14:18:30 -080018730 </td>
18731 </tr>
18732
18733
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018734 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin2e291102014-01-10 14:18:30 -080018735 <!-- end of entry -->
18736
Igor Murashkin57d570d2014-02-06 15:35:37 -080018737
18738 <tr class="entry" id="static_android.request.availableCapabilities">
Igor Murashkin6c936c12014-05-13 14:51:49 -070018739 <td class="entry_name
18740 " rowspan="5">
Igor Murashkin57d570d2014-02-06 15:35:37 -080018741 android.<wbr/>request.<wbr/>available<wbr/>Capabilities
18742 </td>
18743 <td class="entry_type">
18744 <span class="entry_type_name entry_type_name_enum">byte</span>
Zhijun Hec593aee2014-05-29 13:31:49 -070018745 <span class="entry_type_container">x</span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018746
Zhijun Hec593aee2014-05-29 13:31:49 -070018747 <span class="entry_type_array">
18748 n
18749 </span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018750 <span class="entry_type_visibility"> [public]</span>
18751
Igor Murashkin6c936c12014-05-13 14:51:49 -070018752
Igor Murashkinca256272014-10-02 15:27:09 -070018753 <span class="entry_type_hwlevel">[legacy] </span>
18754
Igor Murashkin6c936c12014-05-13 14:51:49 -070018755
18756
Igor Murashkin57d570d2014-02-06 15:35:37 -080018757 <ul class="entry_type_enum">
18758 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018759 <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018760 <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
18761device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
Eino-Ville Talvala3310f822014-07-09 09:34:05 -070018762supports.<wbr/></p>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070018763<p>This capability is listed by all normal devices,<wbr/> and
Eino-Ville Talvala3310f822014-07-09 09:34:05 -070018764indicates that the camera device has a feature set
18765that's comparable to the baseline requirements for the
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070018766older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
18767<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
18768capability,<wbr/> indicating that they support only depth measurement,<wbr/>
18769not standard color output.<wbr/></p></span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018770 </li>
18771 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018772 <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018773 <span class="entry_type_enum_optional">[optional]</span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018774 <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018775as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
Zhijun He5fb671c2014-05-21 17:51:05 -070018776The camera device supports basic manual control of the sensor image
18777acquisition related stages.<wbr/> This means the following controls are
18778guaranteed to be supported:</p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018779<ul>
Zhijun He5fb671c2014-05-21 17:51:05 -070018780<li>Manual frame duration control<ul>
18781<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
18782<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
Zhijun He5fb671c2014-05-21 17:51:05 -070018783</ul>
18784</li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018785<li>Manual exposure control<ul>
18786<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
18787<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
18788</ul>
18789</li>
18790<li>Manual sensitivity control<ul>
18791<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
18792<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018793</ul>
18794</li>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018795<li>Manual lens control (if the lens is adjustable)<ul>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018796<li>android.<wbr/>lens.<wbr/>*</li>
18797</ul>
18798</li>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018799<li>Manual flash control (if a flash unit is present)<ul>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018800<li>android.<wbr/>flash.<wbr/>*</li>
18801</ul>
18802</li>
18803<li>Manual black level locking<ul>
18804<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
18805</ul>
18806</li>
Yin-Chia Yehe36c5ed2015-04-02 14:31:53 -070018807<li>Auto exposure lock<ul>
18808<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
18809</ul>
18810</li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018811</ul>
18812<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
18813device will accurately report the values applied by 3A in the
Zhijun He5fb671c2014-05-21 17:51:05 -070018814result.<wbr/></p>
18815<p>A given camera device may also support additional manual sensor controls,<wbr/>
Ruben Brunk6285c4d2014-06-18 17:13:19 -070018816but this capability only covers the above list of controls.<wbr/></p>
18817<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
18818additionally return a min frame duration that is greater than
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080018819zero for each supported size-format combination.<wbr/></p>
18820<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when the underlying active
18821physical camera switches,<wbr/> exposureTime,<wbr/> sensitivity,<wbr/> and lens properties may change
18822even if AE/<wbr/>AF is locked.<wbr/> However,<wbr/> the overall auto exposure and auto focus experience
18823for users will be consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018824 </li>
18825 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018826 <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018827 <span class="entry_type_enum_optional">[optional]</span>
Zhijun He5fb671c2014-05-21 17:51:05 -070018828 <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
18829The camera device supports basic manual control of the image post-processing
18830stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018831<ul>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080018832<li>
18833<p>Manual tonemap control</p>
18834<ul>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070018835<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018836<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
18837<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
Yin-Chia Yeh3a52b8f2015-05-05 23:49:07 -070018838<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
18839<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018840</ul>
18841</li>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080018842<li>
18843<p>Manual white balance control</p>
18844<ul>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018845<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
18846<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
18847</ul>
18848</li>
Zhijun Hedf726fa2014-06-25 08:35:53 -070018849<li>Manual lens shading map control<ul>
18850<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
18851<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018852<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
18853<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
18854</ul>
18855</li>
Zhijun He450e01c2014-07-01 18:27:42 -070018856<li>Manual aberration correction control (if aberration correction is supported)<ul>
Zhijun He33776412014-08-18 10:55:33 -070018857<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
18858<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
Zhijun He450e01c2014-07-01 18:27:42 -070018859</ul>
18860</li>
Yin-Chia Yehe36c5ed2015-04-02 14:31:53 -070018861<li>Auto white balance lock<ul>
18862<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
18863</ul>
18864</li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018865</ul>
18866<p>If auto white balance is enabled,<wbr/> then the camera device
18867will accurately report the values applied by AWB in the result.<wbr/></p>
Zhijun He5fb671c2014-05-21 17:51:05 -070018868<p>A given camera device may also support additional post-processing
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080018869controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p>
18870<p>For camera devices with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> when underlying active
18871physical camera switches,<wbr/> tonemap,<wbr/> white balance,<wbr/> and shading map may change even if
18872awb is locked.<wbr/> However,<wbr/> the overall post-processing experience for users will be
18873consistent.<wbr/> Refer to LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability for details.<wbr/></p></span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018874 </li>
18875 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018876 <span class="entry_type_enum_name">RAW (v3.2)</span>
Eino-Ville Talvala3310f822014-07-09 09:34:05 -070018877 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070018878 <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
18879metadata for interpreting them.<wbr/></p>
18880<p>Devices supporting the RAW capability allow both for
18881saving DNG files,<wbr/> and for direct application processing of
18882raw sensor images.<wbr/></p>
Eino-Ville Talvala3310f822014-07-09 09:34:05 -070018883<ul>
18884<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
18885<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
18886 will match either the value in
18887 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
Eino-Ville Talvala04292692015-11-08 18:58:27 -080018888 <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>
Eino-Ville Talvala3310f822014-07-09 09:34:05 -070018889<li>All DNG-related optional metadata entries are provided
18890 by the camera device.<wbr/></li>
18891</ul></span>
18892 </li>
18893 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018894 <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018895 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070018896 <span class="entry_type_enum_hidden">[java_public]</span>
Zhijun He41d6f042015-01-15 18:17:24 -080018897 <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018898<ul>
Zhijun He41d6f042015-01-15 18:17:24 -080018899<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>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018900<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/>
18901 that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
18902 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>
18903<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080018904 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>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018905<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>
18906<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
18907 relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
18908<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
18909 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
18910 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070018911<li>For a MONOCHROME camera supporting Y8 format,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into
18912 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a>.<wbr/></li>
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070018913<li>The maximum available resolution for PRIVATE streams
Igor Murashkin57d570d2014-02-06 15:35:37 -080018914 (both input/<wbr/>output) will match the maximum available
18915 resolution of JPEG streams.<wbr/></li>
Zhijun He51379152015-04-24 17:59:50 -070018916<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
Zhijun He41d6f042015-01-15 18:17:24 -080018917<li>Only below controls are effective for reprocessing requests and
18918 will be present in capture results,<wbr/> other controls in reprocess
18919 requests will be ignored by the camera device.<wbr/><ul>
18920<li>android.<wbr/>jpeg.<wbr/>*</li>
18921<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
18922<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
18923</ul>
18924</li>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070018925<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
18926 <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>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070018927</ul></span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080018928 </li>
Ruben Brunka43690a2014-11-11 11:47:03 -080018929 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018930 <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
Ruben Brunka43690a2014-11-11 11:47:03 -080018931 <span class="entry_type_enum_optional">[optional]</span>
18932 <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
18933the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows
18934reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
18935<p>The values reported for the following controls are guaranteed to be available
18936in the CaptureResult,<wbr/> including when 3A is enabled:</p>
18937<ul>
18938<li>Exposure control<ul>
18939<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
18940</ul>
18941</li>
18942<li>Sensitivity control<ul>
18943<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
18944</ul>
18945</li>
18946<li>Lens controls (if the lens is adjustable)<ul>
18947<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
18948<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
18949</ul>
18950</li>
18951</ul>
18952<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
18953always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
18954 </li>
Eino-Ville Talvala0f0d7952014-10-02 18:27:34 -070018955 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018956 <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
Eino-Ville Talvala0f0d7952014-10-02 18:27:34 -070018957 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvalaa92c2b72015-06-17 11:32:55 -070018958 <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
Shuzhen Wang77acdde2019-04-09 22:11:40 -070018959second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are
18960set to FAST.<wbr/> Additionally,<wbr/> all image resolutions less than 24 megapixels can be
18961captured at &gt;= 10 frames per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8
18962megapixels,<wbr/> or the maximum resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
Eino-Ville Talvala0f0d7952014-10-02 18:27:34 -070018963 </li>
Zhijun He41d6f042015-01-15 18:17:24 -080018964 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080018965 <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
Zhijun He41d6f042015-01-15 18:17:24 -080018966 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070018967 <span class="entry_type_enum_hidden">[java_public]</span>
Chien-Yu Chen9e48beb2015-03-18 18:33:17 -070018968 <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070018969PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
Zhijun He41d6f042015-01-15 18:17:24 -080018970following:</p>
18971<ul>
18972<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>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018973<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
18974 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>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018975<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
18976 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>
18977<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>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018978<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
18979 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018980<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
18981 <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>
18982<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
18983 maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070018984<li>For a MONOCHROME camera with Y8 format support,<wbr/> all the requirements mentioned
18985 above for YUV_<wbr/>420_<wbr/>888 apply for Y8 format as well.<wbr/></li>
Zhijun He51379152015-04-24 17:59:50 -070018986<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070018987<li>Only the below controls are effective for reprocessing requests and will be present
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080018988 in capture results.<wbr/> The reprocess requests are from the original capture results
18989 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
18990 reprocess requests will be ignored by the camera device.<wbr/><ul>
Zhijun He41d6f042015-01-15 18:17:24 -080018991<li>android.<wbr/>jpeg.<wbr/>*</li>
18992<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
18993<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
18994<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
18995</ul>
18996</li>
Eino-Ville Talvala073e4582015-07-07 10:40:59 -070018997<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
18998 <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>
Zhijun He41d6f042015-01-15 18:17:24 -080018999</ul></span>
19000 </li>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070019001 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080019002 <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070019003 <span class="entry_type_enum_optional">[optional]</span>
19004 <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
19005<p>This capability requires the camera device to support the following:</p>
19006<ul>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019007<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
19008 an output format.<wbr/></li>
19009<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
19010 optionally supported as an output format.<wbr/></li>
19011<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
19012 list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
19013 and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070019014<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
19015<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
Eino-Ville Talvalac572dfc2015-08-19 16:09:46 -070019016<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070019017<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070019018</ul>
19019</li>
19020<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>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080019021<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>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070019022<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
Shuzhen Wangd594fba2018-09-27 15:50:01 -070019023 normal YUV_<wbr/>420_<wbr/>888,<wbr/> Y8,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the
19024 DEPTH16 format.<wbr/></li>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070019025</ul>
19026<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
19027so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019028should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070019029On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
19030using a repeating burst is recommended,<wbr/> where a depth-output target is only included
19031once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070019032rate,<wbr/> including depth stall time.<wbr/></p></span>
19033 </li>
Zhijun He7defc682015-05-22 17:04:15 -070019034 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080019035 <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
Zhijun He7defc682015-05-22 17:04:15 -070019036 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070019037 <span class="entry_type_enum_hidden">[java_public]</span>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019038 <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
19039case.<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
19040only 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>
19041<p>A camera device can still support high speed video streaming by advertising the high
19042speed 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
19043normal capture request per frame control and synchronization requirements will apply
19044to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
19045describes the capability of a specialized operating mode with many limitations (see
19046below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
19047<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/>
19048To get desired output frame rates,<wbr/> the application is only allowed to select video
19049size 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
19050fps 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>
Zhijun He7defc682015-05-22 17:04:15 -070019051<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
Zhijun He1a71d0d2015-06-16 19:44:18 -070019052ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
Zhijun He7defc682015-05-22 17:04:15 -070019053controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
19054and post-processing parameters is possible.<wbr/> All other controls operate the
19055same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
19056android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
19057<ul>
19058<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
19059<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
19060<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
19061<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
19062<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
19063<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
19064<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
19065<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
19066<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
19067<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
Shuzhen Wangb6149792019-11-07 15:59:22 -080019068<li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li>
Zhijun He7defc682015-05-22 17:04:15 -070019069</ul>
19070<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
19071<ul>
19072<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
19073work since aeMode is ON)</li>
19074<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
19075<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
19076<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
19077</ul>
19078<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
19079be lower than what camera can output,<wbr/> depending on the destination Surfaces for
19080the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
19081the application need check if the video encoder is capable of supporting the
19082high frame rate for a given video size,<wbr/> or it will end up with lower recording
19083frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
19084rate will be bounded by the screen refresh rate.<wbr/></p>
19085<p>The camera device will only support up to 2 high speed simultaneous output surfaces
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019086(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
19087if all of below conditions are true:</p>
Zhijun He7defc682015-05-22 17:04:15 -070019088<ul>
19089<li>The application creates a camera capture session with no more than 2 surfaces via
19090<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019091targeted 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
19092surface(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>
Zhijun He7defc682015-05-22 17:04:15 -070019093<li>The stream sizes are selected from the sizes reported by
19094<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019095<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>
Zhijun He7defc682015-05-22 17:04:15 -070019096</ul>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019097<p>When above conditions are NOT satisfied,<wbr/>
Zhijun He7defc682015-05-22 17:04:15 -070019098<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
Eino-Ville Talvalaf55c1a82015-06-30 13:32:09 -070019099will fail.<wbr/></p>
Zhijun He7defc682015-05-22 17:04:15 -070019100<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
19101reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
19102the application avoids unnecessary maximum target FPS changes as much as possible
19103during high speed streaming.<wbr/></p></span>
19104 </li>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080019105 <li>
19106 <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
19107 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvalabaf80472018-02-05 16:26:26 -080019108 <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
19109<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>
19110<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
19111results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080019112 </li>
Shuzhen Wang0144f582017-11-30 12:03:37 -080019113 <li>
19114 <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
19115 <span class="entry_type_enum_optional">[optional]</span>
Shuzhen Wang648774d2019-03-07 08:38:51 -080019116 <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras.<wbr/></p>
19117<p>In API level 28,<wbr/> the physical cameras must also be exposed to the application via
19118<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/></p>
Shuzhen Wang0a8b07e2020-01-20 10:27:02 -080019119<p>Starting from API level 29:</p>
19120<ul>
19121<li>Some or all physical cameras may not be independently exposed to the application,<wbr/>
19122in which case the physical camera IDs will not be available in
19123<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>.<wbr/> But the
Shuzhen Wang648774d2019-03-07 08:38:51 -080019124application can still query the physical cameras' characteristics by calling
Shuzhen Wang0a8b07e2020-01-20 10:27:02 -080019125<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/></li>
19126<li>If a physical camera is hidden from camera ID list,<wbr/> the mandatory stream
19127combinations for that physical camera must be supported through the logical camera
19128using physical streams.<wbr/> One exception is that in API level 30,<wbr/> a physical camera
19129may become unavailable via
19130<a href="https://developer.android.com/reference/CameraManager/AvailabilityCallback.html#onPhysicalCameraUnavailable">AvailabilityCallback#onPhysicalCameraUnavailable</a>
19131callback.<wbr/></li>
19132</ul>
Shuzhen Wang648774d2019-03-07 08:38:51 -080019133<p>Combinations of logical and physical streams,<wbr/> or physical streams from different
19134physical cameras are not guaranteed.<wbr/> However,<wbr/> if the camera device supports
19135<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>,<wbr/>
19136application must be able to query whether a stream combination involving physical
19137streams is supported by calling
19138<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>.<wbr/></p>
Shuzhen Wang1a5092e2018-05-23 09:07:11 -070019139<p>Camera application shouldn't assume that there are at most 1 rear camera and 1 front
19140camera in the system.<wbr/> For an application that switches between front and back cameras,<wbr/>
19141the recommendation is to switch between the first rear camera and the first front
19142camera in the list of supported camera devices.<wbr/></p>
Shuzhen Wang0144f582017-11-30 12:03:37 -080019143<p>This capability requires the camera device to support the following:</p>
19144<ul>
Shuzhen Wang7c30d452018-08-15 13:56:29 -070019145<li>The IDs of underlying physical cameras are returned via
19146 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getPhysicalCameraIds">CameraCharacteristics#getPhysicalCameraIds</a>.<wbr/></li>
19147<li>This camera device must list static metadata
19148 <a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a> in
19149 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></li>
Shuzhen Wang0144f582017-11-30 12:03:37 -080019150<li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
19151 so that the application can correlate pixels from the physical streams:<ul>
19152<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
19153<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
19154<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
19155<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070019156<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
Shuzhen Wang0144f582017-11-30 12:03:37 -080019157</ul>
19158</li>
Shuzhen Wangd24b9702018-01-25 13:23:03 -080019159<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
19160 the same.<wbr/></li>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080019161<li>The logical camera must be LIMITED or higher device.<wbr/></li>
Shuzhen Wang0144f582017-11-30 12:03:37 -080019162</ul>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080019163<p>A logical camera device's dynamic metadata may contain
19164<a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id</a> to notify the application of the current
19165active physical camera Id.<wbr/> An active physical camera is the physical camera from which
19166the logical camera's main image data outputs (YUV or RAW) and metadata come from.<wbr/>
19167In addition,<wbr/> this serves as an indication which physical camera is used to output to
19168a RAW stream,<wbr/> or in case only physical cameras support RAW,<wbr/> which physical RAW stream
19169the application should request.<wbr/></p>
19170<p>Logical camera's static metadata tags below describe the default active physical
19171camera.<wbr/> An active physical camera is default if it's used when application directly
19172uses requests built from a template.<wbr/> All templates will default to the same active
19173physical camera.<wbr/></p>
19174<ul>
19175<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
19176<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
19177<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
19178<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
19179<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
19180<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
19181<li><a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a></li>
19182<li><a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></li>
19183<li><a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a></li>
19184<li><a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a></li>
19185<li><a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a></li>
19186<li><a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a></li>
19187<li><a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a></li>
19188<li><a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a></li>
19189<li><a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a></li>
19190<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
19191<li><a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a></li>
19192<li><a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a></li>
19193<li><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></li>
19194<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
19195<li><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a></li>
19196<li><a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a></li>
19197<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
19198<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
19199<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
19200<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
19201<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a></li>
19202</ul>
Shuzhen Wangf8139f92020-06-05 13:34:23 -070019203<p>The field of view of non-RAW physical streams must not be smaller than that of the
19204non-RAW logical streams,<wbr/> or the maximum field-of-view of the physical camera,<wbr/>
19205whichever is smaller.<wbr/> The application should check the physical capture result
19206metadata for how the physical streams are cropped or zoomed.<wbr/> More specifically,<wbr/> given
19207the physical camera result metadata,<wbr/> the effective horizontal field-of-view of the
19208physical camera is:</p>
19209<pre><code>fov = 2 * atan2(cropW * sensorW /<wbr/> (2 * zoomRatio * activeArrayW),<wbr/> focalLength)
19210</code></pre>
19211<p>where the equation parameters are the physical camera's crop region width,<wbr/> physical
19212sensor width,<wbr/> zoom ratio,<wbr/> active array width,<wbr/> and focal length respectively.<wbr/> Typically
19213the physical stream of active physical camera has the same field-of-view as the
19214logical streams.<wbr/> However,<wbr/> the same may not be true for physical streams from
19215non-active physical cameras.<wbr/> For example,<wbr/> if the logical camera has a wide-ultrawide
19216configuration where the wide lens is the default,<wbr/> when the crop region is set to the
19217logical camera's active array size,<wbr/> (and the zoom ratio set to 1.<wbr/>0 starting from
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019218Android 11),<wbr/> a physical stream for the ultrawide camera may prefer outputting images
Shuzhen Wangf8139f92020-06-05 13:34:23 -070019219with larger field-of-view than that of the wide camera for better stereo matching
19220margin or more robust motion tracking.<wbr/> At the same time,<wbr/> the physical non-RAW streams'
19221field of view must not be smaller than the requested crop region and zoom ratio,<wbr/> as
19222long as it's within the physical lens' capability.<wbr/> For example,<wbr/> for a logical camera
19223with wide-tele lens configuration where the wide lens is the default,<wbr/> if the logical
19224camera's crop region is set to maximum size,<wbr/> and zoom ratio set to 1.<wbr/>0,<wbr/> the physical
19225stream for the tele lens will be configured to its maximum size crop region (no zoom).<wbr/></p>
19226<p><em>Deprecated:</em> Prior to Android 11,<wbr/> the field of view of all non-RAW physical streams
19227cannot be larger than that of non-RAW logical streams.<wbr/> If the logical camera has a
19228wide-ultrawide lens configuration where the wide lens is the default,<wbr/> when the logical
19229camera's crop region is set to maximum size,<wbr/> the FOV of the physical streams for the
19230ultrawide lens will be the same as the logical stream,<wbr/> by making the crop region
19231smaller than its active array size to compensate for the smaller focal length.<wbr/></p>
Shuzhen Wang08a99742021-06-25 15:02:36 -070019232<p>There are two ways for the application to capture RAW images from a logical camera
19233with RAW capability:</p>
19234<ul>
19235<li>Because the underlying physical cameras may have different RAW capabilities (such
19236as resolution or CFA pattern),<wbr/> to maintain backward compatibility,<wbr/> when a RAW stream
19237is configured,<wbr/> the camera device makes sure the default active physical camera remains
19238active and does not switch to other physical cameras.<wbr/> (One exception is that,<wbr/> if the
19239logical camera consists of identical image sensors and advertises multiple focalLength
19240due to different lenses,<wbr/> the camera device may generate RAW images from different
19241physical cameras based on the focalLength being set by the application.<wbr/>) This
19242backward-compatible approach usually results in loss of optical zoom,<wbr/> to telephoto
19243lens or to ultrawide lens.<wbr/></li>
19244<li>Alternatively,<wbr/> to take advantage of the full zoomRatio range of the logical camera,<wbr/>
19245the application should use <a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a>
19246to capture RAW images from the currently active physical camera.<wbr/> Because different
19247physical camera may have different RAW characteristics,<wbr/> the application needs to use
19248the characteristics and result metadata of the active physical camera for the
19249relevant RAW metadata.<wbr/></li>
19250</ul>
Shuzhen Wangfb7587f2019-06-26 13:45:12 -070019251<p>The capture request and result metadata tags required for backward compatible camera
Shuzhen Wang08a99742021-06-25 15:02:36 -070019252functionalities will be solely based on the logical camera capability.<wbr/> On the other
Shuzhen Wangfb7587f2019-06-26 13:45:12 -070019253hand,<wbr/> the use of manual capture controls (sensor or post-processing) with a
19254logical camera may result in unexpected behavior when the HAL decides to switch
19255between physical cameras with different characteristics under the hood.<wbr/> For example,<wbr/>
19256when the application manually sets exposure time and sensitivity while zooming in,<wbr/>
19257the brightness of the camera images may suddenly change because HAL switches from one
19258physical camera to the other.<wbr/></p></span>
Shuzhen Wang0144f582017-11-30 12:03:37 -080019259 </li>
Shuzhen Wangca6957a2018-03-20 19:04:06 -070019260 <li>
19261 <span class="entry_type_enum_name">MONOCHROME (v3.3)</span>
19262 <span class="entry_type_enum_optional">[optional]</span>
19263 <span class="entry_type_enum_notes"><p>The camera device is a monochrome camera that doesn't contain a color filter array,<wbr/>
Shuzhen Wang75273722018-10-15 12:00:13 -070019264and for YUV_<wbr/>420_<wbr/>888 stream,<wbr/> the pixel values on U and V planes are all 128.<wbr/></p>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070019265<p>A MONOCHROME camera must support the guaranteed stream combinations required for
19266its device level and capabilities.<wbr/> Additionally,<wbr/> if the monochrome camera device
19267supports Y8 format,<wbr/> all mandatory stream combination requirements related to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a> apply
Shuzhen Wang75273722018-10-15 12:00:13 -070019268to <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> as well.<wbr/> There are no
19269mandatory stream combination requirements with regard to
19270<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">Y8</a> for Bayer camera devices.<wbr/></p>
19271<p>Starting from Android Q,<wbr/> the SENSOR_<wbr/>INFO_<wbr/>COLOR_<wbr/>FILTER_<wbr/>ARRANGEMENT of a MONOCHROME
19272camera will be either MONO or NIR.<wbr/></p></span>
Shuzhen Wangca6957a2018-03-20 19:04:06 -070019273 </li>
Jayant Chowdhary12ee7bf2019-01-24 17:47:05 -080019274 <li>
19275 <span class="entry_type_enum_name">SECURE_IMAGE_DATA (v3.4)</span>
19276 <span class="entry_type_enum_optional">[optional]</span>
19277 <span class="entry_type_enum_notes"><p>The camera device is capable of writing image data into a region of memory
19278inaccessible to Android userspace or the Android kernel,<wbr/> and only accessible to
19279trusted execution environments (TEE).<wbr/></p></span>
19280 </li>
Jayant Chowdhary9d6bd012019-07-18 17:43:21 -070019281 <li>
19282 <span class="entry_type_enum_name">SYSTEM_CAMERA (v3.5)</span>
19283 <span class="entry_type_enum_optional">[optional]</span>
19284 <span class="entry_type_enum_notes"><p>The camera device is only accessible by Android's system components and privileged
19285applications.<wbr/> Processes need to have the android.<wbr/>permission.<wbr/>SYSTEM_<wbr/>CAMERA in
19286addition to android.<wbr/>permission.<wbr/>CAMERA in order to connect to this camera device.<wbr/></p></span>
19287 </li>
Yin-Chia Yehadae7132019-10-07 15:16:15 -070019288 <li>
19289 <span class="entry_type_enum_name">OFFLINE_PROCESSING (v3.5)</span>
19290 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070019291 <span class="entry_type_enum_hidden">[java_public]</span>
Yin-Chia Yehadae7132019-10-07 15:16:15 -070019292 <span class="entry_type_enum_notes"><p>The camera device supports the OFFLINE_<wbr/>PROCESSING use case.<wbr/></p>
19293<p>With OFFLINE_<wbr/>PROCESSING capability,<wbr/> the application can switch an ongoing
19294capture session to offline mode by calling the
19295CameraCaptureSession#switchToOffline method and specify streams to be kept in offline
19296mode.<wbr/> The camera will then stop currently active repeating requests,<wbr/> prepare for
19297some requests to go into offline mode,<wbr/> and return an offline session object.<wbr/> After
19298the switchToOffline call returns,<wbr/> the original capture session is in closed state as
19299if the CameraCaptureSession#close method has been called.<wbr/>
19300In the offline mode,<wbr/> all inflight requests will continue to be processed in the
19301background,<wbr/> and the application can immediately close the camera or create a new
19302capture session without losing those requests' output images and capture results.<wbr/></p>
19303<p>While the camera device is processing offline requests,<wbr/> it
19304might not be able to support all stream configurations it can support
19305without offline requests.<wbr/> When that happens,<wbr/> the createCaptureSession
19306method call will fail.<wbr/> The following stream configurations are guaranteed to work
19307without hitting the resource busy exception:</p>
19308<ul>
19309<li>One ongoing offline session: target one output surface of YUV or
19310JPEG format,<wbr/> any resolution.<wbr/></li>
19311<li>The active camera capture session:<ol>
19312<li>One preview surface (SurfaceView or SurfaceTexture) up to 1920 width</li>
19313<li>One YUV ImageReader surface up to 1920 width</li>
19314<li>One Jpeg ImageReader,<wbr/> any resolution: the camera device is
19315 allowed to slow down JPEG output speed by 50% if there is any ongoing offline
19316 session.<wbr/></li>
Yin-Chia Yehfc30a532020-03-17 09:38:54 -070019317<li>If the device supports PRIVATE_<wbr/>REPROCESSING,<wbr/> one pair of ImageWriter/<wbr/>ImageReader
19318 surfaces of private format,<wbr/> with the same resolution that is larger or equal to
19319 the JPEG ImageReader resolution above.<wbr/></li>
Yin-Chia Yehadae7132019-10-07 15:16:15 -070019320</ol>
19321</li>
19322<li>Alternatively,<wbr/> the active camera session above can be replaced by an legacy
19323<a href="https://developer.android.com/reference/android/hardware/Camera.html">Camera</a> with the following parameter settings:<ol>
19324<li>Preview size up to 1920 width</li>
19325<li>Preview callback size up to 1920 width</li>
19326<li>Video size up to 1920 width</li>
19327<li>Picture size,<wbr/> any resolution: the camera device is
19328 allowed to slow down JPEG output speed by 50% if there is any ongoing offline
19329 session.<wbr/></li>
19330</ol>
19331</li>
19332</ul></span>
19333 </li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080019334 <li>
19335 <span class="entry_type_enum_name">ULTRA_HIGH_RESOLUTION_SENSOR (v3.6)</span>
19336 <span class="entry_type_enum_optional">[optional]</span>
19337 <span class="entry_type_enum_notes"><p>This camera device is capable of producing ultra high resolution images in
19338addition to the image sizes described in the
19339<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/>
19340It can operate in 'default' mode and 'max resolution' mode.<wbr/> It generally does this
19341by binning pixels in 'default' mode and not binning them in 'max resolution' mode.<wbr/>
19342<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code> describes the streams supported in 'default'
19343mode.<wbr/>
19344The stream configurations supported in 'max resolution' mode are described by
Jayant Chowdharye66a1c22021-08-09 23:40:40 +000019345<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/>
19346The maximum resolution mode pixel array size of a camera device
19347(<code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>) with this capability,<wbr/>
19348will be at least 24 megapixels.<wbr/></p></span>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080019349 </li>
19350 <li>
19351 <span class="entry_type_enum_name">REMOSAIC_REPROCESSING (v3.6)</span>
19352 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070019353 <span class="entry_type_enum_hidden">[java_public]</span>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080019354 <span class="entry_type_enum_notes"><p>The device supports reprocessing from the <code>RAW_<wbr/>SENSOR</code> format with a bayer pattern
19355given by <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a> (m x n group of pixels with the same
19356color filter) to a remosaiced regular bayer pattern.<wbr/></p>
19357<p>This capability will only be present for devices with
19358<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
19359capability.<wbr/> When
19360<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
19361devices do not advertise this capability,<wbr/>
19362<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> images will already have a
19363regular bayer pattern.<wbr/></p>
19364<p>If a <code>RAW_<wbr/>SENSOR</code> stream is requested along with another non-RAW stream in a
19365<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a> (if multiple streams are supported
19366when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
19367<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>),<wbr/>
19368the <code>RAW_<wbr/>SENSOR</code> stream will have a regular bayer pattern.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019369<p>This capability requires the camera device to support the following :</p>
19370<ul>
19371<li>The <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a> mentioned below
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080019372 refers to the one,<wbr/> described by
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019373 <code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/></li>
19374<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>
19375<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> is supported as an output/<wbr/>input
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080019376 format,<wbr/> that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> is included in the
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019377 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>
19378<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
19379 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>
19380<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>RAW_<wbr/>SENSOR)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>RAW_<wbr/>SENSOR)</a></li>
19381<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> does not cause a frame rate
19382 drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
19383<li>No CaptureRequest controls will be applicable when a request has an input target
19384 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a> format.<wbr/></li>
19385</ul></span>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080019386 </li>
Emilian Peev276c7222021-11-12 18:07:39 -080019387 <li>
19388 <span class="entry_type_enum_name">DYNAMIC_RANGE_TEN_BIT (v3.8)</span>
19389 <span class="entry_type_enum_optional">[optional]</span>
19390 <span class="entry_type_enum_hidden">[java_public]</span>
19391 <span class="entry_type_enum_notes"><p>The device supports one or more 10-bit camera outputs according to the dynamic range
19392profiles specified in
19393<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getSupportedProfiles">DynamicRangeProfiles#getSupportedProfiles</a>.<wbr/>
19394They can be configured as part of the capture session initialization via
19395<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setDynamicRangeProfile">OutputConfiguration#setDynamicRangeProfile</a>.<wbr/>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019396Cameras that enable this capability must also support the following:</p>
19397<ul>
19398<li>Profile <a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#HLG10">DynamicRangeProfiles#HLG10</a></li>
19399<li>All mandatory stream combinations for this specific capability as per
19400 documentation <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a></li>
19401<li>In case the device is not able to capture some combination of supported
Emilian Peev276c7222021-11-12 18:07:39 -080019402 standard 8-bit and/<wbr/>or 10-bit dynamic range profiles within the same capture request,<wbr/>
19403 then those constraints must be listed in
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019404 <a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getProfileCaptureRequestConstraints">DynamicRangeProfiles#getProfileCaptureRequestConstraints</a></li>
19405<li>Recommended dynamic range profile listed in
19406 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_RECOMMENDED_TEN_BIT_DYNAMIC_RANGE_PROFILE">Camera<wbr/>Characteristics#REQUEST_<wbr/>RECOMMENDED_<wbr/>TEN_<wbr/>BIT_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILE</a>.<wbr/></li>
19407</ul></span>
Emilian Peev276c7222021-11-12 18:07:39 -080019408 </li>
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080019409 <li>
19410 <span class="entry_type_enum_name">STREAM_USE_CASE (v3.8)</span>
19411 <span class="entry_type_enum_optional">[optional]</span>
19412 <span class="entry_type_enum_notes"><p>The camera device supports selecting a per-stream use case via
19413<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setStreamUseCase">OutputConfiguration#setStreamUseCase</a>
19414so that the device can optimize camera pipeline parameters such as tuning,<wbr/> sensor
19415mode,<wbr/> or ISP settings for a specific user scenario.<wbr/>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019416Some sample usages of this capability are:</p>
19417<ul>
19418<li>Distinguish high quality YUV captures from a regular YUV stream where
19419 the image quality may not be as good as the JPEG stream,<wbr/> or</li>
19420<li>Use one stream to serve multiple purposes: viewfinder,<wbr/> video recording and
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080019421 still capture.<wbr/> This is common with applications that wish to apply edits equally
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019422 to preview,<wbr/> saved images,<wbr/> and saved videos.<wbr/></li>
19423</ul>
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080019424<p>This capability requires the camera device to support the following
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019425stream use cases:</p>
19426<ul>
19427<li>DEFAULT for backward compatibility where the application doesn't set
19428 a stream use case</li>
19429<li>PREVIEW for live viewfinder and in-app image analysis</li>
19430<li>STILL_<wbr/>CAPTURE for still photo capture</li>
19431<li>VIDEO_<wbr/>RECORD for recording video clips</li>
19432<li>PREVIEW_<wbr/>VIDEO_<wbr/>STILL for one single stream used for viewfinder,<wbr/> video
19433 recording,<wbr/> and still capture.<wbr/></li>
19434<li>VIDEO_<wbr/>CALL for long running video calls</li>
19435</ul>
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080019436<p><a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#SCALER_AVAILABLE_STREAM_USE_CASES">Camera<wbr/>Characteristics#SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>USE_<wbr/>CASES</a>
19437lists all of the supported stream use cases.<wbr/></p>
19438<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for the
19439mandatory stream combinations involving stream use cases,<wbr/> which can also be queried
19440via <a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">MandatoryStreamCombination</a>.<wbr/></p></span>
19441 </li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019442 </ul>
19443
19444 </td> <!-- entry_type -->
19445
19446 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070019447 <p>List of capabilities that this camera device
Igor Murashkin57d570d2014-02-06 15:35:37 -080019448advertises as fully supporting.<wbr/></p>
19449 </td>
19450
19451 <td class="entry_units">
19452 </td>
19453
19454 <td class="entry_range">
19455 </td>
19456
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019457 <td class="entry_hal_version">
19458 <p>3.<wbr/>2</p>
19459 </td>
19460
Igor Murashkin57d570d2014-02-06 15:35:37 -080019461 <td class="entry_tags">
19462 </td>
19463
19464 </tr>
19465 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019466 <th class="th_details" colspan="6">Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019467 </tr>
19468 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019469 <td class="entry_details" colspan="6">
Igor Murashkin57d570d2014-02-06 15:35:37 -080019470 <p>A capability is a contract that the camera device makes in order
19471to be able to satisfy one or more use cases.<wbr/></p>
19472<p>Listing a capability guarantees that the whole set of features
19473required to support a common use will all be available.<wbr/></p>
19474<p>Using a subset of the functionality provided by an unsupported
19475capability may be possible on a specific camera device implementation;
19476to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
19477<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
19478<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019479<p>The following capabilities are guaranteed to be available on
19480<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
19481<ul>
19482<li>MANUAL_<wbr/>SENSOR</li>
Zhijun He5a1276a2014-06-02 16:46:03 -070019483<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019484</ul>
19485<p>Other capabilities may be available on either FULL or LIMITED
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070019486devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019487 </td>
19488 </tr>
19489
19490 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019491 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019492 </tr>
19493 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019494 <td class="entry_details" colspan="6">
Igor Murashkin57d570d2014-02-06 15:35:37 -080019495 <p>Additional constraint details per-capability will be available
19496in the Compatibility Test Suite.<wbr/></p>
Eino-Ville Talvala3310f822014-07-09 09:34:05 -070019497<p>Minimum baseline requirements required for the
19498BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019499Instead refer to "BC" tags and the camera CTS tests in the
Eino-Ville Talvala3310f822014-07-09 09:34:05 -070019500android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019501<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
19502<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
19503request and the result in order to be considered to be
19504capability-compliant.<wbr/></p>
19505<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
19506then exposure time must be configurable via the request <em>and</em>
19507the actual exposure applied must be available via
19508the result.<wbr/></p>
Ruben Brunk6285c4d2014-06-18 17:13:19 -070019509<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
19510<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070019511<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
Zhijun He41d6f042015-01-15 18:17:24 -080019512hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
Yin-Chia Yehfa2a8672015-04-24 16:52:26 -070019513<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
19514CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070019515<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
Yin-Chia Yehfa2a8672015-04-24 16:52:26 -070019516YUV_<wbr/>REPROCESSING capability must support the
19517CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070019518<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
19519<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
19520<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
19521<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
19522addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
19523enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
19524if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
19525DEPTH).<wbr/></p>
Shuzhen Wang0144f582017-11-30 12:03:37 -080019526<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
19527same way as a physical camera device based on its hardware level and capabilities.<wbr/>
19528It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
Shuzhen Wang1a5092e2018-05-23 09:07:11 -070019529<ul>
19530<li>
Shuzhen Wangfb440de2019-03-27 15:27:24 -070019531<p>In camera1 API,<wbr/> to maintain application compatibility,<wbr/> for each camera facing,<wbr/> there
19532may be one or more {logical_<wbr/>camera_<wbr/>id,<wbr/> physical_<wbr/>camera_<wbr/>1_<wbr/>id,<wbr/> physical_<wbr/>camera_<wbr/>2_<wbr/>id,<wbr/> ...<wbr/>}
19533combinations,<wbr/> where logical_<wbr/>camera_<wbr/>id is composed of physical_<wbr/>camera_<wbr/>N_<wbr/>id,<wbr/> camera
19534framework will only advertise one camera id
19535(within the combinations for the particular facing) that is frontmost in the HAL
19536published camera id list.<wbr/>
19537For example,<wbr/> if HAL advertises 6 back facing camera IDs (ID0 to ID5),<wbr/> among which ID4
19538and ID5 are logical cameras backed by ID0+ID1 and ID2+ID3 respectively.<wbr/> In this case,<wbr/>
19539only ID0 will be available for camera1 API to use.<wbr/></p>
Shuzhen Wang1a5092e2018-05-23 09:07:11 -070019540</li>
19541<li>
19542<p>Camera HAL is strongly recommended to advertise camera devices with best feature,<wbr/>
19543power,<wbr/> performance,<wbr/> and latency tradeoffs at the front of the camera id list.<wbr/></p>
19544</li>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080019545<li>
Shuzhen Wangb6149792019-11-07 15:59:22 -080019546<p>Camera HAL may switch between physical cameras depending on focalLength,<wbr/> cropRegion,<wbr/> or
19547zoomRatio.<wbr/> If physical cameras have different sizes,<wbr/> HAL must maintain a single logical
19548camera active<wbr/>Array<wbr/>Size/<wbr/>pixel<wbr/>Array<wbr/>Size/<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size,<wbr/> and must do proper
19549mapping between logical camera and underlying physical cameras for all related metadata
19550tags,<wbr/> such as crop region,<wbr/> zoomRatio,<wbr/> 3A regions,<wbr/> and intrinsicCalibration.<wbr/></p>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080019551</li>
Shuzhen Wang648774d2019-03-07 08:38:51 -080019552<li>
19553<p>Starting from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> camera HAL must support
19554isStreamCombinationSupported for application to query whether a particular logical and
19555physical streams combination are supported.<wbr/></p>
19556</li>
Shuzhen Wang1a5092e2018-05-23 09:07:11 -070019557</ul>
Shuzhen Wang75273722018-10-15 12:00:13 -070019558<p>A MONOCHROME camera device must also advertise BACKWARD_<wbr/>COMPATIBLE capability,<wbr/> and must
19559not advertise MANUAL_<wbr/>POST_<wbr/>PROCESSING capability.<wbr/></p>
Shuzhen Wangca6957a2018-03-20 19:04:06 -070019560<ul>
19561<li>
19562<p>To maintain backward compatibility,<wbr/> the camera device must support all
19563BACKWARD_<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
19564AUTO,<wbr/> and <a href="#dynamic_android.control.awbState">android.<wbr/>control.<wbr/>awb<wbr/>State</a> are either CONVERGED or LOCKED depending on
19565<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>.<wbr/></p>
19566</li>
19567<li>
Shuzhen Wangca6957a2018-03-20 19:04:06 -070019568<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
Shuzhen Wang75273722018-10-15 12:00:13 -070019569<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> must not be in available request and result keys.<wbr/>
19570As a result,<wbr/> the camera device cannot be a FULL device.<wbr/> However,<wbr/> the HAL can
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019571still advertise other individual capabilities.<wbr/></p>
Shuzhen Wangca6957a2018-03-20 19:04:06 -070019572</li>
19573<li>
19574<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/>
19575CurveGreen and curveBlue are no-ops.<wbr/></p>
19576</li>
19577</ul>
Shuzhen Wang75273722018-10-15 12:00:13 -070019578<p>In Android API level 28,<wbr/> a MONOCHROME camera device must not have RAW capability.<wbr/> From
19579API level 29,<wbr/> a camera is allowed to have both MONOCHROME and RAW capabilities.<wbr/></p>
Yin-Chia Yehadae7132019-10-07 15:16:15 -070019580<p>To support the legacy API to ICameraDevice 3.<wbr/>x shim layer,<wbr/> devices advertising
19581OFFLINE_<wbr/>PROCESSING capability must also support configuring an input stream of the same
19582size as the picture size if:</p>
19583<ul>
19584<li>The device supports PRIVATE_<wbr/>REPROCESSING capability</li>
19585<li>The device's maximal JPEG resolution can reach 30 FPS min frame duration</li>
19586<li>The device does not support HAL based ZSL (<a href="#controls_android.control.enableZsl">android.<wbr/>control.<wbr/>enable<wbr/>Zsl</a>)</li>
19587</ul>
Jayant Chowdhary2e943b52020-03-20 14:01:03 -070019588<p>For devices which support SYSTEM_<wbr/>CAMERA and LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capabilities:</p>
19589<p>Hidden physical camera ids[1] must not be be shared[2] between public camera devices
19590and camera devices advertising SYSTEM_<wbr/>CAMERA capability.<wbr/></p>
19591<p>[1] - Camera device ids which are advertised in the
19592 ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS list,<wbr/> and not available through
19593 ICamera<wbr/>Provider.<wbr/>get<wbr/>Camera<wbr/>Id<wbr/>List().<wbr/></p>
19594<p>[2] - The ANDROID_<wbr/>LOGICAL_<wbr/>MULTI_<wbr/>CAMERA_<wbr/>PHYSICAL_<wbr/>IDS lists,<wbr/> must not have common
19595 camera ids.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019596 </td>
19597 </tr>
19598
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019599 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019600 <!-- end of entry -->
19601
19602
19603 <tr class="entry" id="static_android.request.availableRequestKeys">
Igor Murashkin6c936c12014-05-13 14:51:49 -070019604 <td class="entry_name
19605 " rowspan="5">
Igor Murashkin57d570d2014-02-06 15:35:37 -080019606 android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
19607 </td>
19608 <td class="entry_type">
19609 <span class="entry_type_name">int32</span>
19610 <span class="entry_type_container">x</span>
19611
19612 <span class="entry_type_array">
19613 n
19614 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070019615 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019616
19617
Igor Murashkinca256272014-10-02 15:27:09 -070019618 <span class="entry_type_hwlevel">[legacy] </span>
19619
Igor Murashkin6c936c12014-05-13 14:51:49 -070019620
19621
19622
Igor Murashkin57d570d2014-02-06 15:35:37 -080019623 </td> <!-- entry_type -->
19624
19625 <td class="entry_description">
19626 <p>A list of all keys that the camera device has available
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070019627to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019628 </td>
19629
19630 <td class="entry_units">
19631 </td>
19632
19633 <td class="entry_range">
19634 </td>
19635
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019636 <td class="entry_hal_version">
19637 <p>3.<wbr/>2</p>
19638 </td>
19639
Igor Murashkin57d570d2014-02-06 15:35:37 -080019640 <td class="entry_tags">
19641 </td>
19642
19643 </tr>
19644 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019645 <th class="th_details" colspan="6">Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019646 </tr>
19647 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019648 <td class="entry_details" colspan="6">
Igor Murashkin57d570d2014-02-06 15:35:37 -080019649 <p>Attempting to set a key into a CaptureRequest that is not
19650listed here will result in an invalid request and will be rejected
19651by the camera device.<wbr/></p>
19652<p>This field can be used to query the feature set of a camera device
19653at a more granular level than capabilities.<wbr/> This is especially
19654important for optional keys that are not listed under any capability
19655in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019656 </td>
19657 </tr>
19658
19659 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019660 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019661 </tr>
19662 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019663 <td class="entry_details" colspan="6">
Emilian Peev39847542017-09-25 09:17:04 +010019664 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
19665use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019666<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
19667vendor extensions API and not against this field.<wbr/></p>
19668<p>The HAL must not consume any request tags that are not listed either
19669here or in the vendor tag list.<wbr/></p>
19670<p>The public camera2 API will always make the vendor tags visible
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070019671via
19672<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019673 </td>
19674 </tr>
19675
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019676 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019677 <!-- end of entry -->
19678
19679
19680 <tr class="entry" id="static_android.request.availableResultKeys">
Igor Murashkin6c936c12014-05-13 14:51:49 -070019681 <td class="entry_name
19682 " rowspan="5">
Igor Murashkin57d570d2014-02-06 15:35:37 -080019683 android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
19684 </td>
19685 <td class="entry_type">
19686 <span class="entry_type_name">int32</span>
19687 <span class="entry_type_container">x</span>
19688
19689 <span class="entry_type_array">
19690 n
19691 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070019692 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019693
19694
Igor Murashkinca256272014-10-02 15:27:09 -070019695 <span class="entry_type_hwlevel">[legacy] </span>
19696
Igor Murashkin6c936c12014-05-13 14:51:49 -070019697
19698
19699
Igor Murashkin57d570d2014-02-06 15:35:37 -080019700 </td> <!-- entry_type -->
19701
19702 <td class="entry_description">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019703 <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>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019704 </td>
19705
19706 <td class="entry_units">
19707 </td>
19708
19709 <td class="entry_range">
19710 </td>
19711
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019712 <td class="entry_hal_version">
19713 <p>3.<wbr/>2</p>
19714 </td>
19715
Igor Murashkin57d570d2014-02-06 15:35:37 -080019716 <td class="entry_tags">
19717 </td>
19718
19719 </tr>
19720 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019721 <th class="th_details" colspan="6">Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019722 </tr>
19723 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019724 <td class="entry_details" colspan="6">
Igor Murashkin57d570d2014-02-06 15:35:37 -080019725 <p>Attempting to get a key from a CaptureResult that is not
19726listed here will always return a <code>null</code> value.<wbr/> Getting a key from
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070019727a CaptureResult that is listed here will generally never return a <code>null</code>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019728value.<wbr/></p>
19729<p>The following keys may return <code>null</code> unless they are enabled:</p>
19730<ul>
19731<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>
19732</ul>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070019733<p>(Those sometimes-null keys will nevertheless be listed here
Igor Murashkin57d570d2014-02-06 15:35:37 -080019734if they are available.<wbr/>)</p>
19735<p>This field can be used to query the feature set of a camera device
19736at a more granular level than capabilities.<wbr/> This is especially
19737important for optional keys that are not listed under any capability
19738in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019739 </td>
19740 </tr>
19741
19742 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019743 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019744 </tr>
19745 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019746 <td class="entry_details" colspan="6">
Igor Murashkin57d570d2014-02-06 15:35:37 -080019747 <p>Tags listed here must always have an entry in the result metadata,<wbr/>
19748even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
19749matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
Emilian Peev39847542017-09-25 09:17:04 +010019750<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
19751use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019752<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
19753vendor extensions API and not against this field.<wbr/></p>
19754<p>The HAL must not produce any result tags that are not listed either
19755here or in the vendor tag list.<wbr/></p>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070019756<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>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019757 </td>
19758 </tr>
19759
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019760 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019761 <!-- end of entry -->
19762
19763
19764 <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
Igor Murashkin6c936c12014-05-13 14:51:49 -070019765 <td class="entry_name
19766 " rowspan="5">
Igor Murashkin57d570d2014-02-06 15:35:37 -080019767 android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
19768 </td>
19769 <td class="entry_type">
19770 <span class="entry_type_name">int32</span>
19771 <span class="entry_type_container">x</span>
19772
19773 <span class="entry_type_array">
19774 n
19775 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070019776 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019777
19778
Igor Murashkinca256272014-10-02 15:27:09 -070019779 <span class="entry_type_hwlevel">[legacy] </span>
19780
Igor Murashkin6c936c12014-05-13 14:51:49 -070019781
19782
19783
Igor Murashkin57d570d2014-02-06 15:35:37 -080019784 </td> <!-- entry_type -->
19785
19786 <td class="entry_description">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019787 <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>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019788 </td>
19789
19790 <td class="entry_units">
19791 </td>
19792
19793 <td class="entry_range">
19794 </td>
19795
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019796 <td class="entry_hal_version">
19797 <p>3.<wbr/>2</p>
19798 </td>
19799
Igor Murashkin57d570d2014-02-06 15:35:37 -080019800 <td class="entry_tags">
19801 </td>
19802
19803 </tr>
19804 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019805 <th class="th_details" colspan="6">Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019806 </tr>
19807 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019808 <td class="entry_details" colspan="6">
Igor Murashkin57d570d2014-02-06 15:35:37 -080019809 <p>This entry follows the same rules as
19810<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
19811CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
19812details.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019813 </td>
19814 </tr>
19815
19816 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019817 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019818 </tr>
19819 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019820 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070019821 <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019822even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
19823matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
Emilian Peev39847542017-09-25 09:17:04 +010019824<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
19825the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019826<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
19827vendor extensions API and not against this field.<wbr/></p>
19828<p>The HAL must not have any tags in its static info that are not listed
19829either here or in the vendor tag list.<wbr/></p>
19830<p>The public camera2 API will always make the vendor tags visible
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070019831via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019832 </td>
19833 </tr>
19834
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080019835 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin57d570d2014-02-06 15:35:37 -080019836 <!-- end of entry -->
19837
Emilian Peevb0134d02017-11-17 13:20:12 +000019838
19839 <tr class="entry" id="static_android.request.availableSessionKeys">
19840 <td class="entry_name
19841 " rowspan="5">
19842 android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
19843 </td>
19844 <td class="entry_type">
19845 <span class="entry_type_name">int32</span>
19846 <span class="entry_type_container">x</span>
19847
19848 <span class="entry_type_array">
19849 n
19850 </span>
19851 <span class="entry_type_visibility"> [ndk_public]</span>
19852
19853
19854 <span class="entry_type_hwlevel">[legacy] </span>
19855
19856
19857
19858
19859 </td> <!-- entry_type -->
19860
19861 <td class="entry_description">
19862 <p>A subset of the available request keys that the camera device
19863can pass as part of the capture session initialization.<wbr/></p>
19864 </td>
19865
19866 <td class="entry_units">
19867 </td>
19868
19869 <td class="entry_range">
19870 </td>
19871
19872 <td class="entry_hal_version">
Emilian Peev17324ba2018-01-10 13:47:40 +000019873 <p>3.<wbr/>3</p>
Emilian Peevb0134d02017-11-17 13:20:12 +000019874 </td>
19875
19876 <td class="entry_tags">
19877 </td>
19878
19879 </tr>
19880 <tr class="entries_header">
19881 <th class="th_details" colspan="6">Details</th>
19882 </tr>
19883 <tr class="entry_cont">
19884 <td class="entry_details" colspan="6">
19885 <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
19886contains a list of keys that are difficult to apply per-frame and
19887can result in unexpected delays when modified during the capture session
19888lifetime.<wbr/> Typical examples include parameters that require a
19889time-consuming hardware re-configuration or internal camera pipeline
19890change.<wbr/> For performance reasons we advise clients to pass their initial
Chien-Yu Chen11f62a52018-01-11 11:32:52 -080019891values as part of
Eino-Ville Talvala808558e2017-12-07 13:12:11 -080019892<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
Emilian Peevb0134d02017-11-17 13:20:12 +000019893Once the camera capture session is enabled it is also recommended to avoid
19894changing them from their initial values set in
19895<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
19896Control over session parameters can still be exerted in capture requests
19897but clients should be aware and expect delays during their application.<wbr/>
19898An example usage scenario could look like this:</p>
19899<ul>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070019900<li>The camera client starts by querying the session parameter key list via
Emilian Peevb0134d02017-11-17 13:20:12 +000019901 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
19902<li>Before triggering the capture session create sequence,<wbr/> a capture request
19903 must be built via
19904 <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
19905 using an appropriate template matching the particular use case.<wbr/></li>
19906<li>The client should go over the list of session parameters and check
19907 whether some of the keys listed matches with the parameters that
19908 they intend to modify as part of the first capture request.<wbr/></li>
19909<li>If there is no such match,<wbr/> the capture request can be passed
19910 unmodified to
19911 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
19912<li>If matches do exist,<wbr/> the client should update the respective values
19913 and pass the request to
19914 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
19915<li>After the capture session initialization completes the session parameter
19916 key list can continue to serve as reference when posting or updating
19917 further requests.<wbr/> As mentioned above further changes to session
19918 parameters should ideally be avoided,<wbr/> if updates are necessary
19919 however clients could expect a delay/<wbr/>glitch during the
19920 parameter switch.<wbr/></li>
19921</ul>
19922 </td>
19923 </tr>
19924
19925 <tr class="entries_header">
19926 <th class="th_details" colspan="6">HAL Implementation Details</th>
19927 </tr>
19928 <tr class="entry_cont">
19929 <td class="entry_details" colspan="6">
Emilian Peevfc803e22018-05-15 11:18:04 +010019930 <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
19931speed mode is enabled,<wbr/> then only modifications of the maximum framerate value will be
19932monitored by the framework and can trigger camera re-configuration.<wbr/> For more information
19933about framerate ranges during constrained high speed sessions see
19934<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
19935Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
Emilian Peevb0134d02017-11-17 13:20:12 +000019936use the extensions C api (refer to
19937android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
19938<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
19939vendor extensions API and not against this field.<wbr/></p>
19940<p>The HAL must not consume any request tags in the session parameters that
19941are not listed either here or in the vendor tag list.<wbr/></p>
19942<p>The public camera2 API will always make the vendor tags visible
19943via
19944<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
19945 </td>
19946 </tr>
19947
19948 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19949 <!-- end of entry -->
19950
Emilian Peevb52eadf2018-01-18 19:09:57 +000019951
19952 <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
19953 <td class="entry_name
19954 " rowspan="5">
19955 android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
19956 </td>
19957 <td class="entry_type">
19958 <span class="entry_type_name">int32</span>
19959 <span class="entry_type_container">x</span>
19960
19961 <span class="entry_type_array">
19962 n
19963 </span>
Shuzhen Wangc7362292019-02-19 14:50:37 -080019964 <span class="entry_type_visibility"> [ndk_public]</span>
Emilian Peevb52eadf2018-01-18 19:09:57 +000019965
19966
19967 <span class="entry_type_hwlevel">[limited] </span>
19968
19969
19970
19971
19972 </td> <!-- entry_type -->
19973
19974 <td class="entry_description">
Shuzhen Wange396c462018-10-11 10:17:33 -070019975 <p>A subset of the available request keys that can be overridden for
Emilian Peevb52eadf2018-01-18 19:09:57 +000019976physical devices backing a logical multi-camera.<wbr/></p>
19977 </td>
19978
19979 <td class="entry_units">
19980 </td>
19981
19982 <td class="entry_range">
19983 </td>
19984
19985 <td class="entry_hal_version">
19986 <p>3.<wbr/>3</p>
19987 </td>
19988
19989 <td class="entry_tags">
19990 </td>
19991
19992 </tr>
19993 <tr class="entries_header">
19994 <th class="th_details" colspan="6">Details</th>
19995 </tr>
19996 <tr class="entry_cont">
19997 <td class="entry_details" colspan="6">
19998 <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
Shuzhen Wang16c73e42022-06-13 09:42:11 -070019999of keys that can be overridden using
20000<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
Emilian Peevb52eadf2018-01-18 19:09:57 +000020001The respective value of such request key can be obtained by calling
Shuzhen Wang16c73e42022-06-13 09:42:11 -070020002<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/>
20003Capture requests that contain individual physical device requests must be built via
Emilian Peev62d01d52018-02-06 16:08:38 +000020004<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
Emilian Peevb52eadf2018-01-18 19:09:57 +000020005 </td>
20006 </tr>
20007
20008 <tr class="entries_header">
20009 <th class="th_details" colspan="6">HAL Implementation Details</th>
20010 </tr>
20011 <tr class="entry_cont">
20012 <td class="entry_details" colspan="6">
20013 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
20014use the extensions C api (refer to
20015android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
20016details).<wbr/></p>
20017<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
20018vendor extensions API and not against this field.<wbr/></p>
20019<p>The HAL must not consume any request tags in the session parameters that
20020are not listed either here or in the vendor tag list.<wbr/></p>
Emilian Peev62d01d52018-02-06 16:08:38 +000020021<p>There should be no overlap between this set of keys and the available session keys
20022<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
20023with any other controls that can have impact on the dual-camera sync.<wbr/></p>
Emilian Peevb52eadf2018-01-18 19:09:57 +000020024<p>The public camera2 API will always make the vendor tags visible
20025via
20026<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
20027 </td>
20028 </tr>
20029
20030 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20031 <!-- end of entry -->
20032
Emilian Peev98a89c12018-08-15 18:20:27 +010020033
20034 <tr class="entry" id="static_android.request.characteristicKeysNeedingPermission">
20035 <td class="entry_name
20036 " rowspan="5">
20037 android.<wbr/>request.<wbr/>characteristic<wbr/>Keys<wbr/>Needing<wbr/>Permission
20038 </td>
20039 <td class="entry_type">
20040 <span class="entry_type_name">int32</span>
20041 <span class="entry_type_container">x</span>
20042
20043 <span class="entry_type_array">
20044 n
20045 </span>
20046 <span class="entry_type_visibility"> [hidden]</span>
20047
20048
20049 <span class="entry_type_hwlevel">[legacy] </span>
20050
20051
20052
20053
20054 </td> <!-- entry_type -->
20055
20056 <td class="entry_description">
20057 <p>A list of camera characteristics keys that are only available
20058in case the camera client has camera permission.<wbr/></p>
20059 </td>
20060
20061 <td class="entry_units">
20062 </td>
20063
20064 <td class="entry_range">
20065 </td>
20066
20067 <td class="entry_hal_version">
20068 <p>3.<wbr/>4</p>
20069 </td>
20070
20071 <td class="entry_tags">
20072 </td>
20073
20074 </tr>
20075 <tr class="entries_header">
20076 <th class="th_details" colspan="6">Details</th>
20077 </tr>
20078 <tr class="entry_cont">
20079 <td class="entry_details" colspan="6">
20080 <p>The entry contains a subset of
20081<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a> that require camera clients
20082to acquire the <a href="https://developer.android.com/reference/android/Manifest/permission.html#CAMERA">permission#CAMERA</a> permission before calling
20083<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraCharacteristics">CameraManager#getCameraCharacteristics</a>.<wbr/> If the
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070020084permission is not held by the camera client,<wbr/> then the values of the respective properties
Emilian Peev98a89c12018-08-15 18:20:27 +010020085will not be present in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
20086 </td>
20087 </tr>
20088
20089 <tr class="entries_header">
20090 <th class="th_details" colspan="6">HAL Implementation Details</th>
20091 </tr>
20092 <tr class="entry_cont">
20093 <td class="entry_details" colspan="6">
20094 <p>Do not set this property directly,<wbr/> camera service will overwrite any previous values.<wbr/></p>
20095 </td>
20096 </tr>
20097
20098 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20099 <!-- end of entry -->
20100
Emilian Peev276c7222021-11-12 18:07:39 -080020101
20102 <tr class="entry" id="static_android.request.availableDynamicRangeProfiles">
20103 <td class="entry_name
20104 " rowspan="3">
20105 android.<wbr/>request.<wbr/>available<wbr/>Dynamic<wbr/>Range<wbr/>Profiles
20106 </td>
20107 <td class="entry_type">
20108 <span class="entry_type_name">int32</span>
20109
20110 <span class="entry_type_visibility"> [java_public as dynamicRangeProfiles]</span>
20111
20112 <span class="entry_type_synthetic">[synthetic] </span>
20113
20114
20115
20116
20117
20118 </td> <!-- entry_type -->
20119
20120 <td class="entry_description">
20121 <p>Devices supporting the 10-bit output capability
20122<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
20123must list their supported dynamic range profiles along with capture request
20124constraints for specific profile combinations.<wbr/></p>
20125 </td>
20126
20127 <td class="entry_units">
20128 </td>
20129
20130 <td class="entry_range">
20131 </td>
20132
20133 <td class="entry_hal_version">
20134 <p>3.<wbr/>2</p>
20135 </td>
20136
20137 <td class="entry_tags">
20138 </td>
20139
20140 </tr>
20141 <tr class="entries_header">
20142 <th class="th_details" colspan="6">Details</th>
20143 </tr>
20144 <tr class="entry_cont">
20145 <td class="entry_details" colspan="6">
20146 <p>Camera clients can retrieve the list of supported 10-bit dynamic range profiles by calling
20147<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getSupportedProfiles">DynamicRangeProfiles#getSupportedProfiles</a>.<wbr/>
20148Any of them can be configured by setting OutputConfiguration dynamic range profile in
20149<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setDynamicRangeProfile">OutputConfiguration#setDynamicRangeProfile</a>.<wbr/>
20150Clients can also check if there are any constraints that limit the combination
20151of supported profiles that can be referenced within a single capture request by calling
20152<a href="https://developer.android.com/reference/android/hardware/camera2/params/DynamicRangeProfiles.html#getProfileCaptureRequestConstraints">DynamicRangeProfiles#getProfileCaptureRequestConstraints</a>.<wbr/></p>
20153 </td>
20154 </tr>
20155
20156
20157 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20158 <!-- end of entry -->
20159
20160
20161 <tr class="entry" id="static_android.request.availableDynamicRangeProfilesMap">
20162 <td class="entry_name
20163 " rowspan="5">
20164 android.<wbr/>request.<wbr/>available<wbr/>Dynamic<wbr/>Range<wbr/>Profiles<wbr/>Map
20165 </td>
20166 <td class="entry_type">
Emilian Peev70efdd82022-02-14 16:12:49 -080020167 <span class="entry_type_name entry_type_name_enum">int64</span>
Emilian Peev276c7222021-11-12 18:07:39 -080020168 <span class="entry_type_container">x</span>
20169
20170 <span class="entry_type_array">
Emilian Peev70efdd82022-02-14 16:12:49 -080020171 n x 3
Emilian Peev276c7222021-11-12 18:07:39 -080020172 </span>
20173 <span class="entry_type_visibility"> [ndk_public]</span>
20174
20175
20176
20177
20178
20179 <ul class="entry_type_enum">
20180 <li>
20181 <span class="entry_type_enum_name">STANDARD (v3.8)</span>
20182 <span class="entry_type_enum_value">0x1</span>
20183 <span class="entry_type_enum_notes"><p>8-bit SDR profile which is the default for all non 10-bit output capable devices.<wbr/></p></span>
20184 </li>
20185 <li>
20186 <span class="entry_type_enum_name">HLG10 (v3.8)</span>
20187 <span class="entry_type_enum_value">0x2</span>
20188 <span class="entry_type_enum_notes"><p>10-bit pixel samples encoded using the Hybrid log-gamma transfer function.<wbr/></p></span>
20189 </li>
20190 <li>
20191 <span class="entry_type_enum_name">HDR10 (v3.8)</span>
20192 <span class="entry_type_enum_value">0x4</span>
20193 <span class="entry_type_enum_notes"><p>10-bit pixel samples encoded using the SMPTE ST 2084 transfer function.<wbr/>
20194This profile utilizes internal static metadata to increase the quality
20195of the capture.<wbr/></p></span>
20196 </li>
20197 <li>
20198 <span class="entry_type_enum_name">HDR10_PLUS (v3.8)</span>
20199 <span class="entry_type_enum_value">0x8</span>
20200 <span class="entry_type_enum_notes"><p>10-bit pixel samples encoded using the SMPTE ST 2084 transfer function.<wbr/>
20201In contrast to HDR10,<wbr/> this profile uses internal per-frame metadata
20202to further enhance the quality of the capture.<wbr/></p></span>
20203 </li>
20204 <li>
20205 <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_REF (v3.8)</span>
20206 <span class="entry_type_enum_value">0x10</span>
20207 <span class="entry_type_enum_notes"><p>This is a camera mode for Dolby Vision capture optimized for a more scene
20208accurate capture.<wbr/> This would typically differ from what a specific device
20209might want to tune for a consumer optimized Dolby Vision general capture.<wbr/></p></span>
20210 </li>
20211 <li>
20212 <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_REF_PO (v3.8)</span>
20213 <span class="entry_type_enum_value">0x20</span>
20214 <span class="entry_type_enum_notes"><p>This is the power optimized mode for 10-bit Dolby Vision HDR Reference Mode.<wbr/></p></span>
20215 </li>
20216 <li>
20217 <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_OEM (v3.8)</span>
20218 <span class="entry_type_enum_value">0x40</span>
20219 <span class="entry_type_enum_notes"><p>This is the camera mode for the default Dolby Vision capture mode for the
20220specific device.<wbr/> This would be tuned by each specific device for consumer
20221pleasing results that resonate with their particular audience.<wbr/> We expect
20222that each specific device would have a different look for their default
20223Dolby Vision capture.<wbr/></p></span>
20224 </li>
20225 <li>
20226 <span class="entry_type_enum_name">DOLBY_VISION_10B_HDR_OEM_PO (v3.8)</span>
20227 <span class="entry_type_enum_value">0x80</span>
20228 <span class="entry_type_enum_notes"><p>This is the power optimized mode for 10-bit Dolby Vision HDR device specific
20229capture Mode.<wbr/></p></span>
20230 </li>
20231 <li>
20232 <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_REF (v3.8)</span>
20233 <span class="entry_type_enum_value">0x100</span>
20234 <span class="entry_type_enum_notes"><p>This is the 8-bit version of the Dolby Vision reference capture mode optimized
20235for scene accuracy.<wbr/></p></span>
20236 </li>
20237 <li>
20238 <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_REF_PO (v3.8)</span>
20239 <span class="entry_type_enum_value">0x200</span>
20240 <span class="entry_type_enum_notes"><p>This is the power optimized mode for 8-bit Dolby Vision HDR Reference Mode.<wbr/></p></span>
20241 </li>
20242 <li>
20243 <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_OEM (v3.8)</span>
20244 <span class="entry_type_enum_value">0x400</span>
20245 <span class="entry_type_enum_notes"><p>This is the 8-bit version of device specific tuned and optimized Dolby Vision
20246capture mode.<wbr/></p></span>
20247 </li>
20248 <li>
20249 <span class="entry_type_enum_name">DOLBY_VISION_8B_HDR_OEM_PO (v3.8)</span>
20250 <span class="entry_type_enum_value">0x800</span>
20251 <span class="entry_type_enum_notes"><p>This is the power optimized mode for 8-bit Dolby Vision HDR device specific
20252capture Mode.<wbr/></p></span>
20253 </li>
20254 <li>
20255 <span class="entry_type_enum_name">MAX (v3.8)</span>
20256 <span class="entry_type_enum_value">0x1000</span>
20257 <span class="entry_type_enum_notes"></span>
20258 </li>
20259 </ul>
20260
20261 </td> <!-- entry_type -->
20262
20263 <td class="entry_description">
20264 <p>A map of all available 10-bit dynamic range profiles along with their
20265capture request constraints.<wbr/></p>
20266 </td>
20267
20268 <td class="entry_units">
20269 </td>
20270
20271 <td class="entry_range">
20272 </td>
20273
20274 <td class="entry_hal_version">
20275 <p>3.<wbr/>8</p>
20276 </td>
20277
20278 <td class="entry_tags">
20279 </td>
20280
20281 </tr>
20282 <tr class="entries_header">
20283 <th class="th_details" colspan="6">Details</th>
20284 </tr>
20285 <tr class="entry_cont">
20286 <td class="entry_details" colspan="6">
20287 <p>Devices supporting the 10-bit output capability
20288<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
20289must list their supported dynamic range profiles.<wbr/> In case the camera is not able to
20290support every possible profile combination within a single capture request,<wbr/> then the
20291constraints must be listed here as well.<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">
Emilian Peev70efdd82022-02-14 16:12:49 -080020300 <p>The array contains three entries per supported profile:
Emilian Peev276c7222021-11-12 18:07:39 -0800203011) The supported dynamic profile value.<wbr/> Do note that
20302ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>STANDARD is assumed to be always
20303present and must not be listed.<wbr/>
203042) A bitmap combination of all supported profiles that can be referenced at the same
20305time within a single capture request.<wbr/> Do note that a value of 0 means that there are
Emilian Peev70efdd82022-02-14 16:12:49 -080020306no constraints and all combinations are supported.<wbr/>
203073) A flag indicating the presence of an internal lookahead functionality that
20308can increase the streaming latency by more than 3 buffers.<wbr/> The value 0 will indicate
20309that latency doesn't exceed 3 buffers,<wbr/> everything different than 0 will indicate
20310latency that is beyond 3 buffers.<wbr/> In case the flag is set,<wbr/> then Camera clients will be
20311advised to avoid configuring this profile for camera latency sensitive outputs such as
Emilian Peev511bf342022-03-03 11:09:20 -080020312preview.<wbr/> Do note,<wbr/> that such extra latency must not be present for the HLG10 profile.<wbr/></p>
Emilian Peev276c7222021-11-12 18:07:39 -080020313<p>For example if we assume that a device exists that can only support HLG10,<wbr/> HDR10 and
20314HDR10_<wbr/>PLUS from the possible 10-bit profiles with the following capture constraints:
203151) HLG10 can be included in any capture request without constraints.<wbr/>
Emilian Peev511bf342022-03-03 11:09:20 -0800203162) HDR10 and HDR10_<wbr/>PLUS can only be referenced together and/<wbr/>or with HLG10 but not with
Emilian Peev276c7222021-11-12 18:07:39 -080020317STANDARD.<wbr/>
Emilian Peev70efdd82022-02-14 16:12:49 -080020318In the same example,<wbr/> HLG10 and HDR10 will not have additional lookahead latency,<wbr/> and
20319HDR10+ will have latency that exceeds 3 buffers.<wbr/>
Emilian Peev276c7222021-11-12 18:07:39 -080020320The resulting array should look like this:
Emilian Peev70efdd82022-02-14 16:12:49 -080020321[ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HLG10,<wbr/> 0,<wbr/> 0,<wbr/>
Emilian Peev276c7222021-11-12 18:07:39 -080020322ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10,<wbr/>
20323(ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10 |<wbr/>
20324ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HLG10 |<wbr/>
Emilian Peev70efdd82022-02-14 16:12:49 -080020325 ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10_<wbr/>PLUS),<wbr/> 0,<wbr/>
Emilian Peev276c7222021-11-12 18:07:39 -080020326ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10_<wbr/>PLUS,<wbr/>
20327(ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10_<wbr/>PLUS |<wbr/>
20328ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HLG10 |<wbr/>
Emilian Peev70efdd82022-02-14 16:12:49 -080020329 ANDROID_<wbr/>REQUEST_<wbr/>AVAILABLE_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>PROFILES_<wbr/>HDR10),<wbr/> 1]</p>
Emilian Peev276c7222021-11-12 18:07:39 -080020330<p>Camera providers must ensure that each processed buffer from a stream configured with the
20331HDR10 dynamic range profile includes SMPTE ST 2086 static metadata by calling
20332'android::hardware::graphics::mapper::V4_<wbr/>0::IMapper::set' before returning the buffer.<wbr/></p>
20333<p>Camera providers must ensure that each processed buffer from a stream configured
20334with HDR10_<wbr/>PLUS dynamic range profile includes SMPTE ST 2094-40 dynamic
20335metadata by calling 'android::hardware::graphics::mapper::V4_<wbr/>0::IMapper::set' before
20336returning the buffer.<wbr/></p>
20337<p>Camera providers must ensure that each processed buffer from a stream configured
20338with any of the 10-bit Dolby Vision dynamic range profiles includes SMPTE ST 2094-10
20339dynamic metadata by calling 'android::hardware::graphics::mapper::V4_<wbr/>0::IMapper::set'
20340before returning the buffer.<wbr/></p>
20341 </td>
20342 </tr>
20343
20344 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20345 <!-- end of entry -->
20346
20347
20348 <tr class="entry" id="static_android.request.recommendedTenBitDynamicRangeProfile">
20349 <td class="entry_name
20350 " rowspan="3">
20351 android.<wbr/>request.<wbr/>recommended<wbr/>Ten<wbr/>Bit<wbr/>Dynamic<wbr/>Range<wbr/>Profile
20352 </td>
20353 <td class="entry_type">
Emilian Peev70efdd82022-02-14 16:12:49 -080020354 <span class="entry_type_name">int64</span>
Emilian Peev276c7222021-11-12 18:07:39 -080020355
20356 <span class="entry_type_visibility"> [java_public]</span>
20357
20358
20359
20360
20361
20362
20363 </td> <!-- entry_type -->
20364
20365 <td class="entry_description">
20366 <p>Recommended 10-bit dynamic range profile.<wbr/></p>
20367 </td>
20368
20369 <td class="entry_units">
20370 </td>
20371
20372 <td class="entry_range">
20373 </td>
20374
20375 <td class="entry_hal_version">
20376 <p>3.<wbr/>8</p>
20377 </td>
20378
20379 <td class="entry_tags">
20380 </td>
20381
20382 </tr>
20383 <tr class="entries_header">
20384 <th class="th_details" colspan="6">Details</th>
20385 </tr>
20386 <tr class="entry_cont">
20387 <td class="entry_details" colspan="6">
20388 <p>Devices supporting the 10-bit output capability
20389<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
20390must list a 10-bit supported dynamic range profile that is expected to perform
20391optimally in terms of image quality,<wbr/> power and performance.<wbr/>
20392The value advertised can be used as a hint by camera clients when configuring the dynamic
20393range profile when calling
20394<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setDynamicRangeProfile">OutputConfiguration#setDynamicRangeProfile</a>.<wbr/></p>
20395 </td>
20396 </tr>
20397
20398
20399 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20400 <!-- end of entry -->
20401
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020402
20403
20404 <!-- end of kind -->
20405 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020406 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020407
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070020408 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020409 <tr>
20410 <th class="th_name">Property Name</th>
20411 <th class="th_type">Type</th>
20412 <th class="th_description">Description</th>
20413 <th class="th_units">Units</th>
20414 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020415 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020416 <th class="th_tags">Tags</th>
20417 </tr>
20418 </thead>
20419
20420 <tbody>
20421
20422
20423
20424
20425
20426
20427
20428
20429
20430
20431 <tr class="entry" id="dynamic_android.request.frameCount">
Igor Murashkin6c936c12014-05-13 14:51:49 -070020432 <td class="entry_name
Igor Murashkin757ec242014-07-25 16:55:18 -070020433 entry_name_deprecated
Igor Murashkin6c936c12014-05-13 14:51:49 -070020434 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080020435 android.<wbr/>request.<wbr/>frame<wbr/>Count
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020436 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020437 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080020438 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020439
Igor Murashkin757ec242014-07-25 16:55:18 -070020440 <span class="entry_type_visibility"> [hidden]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020441
20442
Igor Murashkinca256272014-10-02 15:27:09 -070020443
Igor Murashkin757ec242014-07-25 16:55:18 -070020444 <span class="entry_type_deprecated">[deprecated] </span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070020445
20446
20447
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020448 </td> <!-- entry_type -->
20449
20450 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080020451 <p>A frame counter set by the framework.<wbr/> This value monotonically
20452increases with every new result (that is,<wbr/> each new result has a unique
20453frameCount value).<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020454 </td>
20455
20456 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080020457 count of frames
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020458 </td>
20459
20460 <td class="entry_range">
Igor Murashkin757ec242014-07-25 16:55:18 -070020461 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080020462 <p>&gt; 0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020463 </td>
20464
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020465 <td class="entry_hal_version">
20466 <p>3.<wbr/>2</p>
20467 </td>
20468
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020469 <td class="entry_tags">
20470 </td>
20471
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020472 </tr>
20473 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020474 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020475 </tr>
20476 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020477 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080020478 <p>Reset on release()</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020479 </td>
20480 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020481
20482
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020483 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020484 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020485
20486
20487 <tr class="entry" id="dynamic_android.request.id">
Igor Murashkin6c936c12014-05-13 14:51:49 -070020488 <td class="entry_name
20489 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080020490 android.<wbr/>request.<wbr/>id
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020491 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020492 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080020493 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020494
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070020495 <span class="entry_type_visibility"> [hidden]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020496
20497
Igor Murashkin6c936c12014-05-13 14:51:49 -070020498
20499
20500
Igor Murashkinca256272014-10-02 15:27:09 -070020501
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020502 </td> <!-- entry_type -->
20503
20504 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080020505 <p>An application-specified ID for the current
20506request.<wbr/> Must be maintained unchanged in output
20507frame</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020508 </td>
20509
20510 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080020511 arbitrary integer assigned by application
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020512 </td>
20513
20514 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080020515 <p>Any int</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020516 </td>
20517
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020518 <td class="entry_hal_version">
20519 <p>3.<wbr/>2</p>
20520 </td>
20521
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020522 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080020523 <ul class="entry_tags">
20524 <li><a href="#tag_V1">V1</a></li>
20525 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020526 </td>
20527
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020528 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020529
20530
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020531 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020532 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020533
20534
20535 <tr class="entry" id="dynamic_android.request.metadataMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070020536 <td class="entry_name
20537 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080020538 android.<wbr/>request.<wbr/>metadata<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020539 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020540 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080020541 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020542
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070020543 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020544
Igor Murashkin6c936c12014-05-13 14:51:49 -070020545
20546
20547
Igor Murashkinca256272014-10-02 15:27:09 -070020548
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020549 <ul class="entry_type_enum">
20550 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080020551 <span class="entry_type_enum_name">NONE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080020552 <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
20553for application-bound buffer data.<wbr/> If no
20554application-bound streams exist,<wbr/> no frame should be
20555placed in the output frame queue.<wbr/> If such streams
20556exist,<wbr/> a frame should be placed on the output queue
20557with null metadata but with the necessary output buffer
20558information.<wbr/> Timestamp information should still be
20559included with any output stream buffers</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020560 </li>
20561 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080020562 <span class="entry_type_enum_name">FULL (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080020563 <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
20564only be produced if they are separately
20565enabled</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020566 </li>
20567 </ul>
20568
20569 </td> <!-- entry_type -->
20570
20571 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080020572 <p>How much metadata to produce on
20573output</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020574 </td>
20575
20576 <td class="entry_units">
20577 </td>
20578
20579 <td class="entry_range">
20580 </td>
20581
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020582 <td class="entry_hal_version">
20583 <p>3.<wbr/>2</p>
20584 </td>
20585
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020586 <td class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070020587 <ul class="entry_tags">
20588 <li><a href="#tag_FUTURE">FUTURE</a></li>
20589 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020590 </td>
20591
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020592 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020593
20594
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020595 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020596 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020597
20598
20599 <tr class="entry" id="dynamic_android.request.outputStreams">
Igor Murashkin6c936c12014-05-13 14:51:49 -070020600 <td class="entry_name
20601 entry_name_deprecated
20602 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080020603 android.<wbr/>request.<wbr/>output<wbr/>Streams
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020604 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020605 <td class="entry_type">
Zhijun Hee36cdbe2013-09-06 14:28:37 -070020606 <span class="entry_type_name">int32</span>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070020607 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020608
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070020609 <span class="entry_type_array">
20610 n
20611 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070020612 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020613
20614
Igor Murashkinca256272014-10-02 15:27:09 -070020615
Igor Murashkin6c936c12014-05-13 14:51:49 -070020616 <span class="entry_type_deprecated">[deprecated] </span>
20617
20618
20619
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020620 </td> <!-- entry_type -->
20621
20622 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080020623 <p>Lists which camera output streams image data
20624from this capture must be sent to</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020625 </td>
20626
20627 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080020628 List of camera stream IDs
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020629 </td>
20630
20631 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070020632 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
20633 <p>List must only include streams that have been
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080020634created</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020635 </td>
20636
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020637 <td class="entry_hal_version">
20638 <p>3.<wbr/>2</p>
20639 </td>
20640
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020641 <td class="entry_tags">
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070020642 <ul class="entry_tags">
20643 <li><a href="#tag_HAL2">HAL2</a></li>
20644 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020645 </td>
20646
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020647 </tr>
20648 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020649 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020650 </tr>
20651 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020652 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080020653 <p>If no output streams are listed,<wbr/> then the image
20654data should simply be discarded.<wbr/> The image data must
20655still be captured for metadata and statistics production,<wbr/>
20656and the lens and flash must operate as requested.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020657 </td>
20658 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020659
20660
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020661 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020662 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020663
Igor Murashkina46e02f2014-01-09 17:43:38 -080020664
20665 <tr class="entry" id="dynamic_android.request.pipelineDepth">
Igor Murashkin6c936c12014-05-13 14:51:49 -070020666 <td class="entry_name
20667 " rowspan="5">
Igor Murashkina46e02f2014-01-09 17:43:38 -080020668 android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
20669 </td>
20670 <td class="entry_type">
20671 <span class="entry_type_name">byte</span>
20672
20673 <span class="entry_type_visibility"> [public]</span>
20674
20675
Igor Murashkinca256272014-10-02 15:27:09 -070020676 <span class="entry_type_hwlevel">[legacy] </span>
20677
Igor Murashkin6c936c12014-05-13 14:51:49 -070020678
20679
20680
Igor Murashkina46e02f2014-01-09 17:43:38 -080020681 </td> <!-- entry_type -->
20682
20683 <td class="entry_description">
20684 <p>Specifies the number of pipeline stages the frame went
20685through from when it was exposed to when the final completed result
20686was available to the framework.<wbr/></p>
20687 </td>
20688
20689 <td class="entry_units">
20690 </td>
20691
20692 <td class="entry_range">
20693 <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
20694 </td>
20695
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020696 <td class="entry_hal_version">
20697 <p>3.<wbr/>2</p>
20698 </td>
20699
Igor Murashkina46e02f2014-01-09 17:43:38 -080020700 <td class="entry_tags">
20701 </td>
20702
20703 </tr>
20704 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020705 <th class="th_details" colspan="6">Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080020706 </tr>
20707 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020708 <td class="entry_details" colspan="6">
Igor Murashkina46e02f2014-01-09 17:43:38 -080020709 <p>Depending on what settings are used in the request,<wbr/> and
20710what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
20711and some pipeline stages skipped.<wbr/></p>
20712<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
20713 </td>
20714 </tr>
20715
20716 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020717 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080020718 </tr>
20719 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020720 <td class="entry_details" colspan="6">
Igor Murashkina46e02f2014-01-09 17:43:38 -080020721 <p>This value must always represent the accurate count of how many
20722pipeline stages were actually used.<wbr/></p>
20723 </td>
20724 </tr>
20725
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020726 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkina46e02f2014-01-09 17:43:38 -080020727 <!-- end of entry -->
20728
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020729
20730
20731 <!-- end of kind -->
20732 </tbody>
20733
20734 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020735 <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020736
20737
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020738 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020739
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070020740 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020741 <tr>
20742 <th class="th_name">Property Name</th>
20743 <th class="th_type">Type</th>
20744 <th class="th_description">Description</th>
20745 <th class="th_units">Units</th>
20746 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020747 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020748 <th class="th_tags">Tags</th>
20749 </tr>
20750 </thead>
20751
20752 <tbody>
20753
20754
20755
20756
20757
20758
20759
20760
20761
20762
20763 <tr class="entry" id="controls_android.scaler.cropRegion">
Igor Murashkin6c936c12014-05-13 14:51:49 -070020764 <td class="entry_name
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070020765 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080020766 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020767 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020768 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080020769 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020770 <span class="entry_type_container">x</span>
20771
20772 <span class="entry_type_array">
Eino-Ville Talvalae04ec6e2013-04-16 15:35:18 -070020773 4
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020774 </span>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070020775 <span class="entry_type_visibility"> [public as rectangle]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020776
20777
Igor Murashkinca256272014-10-02 15:27:09 -070020778 <span class="entry_type_hwlevel">[legacy] </span>
20779
Igor Murashkin6c936c12014-05-13 14:51:49 -070020780
20781
20782
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020783 </td> <!-- entry_type -->
20784
20785 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070020786 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020787 </td>
20788
20789 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070020790 Pixel coordinates relative to
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070020791 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
20792 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction
20793 capability and mode
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020794 </td>
20795
20796 <td class="entry_range">
20797 </td>
20798
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020799 <td class="entry_hal_version">
20800 <p>3.<wbr/>2</p>
20801 </td>
20802
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020803 <td class="entry_tags">
20804 <ul class="entry_tags">
20805 <li><a href="#tag_BC">BC</a></li>
20806 </ul>
20807 </td>
20808
20809 </tr>
20810 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020811 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020812 </tr>
20813 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020814 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070020815 <p>This control can be used to implement digital zoom.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070020816<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
20817system always follows that of <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
20818the top-left pixel of the active array.<wbr/></p>
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080020819<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system
20820depends on the mode being set.<wbr/> When the distortion correction mode is OFF,<wbr/> the
20821coordinate system follows <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/>
208220)</code> being the top-left pixel of the pre-correction active array.<wbr/> When the distortion
20823correction mode is not OFF,<wbr/> the coordinate system follows
20824<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 top-left pixel of the
20825active array.<wbr/></p>
20826<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region
20827if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070020828match the output's configured resolution.<wbr/></p>
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080020829<p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
20830conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070020831croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080020832<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the
20833final pixel area of the stream.<wbr/></p>
20834<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use
20835the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p>
20836<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally
20837(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be
20838centered within the crop region.<wbr/></p>
20839<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/>
20840for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/> Note that
20841several of these examples use non-centered crop regions for ease of illustration; such
20842regions are only supported on devices with FREEFORM capability
20843(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>),<wbr/> but this does not affect the way the crop
20844rules work otherwise.<wbr/></p>
20845<ul>
20846<li>Camera Configuration:<ul>
20847<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
20848<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
20849<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
20850</ul>
20851</li>
20852<li>Case #1: 4:3 crop region with 2x digital zoom<ul>
20853<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li>
20854<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li>
20855<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li>
20856<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
20857</ul>
20858</li>
20859<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul>
20860<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li>
20861<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li>
20862<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li>
20863<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li>
20864</ul>
20865</li>
20866<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul>
20867<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li>
20868<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li>
20869<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li>
20870<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li>
20871</ul>
20872</li>
20873<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul>
20874<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li>
20875<li><img alt="Square output, 4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-square-ratio.png"/></li>
20876<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li>
20877<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
20878<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with
20879 each containing image data the other doesn't have.<wbr/></li>
20880</ul>
20881</li>
20882</ul>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070020883<p>If the coordinate system is <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> the width and height
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070020884of the crop region cannot be set to be smaller than
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070020885<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
20886<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>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070020887<p>If the coordinate system is <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> the width
20888and height of the crop region cannot be set to be smaller than
20889<code>floor( preCorrectionActiveArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>
20890and
20891<code>floor( preCorrectionActiveArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/>
20892respectively.<wbr/></p>
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080020893<p>The camera device may adjust the crop region to account for rounding and other hardware
20894requirements; the final crop region used will be included in the output capture result.<wbr/></p>
Shuzhen Wang37705612020-09-14 11:40:07 -070020895<p>The camera sensor output aspect ratio depends on factors such as output stream
20896combination and <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>,<wbr/> and shouldn't be adjusted by using
20897this control.<wbr/> And the camera device will treat different camera sensor output sizes
20898(potentially with in-sensor crop) as the same crop of
20899<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> As a result,<wbr/> the application shouldn't assume the
20900maximum crop region always maps to the same aspect ratio or field of view for the
20901sensor output.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080020902<p>Starting from API level 30,<wbr/> it's strongly recommended to use <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>
20903to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits
20904include better precision with optical-digital zoom combination,<wbr/> and ability to do
20905zoom-out from 1.<wbr/>0x.<wbr/> When using <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for zoom,<wbr/> the crop region in
Shuzhen Wang37705612020-09-14 11:40:07 -070020906the capture request should be left as the default activeArray size.<wbr/> The
Shuzhen Wangb6149792019-11-07 15:59:22 -080020907coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080020908preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/> See
20909<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080020910<p>For camera devices with the
20911<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
20912capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
20913<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
20914coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
20915<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070020916 </td>
20917 </tr>
20918
20919 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020920 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070020921 </tr>
20922 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020923 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070020924 <p>The output streams must maintain square pixels at all
Igor Murashkin0b080452013-12-27 15:30:25 -080020925times,<wbr/> no matter what the relative aspect ratios of the
20926crop region and the stream are.<wbr/> Negative values for
Igor Murashkin8aa2a112013-12-09 12:06:17 -080020927corner are allowed for raw output if full pixel array is
Igor Murashkin0b080452013-12-27 15:30:25 -080020928larger than active pixel array.<wbr/> Width and height may be
20929rounded to nearest larger supportable width,<wbr/> especially
20930for raw output,<wbr/> where only a few fixed scales may be
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070020931possible.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080020932<p>If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is supported by the HAL,<wbr/> the HAL must report the zoom
20933ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that
20934<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>(depending on whether <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> is supported) is used to
20935represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for
20936details.<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070020937<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020938 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020939 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080020940
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080020941 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080020942 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080020943
Eino-Ville Talvala9cbba082020-01-06 13:06:22 -080020944
20945 <tr class="entry" id="controls_android.scaler.rotateAndCrop">
20946 <td class="entry_name
20947 " rowspan="5">
20948 android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop
20949 </td>
20950 <td class="entry_type">
20951 <span class="entry_type_name entry_type_name_enum">byte</span>
20952
20953 <span class="entry_type_visibility"> [public]</span>
20954
20955
20956
20957
20958
20959 <ul class="entry_type_enum">
20960 <li>
20961 <span class="entry_type_enum_name">NONE (v3.5)</span>
20962 <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span>
20963 </li>
20964 <li>
20965 <span class="entry_type_enum_name">90 (v3.5)</span>
20966 <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped
20967to the original aspect ratio.<wbr/></p></span>
20968 </li>
20969 <li>
20970 <span class="entry_type_enum_name">180 (v3.5)</span>
20971 <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/> Since the aspect ratio does not
20972change,<wbr/> no cropping is performed.<wbr/></p></span>
20973 </li>
20974 <li>
20975 <span class="entry_type_enum_name">270 (v3.5)</span>
20976 <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped
20977to the original aspect ratio.<wbr/></p></span>
20978 </li>
20979 <li>
20980 <span class="entry_type_enum_name">AUTO (v3.5)</span>
20981 <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for
20982rotate-and-crop based on the application's support for resizability and the current
20983multi-window mode.<wbr/></p>
20984<p>If the application does not support resizing but the display mode for its main
20985Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>
20986or some other supported rotation value,<wbr/> depending on device configuration,<wbr/>
20987to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/>
20988<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p>
20989<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed
20990differently to ensure that coordinates are correctly handled for features like drawing
20991face detection boxes or passing in tap-to-focus coordinates.<wbr/> The camera API will
20992convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated
20993coordinate system to make the operation transparent for applications.<wbr/></p>
20994<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span>
20995 </li>
20996 </ul>
20997
20998 </td> <!-- entry_type -->
20999
21000 <td class="entry_description">
21001 <p>Whether a rotation-and-crop operation is applied to processed
21002outputs from the camera.<wbr/></p>
21003 </td>
21004
21005 <td class="entry_units">
21006 </td>
21007
21008 <td class="entry_range">
21009 <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p>
21010 </td>
21011
21012 <td class="entry_hal_version">
21013 <p>3.<wbr/>5</p>
21014 </td>
21015
21016 <td class="entry_tags">
21017 </td>
21018
21019 </tr>
21020 <tr class="entries_header">
21021 <th class="th_details" colspan="6">Details</th>
21022 </tr>
21023 <tr class="entry_cont">
21024 <td class="entry_details" colspan="6">
21025 <p>This control is primarily intended to help camera applications with no support for
21026multi-window modes to work correctly on devices where multi-window scenarios are
21027unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more
21028free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps
21029in landscape with pillarboxing).<wbr/></p>
21030<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API
21031to enable backwards-compatibility support for applications that do not support resizing
21032/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset
21033portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/> In addition,<wbr/>
21034<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> will always be available if this control
21035is supported by the device.<wbr/> If not supported,<wbr/> devices API level 30 or higher will always
21036list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p>
21037<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/>
21038several metadata fields will also be parsed differently to ensure that coordinates are
21039correctly handled for features like drawing face detection boxes or passing in
21040tap-to-focus coordinates.<wbr/> The camera API will convert positions in the active array
21041coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the
21042operation transparent for applications.<wbr/> The following controls are affected:</p>
21043<ul>
21044<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
21045<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
21046<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
21047<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
21048</ul>
21049<p>Capture results will contain the actual value selected by the API;
21050<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p>
21051<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the
21052backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/>
21053In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls
21054will continue to use the normal active array coordinates.<wbr/></p>
21055<p>Cropping and rotating is done after the application of digital zoom (via either
21056<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>),<wbr/> but before each individual
21057output is further cropped and scaled.<wbr/> It only affects processed outputs such as
21058YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/> It has no effect on RAW outputs.<wbr/></p>
21059<p>When <code>CROP_<wbr/>90</code> or <code>CROP_<wbr/>270</code> are selected,<wbr/> there is a significant loss to the field of
21060view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still
21061produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the
21062center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/> Only
2106356.<wbr/>25% of the original FOV is still visible.<wbr/> In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/>
21064the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/>
21065this is ~31.<wbr/>6%.<wbr/></p>
21066<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the
21067outputs for the following parameters:</p>
21068<ul>
21069<li>Sensor active array: <code>2000x1500</code></li>
21070<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li>
21071<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li>
21072<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li>
21073</ul>
21074<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p>
21075<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p>
21076<ul>
21077<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li>
21078<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li>
21079</ul>
21080<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p>
21081<ul>
21082<li>640x480 stream: top-left: <code>(781,<wbr/> 375)</code> on active array,<wbr/> size: <code>(640,<wbr/> 480)</code>,<wbr/> downscaled 1.<wbr/>17x from sensor pixels</li>
21083<li>1280x720 stream: top-left: <code>(711,<wbr/> 375)</code> on active array,<wbr/> size: <code>(1280,<wbr/> 720)</code>,<wbr/> upscaled 1.<wbr/>71x from sensor pixels</li>
21084</ul>
21085 </td>
21086 </tr>
21087
21088 <tr class="entries_header">
21089 <th class="th_details" colspan="6">HAL Implementation Details</th>
21090 </tr>
21091 <tr class="entry_cont">
21092 <td class="entry_details" colspan="6">
21093 <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default
21094value in all the capture request templates by the HAL.<wbr/> The camera service will
21095translate AUTO to a specific rotation value based on the current application's
21096multi-window state and its support of resizability.<wbr/></p>
21097<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all
21098capture request and result fields should be kept in the active array coordinate frame.<wbr/>
21099Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera
21100service.<wbr/></p>
21101 </td>
21102 </tr>
21103
21104 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21105 <!-- end of entry -->
21106
Jayant Chowdhary33211462021-07-21 11:26:51 -070021107
21108 <tr class="entry" id="controls_android.scaler.cropRegionSet">
21109 <td class="entry_name
21110 " rowspan="3">
21111 android.<wbr/>scaler.<wbr/>crop<wbr/>Region<wbr/>Set
21112 </td>
21113 <td class="entry_type">
21114 <span class="entry_type_name entry_type_name_enum">byte</span>
21115
21116 <span class="entry_type_visibility"> [fwk_only as boolean]</span>
21117
21118
21119
21120
21121
21122 <ul class="entry_type_enum">
21123 <li>
Jayant Chowdharyee096d62021-09-13 11:29:10 -070021124 <span class="entry_type_enum_name">FALSE (v3.2)</span>
21125 <span class="entry_type_enum_notes"><p>Crop region (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has not been set by the
Jayant Chowdhary33211462021-07-21 11:26:51 -070021126camera client.<wbr/></p></span>
21127 </li>
21128 <li>
Jayant Chowdharyee096d62021-09-13 11:29:10 -070021129 <span class="entry_type_enum_name">TRUE (v3.2)</span>
21130 <span class="entry_type_enum_notes"><p>Scaler crop regions (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has been set by the camera
Jayant Chowdhary33211462021-07-21 11:26:51 -070021131client.<wbr/></p></span>
21132 </li>
21133 </ul>
21134
21135 </td> <!-- entry_type -->
21136
21137 <td class="entry_description">
21138 <p>Framework-only private key which informs camera fwk that the scaler crop region
21139(<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) has been set by the client and it need
21140not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to MAXIMUM_<wbr/>RESOLUTION.<wbr/></p>
21141 </td>
21142
21143 <td class="entry_units">
21144 </td>
21145
21146 <td class="entry_range">
21147 </td>
21148
21149 <td class="entry_hal_version">
21150 <p>3.<wbr/>2</p>
21151 </td>
21152
21153 <td class="entry_tags">
21154 </td>
21155
21156 </tr>
21157 <tr class="entries_header">
21158 <th class="th_details" colspan="6">Details</th>
21159 </tr>
21160 <tr class="entry_cont">
21161 <td class="entry_details" colspan="6">
21162 <p>This must be set to TRUE by the camera2 java fwk when the camera client sets
21163<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
21164 </td>
21165 </tr>
21166
21167
21168 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21169 <!-- end of entry -->
21170
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021171
21172
21173 <!-- end of kind -->
21174 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021175 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021176
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070021177 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021178 <tr>
21179 <th class="th_name">Property Name</th>
21180 <th class="th_type">Type</th>
21181 <th class="th_description">Description</th>
21182 <th class="th_units">Units</th>
21183 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021184 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021185 <th class="th_tags">Tags</th>
21186 </tr>
21187 </thead>
21188
21189 <tbody>
21190
21191
21192
21193
21194
21195
21196
21197
21198
21199
21200 <tr class="entry" id="static_android.scaler.availableFormats">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021201 <td class="entry_name
21202 entry_name_deprecated
21203 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080021204 android.<wbr/>scaler.<wbr/>available<wbr/>Formats
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021205 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021206 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080021207 <span class="entry_type_name entry_type_name_enum">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021208 <span class="entry_type_container">x</span>
21209
21210 <span class="entry_type_array">
21211 n
21212 </span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070021213 <span class="entry_type_visibility"> [hidden as imageFormat]</span>
21214
21215
Igor Murashkinca256272014-10-02 15:27:09 -070021216
Igor Murashkin6c936c12014-05-13 14:51:49 -070021217 <span class="entry_type_deprecated">[deprecated] </span>
21218
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021219
21220 <ul class="entry_type_enum">
21221 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080021222 <span class="entry_type_enum_name">RAW16 (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070021223 <span class="entry_type_enum_optional">[optional]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021224 <span class="entry_type_enum_value">0x20</span>
Ruben Brunk8f48c182014-02-04 18:27:20 -080021225 <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070021226buffers with 16-bit pixels.<wbr/></p>
21227<p>Buffers of this format are typically expected to have a
Shuzhen Wang75273722018-10-15 12:00:13 -070021228Color Filter Array (CFA) layout,<wbr/> which is given in
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070021229<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
21230CFAs that are not representable by a format in
21231<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
21232use this format.<wbr/></p>
Ruben Brunk8f48c182014-02-04 18:27:20 -080021233<p>Buffers of this format will also follow the constraints given for
21234RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
Ruben Brunkae4f9c02015-06-12 16:43:51 -070021235<p>This format is intended to give users access to the full contents
21236of the buffers coming directly from the image sensor prior to any
21237cropping or scaling operations,<wbr/> and all coordinate systems for
21238metadata used for this format are relative to the size of the
21239active region of the image sensor before any geometric distortion
21240correction has been applied (i.<wbr/>e.<wbr/>
Eino-Ville Talvala7d09eff2015-06-16 11:36:01 -070021241<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
Ruben Brunkae4f9c02015-06-12 16:43:51 -070021242dimensions for this format are limited to the full dimensions of
21243the 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
Eino-Ville Talvala7d09eff2015-06-16 11:36:01 -070021244<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
Ruben Brunkae4f9c02015-06-12 16:43:51 -070021245only supported output size).<wbr/></p>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080021246<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
21247the full set of performance guarantees.<wbr/></p></span>
Ruben Brunk8f48c182014-02-04 18:27:20 -080021248 </li>
21249 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080021250 <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070021251 <span class="entry_type_enum_optional">[optional]</span>
Ruben Brunk8f48c182014-02-04 18:27:20 -080021252 <span class="entry_type_enum_value">0x24</span>
Yin-Chia Yeh366da5b2015-12-06 21:42:35 -080021253 <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
21254<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
21255as referred in public API) is a format for raw image buffers
21256coming from an image sensor.<wbr/></p>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070021257<p>The actual structure of buffers of this format is
Ruben Brunk8f48c182014-02-04 18:27:20 -080021258platform-specific,<wbr/> but must follow several constraints:</p>
21259<ol>
21260<li>No image post-processing operations may have been applied to
21261buffers of this type.<wbr/> These buffers contain raw image data coming
21262directly from the image sensor.<wbr/></li>
21263<li>If a buffer of this format is passed to the camera device for
21264reprocessing,<wbr/> the resulting images will be identical to the images
21265produced if the buffer had come directly from the sensor and was
21266processed with the same settings.<wbr/></li>
21267</ol>
21268<p>The intended use for this format is to allow access to the native
21269raw format buffers coming directly from the camera sensor without
21270any additional conversions or decrease in framerate.<wbr/></p>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080021271<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
Ruben Brunk8f48c182014-02-04 18:27:20 -080021272performance guarantees.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021273 </li>
21274 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080021275 <span class="entry_type_enum_name">YV12 (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070021276 <span class="entry_type_enum_optional">[optional]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021277 <span class="entry_type_enum_value">0x32315659</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080021278 <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021279 </li>
21280 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080021281 <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070021282 <span class="entry_type_enum_optional">[optional]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021283 <span class="entry_type_enum_value">0x11</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080021284 <span class="entry_type_enum_notes"><p>NV21</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021285 </li>
21286 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080021287 <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
Zhijun Hec2eebff2013-05-16 17:49:35 -070021288 <span class="entry_type_enum_value">0x22</span>
Zhijun Heb8317e22014-01-16 09:47:07 -080021289 <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
Zhijun Hec2eebff2013-05-16 17:49:35 -070021290 </li>
21291 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080021292 <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
Zhijun Hec2eebff2013-05-16 17:49:35 -070021293 <span class="entry_type_enum_value">0x23</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080021294 <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
Zhijun Hec2eebff2013-05-16 17:49:35 -070021295 </li>
21296 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080021297 <span class="entry_type_enum_name">BLOB (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021298 <span class="entry_type_enum_value">0x21</span>
Zhijun Heb8317e22014-01-16 09:47:07 -080021299 <span class="entry_type_enum_notes"><p>JPEG format</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021300 </li>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070021301 <li>
21302 <span class="entry_type_enum_name">RAW10 (v3.4)</span>
21303 <span class="entry_type_enum_value">0x25</span>
21304 <span class="entry_type_enum_notes"><p>RAW10</p></span>
21305 </li>
21306 <li>
21307 <span class="entry_type_enum_name">RAW12 (v3.4)</span>
21308 <span class="entry_type_enum_value">0x26</span>
21309 <span class="entry_type_enum_notes"><p>RAW12</p></span>
21310 </li>
21311 <li>
21312 <span class="entry_type_enum_name">Y8 (v3.4)</span>
21313 <span class="entry_type_enum_value">0x20203859</span>
21314 <span class="entry_type_enum_notes"><p>Y8</p></span>
21315 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021316 </ul>
21317
21318 </td> <!-- entry_type -->
21319
21320 <td class="entry_description">
Zhijun Heb8317e22014-01-16 09:47:07 -080021321 <p>The list of image formats that are supported by this
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021322camera device for output streams.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021323 </td>
21324
21325 <td class="entry_units">
21326 </td>
21327
21328 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021329 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021330 </td>
21331
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021332 <td class="entry_hal_version">
21333 <p>3.<wbr/>2</p>
21334 </td>
21335
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021336 <td class="entry_tags">
21337 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080021338 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021339 </ul>
21340 </td>
21341
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021342 </tr>
Zhijun Heb8317e22014-01-16 09:47:07 -080021343 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021344 <th class="th_details" colspan="6">Details</th>
Zhijun Heb8317e22014-01-16 09:47:07 -080021345 </tr>
21346 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021347 <td class="entry_details" colspan="6">
Zhijun Heb8317e22014-01-16 09:47:07 -080021348 <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
21349<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
21350 </td>
21351 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021352
Zhijun Heb8317e22014-01-16 09:47:07 -080021353 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021354 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun Heb8317e22014-01-16 09:47:07 -080021355 </tr>
21356 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021357 <td class="entry_details" colspan="6">
Zhijun Heb8317e22014-01-16 09:47:07 -080021358 <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080021359system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h.<wbr/></p>
Zhijun Heb8317e22014-01-16 09:47:07 -080021360<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
21361gralloc module will select a format based on the usage flags provided
21362by the camera HAL device and the other endpoint of the stream.<wbr/> It is
21363usually used by preview and recording streams,<wbr/> where the application doesn't
21364need access the image data.<wbr/></p>
21365<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
Shuzhen Wang75273722018-10-15 12:00:13 -070021366needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/> For a MONOCHROME
21367camera device,<wbr/> the pixel value of Cb and Cr planes is 128.<wbr/></p>
Zhijun Heb8317e22014-01-16 09:47:07 -080021368<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
Ruben Brunk8f48c182014-02-04 18:27:20 -080021369<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
21370recommended that any information used by the camera device when
21371processing images is fully expressed by the result metadata
21372for that image buffer.<wbr/></p>
Zhijun Heb8317e22014-01-16 09:47:07 -080021373 </td>
21374 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021375
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021376 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021377 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021378
21379
21380 <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021381 <td class="entry_name
21382 entry_name_deprecated
21383 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080021384 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021385 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021386 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080021387 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021388 <span class="entry_type_container">x</span>
21389
21390 <span class="entry_type_array">
21391 n
21392 </span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070021393 <span class="entry_type_visibility"> [hidden]</span>
21394
21395
Igor Murashkinca256272014-10-02 15:27:09 -070021396
Igor Murashkin6c936c12014-05-13 14:51:49 -070021397 <span class="entry_type_deprecated">[deprecated] </span>
21398
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021399
21400
21401 </td> <!-- entry_type -->
21402
21403 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080021404 <p>The minimum frame duration that is supported
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080021405for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021406 </td>
21407
21408 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070021409 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021410 </td>
21411
21412 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021413 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
21414 <p>TODO: Remove property.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021415 </td>
21416
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021417 <td class="entry_hal_version">
21418 <p>3.<wbr/>2</p>
21419 </td>
21420
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021421 <td class="entry_tags">
21422 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080021423 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021424 </ul>
21425 </td>
21426
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021427 </tr>
21428 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021429 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021430 </tr>
21431 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021432 <td class="entry_details" colspan="6">
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080021433 <p>This corresponds to the minimum steady-state frame duration when only
21434that JPEG stream is active and captured in a burst,<wbr/> with all
21435processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
21436<p>When multiple streams are configured,<wbr/> the minimum
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021437frame duration will be &gt;= max(individual stream min
Igor Murashkin0b080452013-12-27 15:30:25 -080021438durations)</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021439 </td>
21440 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021441
21442
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021443 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021444 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021445
21446
21447 <tr class="entry" id="static_android.scaler.availableJpegSizes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021448 <td class="entry_name
21449 entry_name_deprecated
21450 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080021451 android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021452 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021453 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080021454 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021455 <span class="entry_type_container">x</span>
21456
21457 <span class="entry_type_array">
21458 n x 2
21459 </span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070021460 <span class="entry_type_visibility"> [hidden as size]</span>
21461
21462
Igor Murashkinca256272014-10-02 15:27:09 -070021463
Igor Murashkin6c936c12014-05-13 14:51:49 -070021464 <span class="entry_type_deprecated">[deprecated] </span>
21465
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021466
21467
21468 </td> <!-- entry_type -->
21469
21470 <td class="entry_description">
Zhijun Heb8317e22014-01-16 09:47:07 -080021471 <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021472 </td>
21473
21474 <td class="entry_units">
21475 </td>
21476
21477 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021478 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
21479 <p>TODO: Remove property.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021480 </td>
21481
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021482 <td class="entry_hal_version">
21483 <p>3.<wbr/>2</p>
21484 </td>
21485
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021486 <td class="entry_tags">
21487 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080021488 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021489 </ul>
21490 </td>
21491
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021492 </tr>
Zhijun Heb8317e22014-01-16 09:47:07 -080021493 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021494 <th class="th_details" colspan="6">Details</th>
Zhijun Heb8317e22014-01-16 09:47:07 -080021495 </tr>
21496 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021497 <td class="entry_details" colspan="6">
Zhijun Heb8317e22014-01-16 09:47:07 -080021498 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
21499sensor 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>
21500 </td>
21501 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021502
Zhijun Heb8317e22014-01-16 09:47:07 -080021503 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021504 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun Heb8317e22014-01-16 09:47:07 -080021505 </tr>
21506 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021507 <td class="entry_details" colspan="6">
Zhijun Heb8317e22014-01-16 09:47:07 -080021508 <p>The HAL must include sensor maximum resolution
21509(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
21510and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
21511 </td>
21512 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021513
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021514 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021515 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021516
21517
21518 <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021519 <td class="entry_name
Shuzhen Wangb6149792019-11-07 15:59:22 -080021520 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080021521 android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021522 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021523 <td class="entry_type">
Igor Murashkinf11a4df2013-05-07 10:00:46 -070021524 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021525
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070021526 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021527
21528
Igor Murashkinca256272014-10-02 15:27:09 -070021529 <span class="entry_type_hwlevel">[legacy] </span>
21530
Igor Murashkin6c936c12014-05-13 14:51:49 -070021531
21532
21533
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021534 </td> <!-- entry_type -->
21535
21536 <td class="entry_description">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070021537 <p>The maximum ratio between both active area width
21538and crop region width,<wbr/> and active area height and
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070021539crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021540 </td>
21541
21542 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070021543 Zoom scale factor
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021544 </td>
21545
21546 <td class="entry_range">
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080021547 <p>&gt;=1</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021548 </td>
21549
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021550 <td class="entry_hal_version">
21551 <p>3.<wbr/>2</p>
21552 </td>
21553
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021554 <td class="entry_tags">
Igor Murashkinf11a4df2013-05-07 10:00:46 -070021555 <ul class="entry_tags">
21556 <li><a href="#tag_BC">BC</a></li>
21557 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021558 </td>
21559
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021560 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070021561 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021562 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070021563 </tr>
21564 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021565 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070021566 <p>This represents the maximum amount of zooming possible by
21567the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
21568window size.<wbr/></p>
21569<p>Crop regions that have a width or height that is smaller
21570than this ratio allows will be rounded up to the minimum
21571allowed size by the camera device.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080021572<p>Starting from API level 30,<wbr/> when using <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to zoom in or out,<wbr/>
21573the application must use <a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a> to query both the minimum and
21574maximum zoom ratio.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070021575 </td>
21576 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021577
Shuzhen Wangb6149792019-11-07 15:59:22 -080021578 <tr class="entries_header">
21579 <th class="th_details" colspan="6">HAL Implementation Details</th>
21580 </tr>
21581 <tr class="entry_cont">
21582 <td class="entry_details" colspan="6">
Shuzhen Wangbd3ad5f2021-06-30 16:09:35 -070021583 <p>If the HAL supports <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> this value must be equal to or less than
21584the maximum supported zoomRatio specified in <a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a>.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080021585 </td>
21586 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021587
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021588 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021589 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021590
21591
21592 <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021593 <td class="entry_name
21594 entry_name_deprecated
21595 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080021596 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021597 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021598 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080021599 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021600 <span class="entry_type_container">x</span>
21601
21602 <span class="entry_type_array">
21603 n
21604 </span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070021605 <span class="entry_type_visibility"> [hidden]</span>
21606
21607
Igor Murashkinca256272014-10-02 15:27:09 -070021608
Igor Murashkin6c936c12014-05-13 14:51:49 -070021609 <span class="entry_type_deprecated">[deprecated] </span>
21610
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021611
21612
21613 </td> <!-- entry_type -->
21614
21615 <td class="entry_description">
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080021616 <p>For each available processed output size (defined in
21617<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
21618minimum supportable frame duration for that size.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021619 </td>
21620
21621 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070021622 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021623 </td>
21624
21625 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021626 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021627 </td>
21628
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021629 <td class="entry_hal_version">
21630 <p>3.<wbr/>2</p>
21631 </td>
21632
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021633 <td class="entry_tags">
21634 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080021635 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021636 </ul>
21637 </td>
21638
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021639 </tr>
21640 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021641 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021642 </tr>
21643 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021644 <td class="entry_details" colspan="6">
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080021645 <p>This should correspond to the frame duration when only that processed
21646stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
21647set to FAST.<wbr/></p>
21648<p>When multiple streams are configured,<wbr/> the minimum frame duration will
21649be &gt;= max(individual stream min durations).<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021650 </td>
21651 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021652
21653
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021654 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021655 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021656
21657
21658 <tr class="entry" id="static_android.scaler.availableProcessedSizes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021659 <td class="entry_name
21660 entry_name_deprecated
21661 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080021662 android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021663 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021664 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080021665 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021666 <span class="entry_type_container">x</span>
21667
21668 <span class="entry_type_array">
21669 n x 2
21670 </span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070021671 <span class="entry_type_visibility"> [hidden as size]</span>
21672
21673
Igor Murashkinca256272014-10-02 15:27:09 -070021674
Igor Murashkin6c936c12014-05-13 14:51:49 -070021675 <span class="entry_type_deprecated">[deprecated] </span>
21676
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021677
21678
21679 </td> <!-- entry_type -->
21680
21681 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080021682 <p>The resolutions available for use with
21683processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
21684platform opaque YUV/<wbr/>RGB streams to the GPU or video
Zhijun Heb8317e22014-01-16 09:47:07 -080021685encoders.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021686 </td>
21687
21688 <td class="entry_units">
21689 </td>
21690
21691 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021692 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021693 </td>
21694
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021695 <td class="entry_hal_version">
21696 <p>3.<wbr/>2</p>
21697 </td>
21698
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021699 <td class="entry_tags">
21700 <ul class="entry_tags">
21701 <li><a href="#tag_BC">BC</a></li>
21702 </ul>
21703 </td>
21704
21705 </tr>
21706 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021707 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021708 </tr>
21709 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021710 <td class="entry_details" colspan="6">
Zhijun Heb8317e22014-01-16 09:47:07 -080021711 <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
21712<p>For a given use case,<wbr/> the actual maximum supported resolution
21713may be lower than what is listed here,<wbr/> depending on the destination
21714Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
21715the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
21716smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
21717can provide.<wbr/></p>
21718<p>Please reference the documentation for the image data destination to
21719check if it limits the maximum size for image data.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021720 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021721 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021722
Zhijun Heb8317e22014-01-16 09:47:07 -080021723 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021724 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun Heb8317e22014-01-16 09:47:07 -080021725 </tr>
21726 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021727 <td class="entry_details" colspan="6">
Zhijun Heb8317e22014-01-16 09:47:07 -080021728 <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/>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080021729the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
Zhijun Heb8317e22014-01-16 09:47:07 -080021730and each below resolution if it is smaller than or equal to the sensor
21731maximum resolution (if they are not listed in JPEG sizes already):</p>
21732<ul>
21733<li>240p (320 x 240)</li>
21734<li>480p (640 x 480)</li>
21735<li>720p (1280 x 720)</li>
21736<li>1080p (1920 x 1080)</li>
21737</ul>
21738<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/>
21739the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
21740 </td>
21741 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021742
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021743 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021744 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021745
21746
21747 <tr class="entry" id="static_android.scaler.availableRawMinDurations">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021748 <td class="entry_name
21749 entry_name_deprecated
21750 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080021751 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021752 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021753 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080021754 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021755 <span class="entry_type_container">x</span>
21756
21757 <span class="entry_type_array">
21758 n
21759 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070021760 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021761
21762
Igor Murashkinca256272014-10-02 15:27:09 -070021763
Igor Murashkin6c936c12014-05-13 14:51:49 -070021764 <span class="entry_type_deprecated">[deprecated] </span>
21765
21766
21767
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021768 </td> <!-- entry_type -->
21769
21770 <td class="entry_description">
Zhijun Hebdc94c42014-01-21 18:28:30 -080021771 <p>For each available raw output size (defined in
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080021772<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
21773supportable frame duration for that size.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021774 </td>
21775
21776 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070021777 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021778 </td>
21779
21780 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021781 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021782 </td>
21783
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021784 <td class="entry_hal_version">
21785 <p>3.<wbr/>2</p>
21786 </td>
21787
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021788 <td class="entry_tags">
21789 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080021790 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021791 </ul>
21792 </td>
21793
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021794 </tr>
21795 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021796 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021797 </tr>
21798 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021799 <td class="entry_details" colspan="6">
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080021800 <p>Should correspond to the frame duration when only the raw stream is
21801active.<wbr/></p>
21802<p>When multiple streams are configured,<wbr/> the minimum
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021803frame duration will be &gt;= max(individual stream min
Igor Murashkin0b080452013-12-27 15:30:25 -080021804durations)</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021805 </td>
21806 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021807
21808
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021809 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021810 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021811
21812
21813 <tr class="entry" id="static_android.scaler.availableRawSizes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021814 <td class="entry_name
21815 entry_name_deprecated
21816 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080021817 android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021818 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021819 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080021820 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021821 <span class="entry_type_container">x</span>
21822
21823 <span class="entry_type_array">
21824 n x 2
21825 </span>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070021826 <span class="entry_type_visibility"> [system as size]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021827
21828
Igor Murashkinca256272014-10-02 15:27:09 -070021829
Igor Murashkin6c936c12014-05-13 14:51:49 -070021830 <span class="entry_type_deprecated">[deprecated] </span>
21831
21832
21833
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021834 </td> <!-- entry_type -->
21835
21836 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080021837 <p>The resolutions available for use with raw
21838sensor output streams,<wbr/> listed as width,<wbr/>
21839height</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021840 </td>
21841
21842 <td class="entry_units">
21843 </td>
21844
21845 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021846 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021847 </td>
21848
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021849 <td class="entry_hal_version">
21850 <p>3.<wbr/>2</p>
21851 </td>
21852
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021853 <td class="entry_tags">
21854 </td>
21855
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021856 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080021857
21858
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021859 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080021860 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080021861
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021862
21863 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
Igor Murashkin6c936c12014-05-13 14:51:49 -070021864 <td class="entry_name
21865 " rowspan="5">
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021866 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
21867 </td>
21868 <td class="entry_type">
21869 <span class="entry_type_name">int32</span>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021870
Chien-Yu Chen9e48beb2015-03-18 18:33:17 -070021871 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070021872
21873
Igor Murashkinca256272014-10-02 15:27:09 -070021874
Igor Murashkin6c936c12014-05-13 14:51:49 -070021875
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021876
21877
21878 </td> <!-- entry_type -->
21879
21880 <td class="entry_description">
21881 <p>The mapping of image formats that are supported by this
21882camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
21883 </td>
21884
21885 <td class="entry_units">
21886 </td>
21887
21888 <td class="entry_range">
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021889 </td>
21890
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021891 <td class="entry_hal_version">
21892 <p>3.<wbr/>2</p>
21893 </td>
21894
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021895 <td class="entry_tags">
Zhijun He51379152015-04-24 17:59:50 -070021896 <ul class="entry_tags">
21897 <li><a href="#tag_REPROC">REPROC</a></li>
21898 </ul>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021899 </td>
21900
21901 </tr>
21902 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021903 <th class="th_details" colspan="6">Details</th>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021904 </tr>
21905 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021906 <td class="entry_details" colspan="6">
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021907 <p>All camera devices with at least 1
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080021908<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021909available input format.<wbr/></p>
21910<p>The camera device will support the following map of formats,<wbr/>
Zhijun He41d6f042015-01-15 18:17:24 -080021911if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021912<table>
21913<thead>
21914<tr>
21915<th align="left">Input Format</th>
21916<th align="left">Output Format</th>
21917<th align="left">Capability</th>
21918</tr>
21919</thead>
21920<tbody>
21921<tr>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070021922<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
21923<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070021924<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021925</tr>
21926<tr>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070021927<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
21928<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>
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070021929<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021930</tr>
21931<tr>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070021932<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>
21933<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
Zhijun He41d6f042015-01-15 18:17:24 -080021934<td align="left">YUV_<wbr/>REPROCESSING</td>
21935</tr>
21936<tr>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070021937<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>
21938<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>
Zhijun He41d6f042015-01-15 18:17:24 -080021939<td align="left">YUV_<wbr/>REPROCESSING</td>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021940</tr>
21941</tbody>
21942</table>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070021943<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/> A
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070021944PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
21945with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
21946<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070021947or 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>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021948<p>Attempting to configure an input stream with output streams not
21949listed as available in this map is not valid.<wbr/></p>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070021950<p>Additionally,<wbr/> if the camera device is MONOCHROME with Y8 support,<wbr/> it will also support
21951the following map of formats if its dependent capability
21952(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
21953<table>
21954<thead>
21955<tr>
21956<th align="left">Input Format</th>
21957<th align="left">Output Format</th>
21958<th align="left">Capability</th>
21959</tr>
21960</thead>
21961<tbody>
21962<tr>
21963<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
21964<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
21965<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
21966</tr>
21967<tr>
21968<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
21969<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
21970<td align="left">YUV_<wbr/>REPROCESSING</td>
21971</tr>
21972<tr>
21973<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
21974<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></td>
21975<td align="left">YUV_<wbr/>REPROCESSING</td>
21976</tr>
21977</tbody>
21978</table>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021979 </td>
21980 </tr>
21981
21982 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021983 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021984 </tr>
21985 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080021986 <td class="entry_details" colspan="6">
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080021987 <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>libsystem/<wbr/>include/<wbr/>system/<wbr/>graphics-base.<wbr/>h</code> for a
21988definition of the image format enumerations.<wbr/> The PRIVATE format refers to the
Chien-Yu Chen9e48beb2015-03-18 18:33:17 -070021989HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
21990the actual format by using the gralloc usage flags.<wbr/>
Zhijun He41d6f042015-01-15 18:17:24 -080021991For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
21992processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
21993See camera3.<wbr/>h for more details.<wbr/></p>
Zhijun He3e6b6182014-04-24 11:17:25 -070021994<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080021995The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
21996<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
21997inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
21998<p>A code sample to read/<wbr/>write this encoding (with a device that
Zhijun He41d6f042015-01-15 18:17:24 -080021999supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
22000and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080022001<pre><code>//<wbr/> reading
22002int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
22003for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
22004 int32_<wbr/>t format = contents[i++];
22005 int32_<wbr/>t length = contents[i++];
22006 int32_<wbr/>t output_<wbr/>formats[length];
22007 memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
22008 length * sizeof(int32_<wbr/>t));
22009 i += length;
22010}
22011
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070022012//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080022013int32_<wbr/>t[] contents = {
Zhijun He41d6f042015-01-15 18:17:24 -080022014 IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
22015 YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080022016};
22017update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
22018 sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
22019</code></pre>
22020<p>If the HAL claims to support any of the capabilities listed in the
22021above details,<wbr/> then it must also support all the input-output
22022combinations listed for that capability.<wbr/> It can optionally support
22023additional formats if it so chooses.<wbr/></p>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080022024 </td>
22025 </tr>
22026
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022027 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin7f15ddd2014-02-04 18:02:27 -080022028 <!-- end of entry -->
22029
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022030
22031 <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
Igor Murashkin6c936c12014-05-13 14:51:49 -070022032 <td class="entry_name
22033 " rowspan="5">
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022034 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
22035 </td>
22036 <td class="entry_type">
22037 <span class="entry_type_name entry_type_name_enum">int32</span>
22038 <span class="entry_type_container">x</span>
22039
22040 <span class="entry_type_array">
22041 n x 4
22042 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070022043 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022044
22045
Igor Murashkinca256272014-10-02 15:27:09 -070022046 <span class="entry_type_hwlevel">[legacy] </span>
22047
Igor Murashkin6c936c12014-05-13 14:51:49 -070022048
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022049
22050 <ul class="entry_type_enum">
22051 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080022052 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022053 </li>
22054 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080022055 <span class="entry_type_enum_name">INPUT (v3.2)</span>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022056 </li>
22057 </ul>
22058
22059 </td> <!-- entry_type -->
22060
22061 <td class="entry_description">
22062 <p>The available stream configurations that this
22063camera device supports
22064(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
22065 </td>
22066
22067 <td class="entry_units">
22068 </td>
22069
22070 <td class="entry_range">
22071 </td>
22072
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022073 <td class="entry_hal_version">
22074 <p>3.<wbr/>2</p>
22075 </td>
22076
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022077 <td class="entry_tags">
22078 </td>
22079
22080 </tr>
22081 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022082 <th class="th_details" colspan="6">Details</th>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022083 </tr>
22084 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022085 <td class="entry_details" colspan="6">
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022086 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
22087tuples.<wbr/></p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022088<p>For a given use case,<wbr/> the actual maximum supported resolution
22089may be lower than what is listed here,<wbr/> depending on the destination
22090Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
22091the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
22092smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
22093can provide.<wbr/></p>
22094<p>Please reference the documentation for the image data destination to
22095check if it limits the maximum size for image data.<wbr/></p>
22096<p>Not all output formats may be supported in a configuration with
22097an input stream of a particular format.<wbr/> For more details,<wbr/> see
22098<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
Shuzhen Wangaedacea2021-05-28 10:08:34 -070022099<p>For applications targeting SDK version older than 31,<wbr/> the following table
22100describes the minimum required output stream configurations based on the hardware level
22101(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022102<table>
22103<thead>
22104<tr>
22105<th align="center">Format</th>
22106<th align="center">Size</th>
22107<th align="center">Hardware Level</th>
22108<th align="center">Notes</th>
22109</tr>
22110</thead>
22111<tbody>
22112<tr>
22113<td align="center">JPEG</td>
22114<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
22115<td align="center">Any</td>
22116<td align="center"></td>
22117</tr>
22118<tr>
22119<td align="center">JPEG</td>
22120<td align="center">1920x1080 (1080p)</td>
22121<td align="center">Any</td>
22122<td align="center">if 1080p &lt;= activeArraySize</td>
22123</tr>
22124<tr>
22125<td align="center">JPEG</td>
22126<td align="center">1280x720 (720)</td>
22127<td align="center">Any</td>
22128<td align="center">if 720p &lt;= activeArraySize</td>
22129</tr>
22130<tr>
22131<td align="center">JPEG</td>
22132<td align="center">640x480 (480p)</td>
22133<td align="center">Any</td>
22134<td align="center">if 480p &lt;= activeArraySize</td>
22135</tr>
22136<tr>
22137<td align="center">JPEG</td>
22138<td align="center">320x240 (240p)</td>
22139<td align="center">Any</td>
22140<td align="center">if 240p &lt;= activeArraySize</td>
22141</tr>
22142<tr>
22143<td align="center">YUV_<wbr/>420_<wbr/>888</td>
22144<td align="center">all output sizes available for JPEG</td>
22145<td align="center">FULL</td>
22146<td align="center"></td>
22147</tr>
22148<tr>
22149<td align="center">YUV_<wbr/>420_<wbr/>888</td>
22150<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
22151<td align="center">LIMITED</td>
22152<td align="center"></td>
22153</tr>
22154<tr>
22155<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
22156<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
22157<td align="center">Any</td>
22158<td align="center"></td>
22159</tr>
22160</tbody>
22161</table>
Shuzhen Wangaedacea2021-05-28 10:08:34 -070022162<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device declares to be
Shuzhen Wangba40f062021-12-07 03:02:47 +000022163media performance class 12 or higher by setting
Shuzhen Wang16c73e42022-06-13 09:42:11 -070022164<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
Shuzhen Wangaedacea2021-05-28 10:08:34 -070022165the primary camera devices (first rear/<wbr/>front camera in the camera ID list) will not
22166support JPEG sizes smaller than 1080p.<wbr/> If the application configures a JPEG stream
22167smaller than 1080p,<wbr/> the camera device will round up the JPEG image size to at least
221681080p.<wbr/> The requirements for IMPLEMENTATION_<wbr/>DEFINED and YUV_<wbr/>420_<wbr/>888 stay the same.<wbr/>
22169This new minimum required output stream configurations are illustrated by the table below:</p>
Shuzhen Wang2d329d42021-04-09 11:40:27 -070022170<table>
22171<thead>
22172<tr>
22173<th align="center">Format</th>
22174<th align="center">Size</th>
22175<th align="center">Hardware Level</th>
22176<th align="center">Notes</th>
22177</tr>
22178</thead>
22179<tbody>
22180<tr>
22181<td align="center">JPEG</td>
22182<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
22183<td align="center">Any</td>
22184<td align="center"></td>
22185</tr>
22186<tr>
22187<td align="center">JPEG</td>
22188<td align="center">1920x1080 (1080p)</td>
22189<td align="center">Any</td>
22190<td align="center">if 1080p &lt;= activeArraySize</td>
22191</tr>
22192<tr>
22193<td align="center">YUV_<wbr/>420_<wbr/>888</td>
22194<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
22195<td align="center">FULL</td>
22196<td align="center"></td>
22197</tr>
22198<tr>
22199<td align="center">YUV_<wbr/>420_<wbr/>888</td>
22200<td align="center">1920x1080 (1080p)</td>
22201<td align="center">FULL</td>
22202<td align="center">if 1080p &lt;= activeArraySize</td>
22203</tr>
22204<tr>
22205<td align="center">YUV_<wbr/>420_<wbr/>888</td>
22206<td align="center">1280x720 (720)</td>
22207<td align="center">FULL</td>
22208<td align="center">if 720p &lt;= activeArraySize</td>
22209</tr>
22210<tr>
22211<td align="center">YUV_<wbr/>420_<wbr/>888</td>
22212<td align="center">640x480 (480p)</td>
22213<td align="center">FULL</td>
22214<td align="center">if 480p &lt;= activeArraySize</td>
22215</tr>
22216<tr>
22217<td align="center">YUV_<wbr/>420_<wbr/>888</td>
22218<td align="center">320x240 (240p)</td>
22219<td align="center">FULL</td>
22220<td align="center">if 240p &lt;= activeArraySize</td>
22221</tr>
22222<tr>
22223<td align="center">YUV_<wbr/>420_<wbr/>888</td>
22224<td align="center">all output sizes available for FULL hardware level,<wbr/> up to the maximum video size</td>
22225<td align="center">LIMITED</td>
22226<td align="center"></td>
22227</tr>
22228<tr>
22229<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
22230<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
22231<td align="center">Any</td>
22232<td align="center"></td>
22233</tr>
22234</tbody>
22235</table>
Shuzhen Wangaedacea2021-05-28 10:08:34 -070022236<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device doesn't declare
Shuzhen Wangba40f062021-12-07 03:02:47 +000022237to be media performance class 12 or better by setting
Shuzhen Wang16c73e42022-06-13 09:42:11 -070022238<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
Shuzhen Wangba40f062021-12-07 03:02:47 +000022239or if the camera device isn't a primary rear/<wbr/>front camera,<wbr/> the minimum required output
22240stream configurations are the same as for applications targeting SDK version older than
2224131.<wbr/></p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022242<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
22243mandatory stream configurations on a per-capability basis.<wbr/></p>
Yin-Chia Yeh60231262019-01-23 15:25:41 -080022244<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability for
22245downscaling from larger resolution to smaller,<wbr/> and the QCIF resolution sometimes is not
22246fully supported due to this limitation on devices with high-resolution image sensors.<wbr/>
22247Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other
22248stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/>
22249and capture session creation will fail if it is not.<wbr/></p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022250 </td>
22251 </tr>
22252
22253 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022254 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022255 </tr>
22256 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022257 <td class="entry_details" colspan="6">
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022258 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
22259of sensor maximum resolution for JPEG formats (regardless of hardware
22260level).<wbr/></p>
22261<p>(The following is a rewording of the above required table):</p>
Zhijun He5a1276a2014-06-02 16:46:03 -070022262<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
22263<ul>
22264<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
22265(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
22266(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/>
22267it does not have to be included in the supported JPEG sizes.<wbr/></li>
22268<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
22269the dimensions being a multiple of 16.<wbr/></li>
22270</ul>
22271<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
22272However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
22273resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
22274additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
22275if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
22276ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
222773264x2448.<wbr/></p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022278<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/>
22279the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
22280here as output streams.<wbr/></p>
22281<p>It must also include each below resolution if it is smaller than or
Shuzhen Wangaedacea2021-05-28 10:08:34 -070022282equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022283formats),<wbr/> as output streams:</p>
22284<ul>
22285<li>240p (320 x 240)</li>
22286<li>480p (640 x 480)</li>
22287<li>720p (1280 x 720)</li>
22288<li>1080p (1920 x 1080)</li>
22289</ul>
Shuzhen Wangba40f062021-12-07 03:02:47 +000022290<p>Note that for primary cameras (first rear/<wbr/>front facing camera in the camera ID list)
Shuzhen Wang16c73e42022-06-13 09:42:11 -070022291on a device with <a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> set to
Shuzhen Wangba40f062021-12-07 03:02:47 +00002229231 or larger,<wbr/> camera framework filters out JPEG sizes smaller than 1080p depending on
Shuzhen Wangaedacea2021-05-28 10:08:34 -070022293applications' targetSdkLevel.<wbr/> The camera HAL must still support the smaller JPEG sizes
Shuzhen Wangba40f062021-12-07 03:02:47 +000022294to maintain backward compatibility.<wbr/></p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022295<p>For LIMITED capability devices
22296(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
22297the HAL only has to list up to the maximum video size
22298supported by the device.<wbr/></p>
22299<p>Regardless of hardware level,<wbr/> every output resolution available for
22300YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070022301<p>This supersedes the following fields,<wbr/> which are now deprecated:</p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022302<ul>
22303<li>availableFormats</li>
22304<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
22305</ul>
22306 </td>
22307 </tr>
22308
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022309 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022310 <!-- end of entry -->
22311
22312
22313 <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
Igor Murashkin6c936c12014-05-13 14:51:49 -070022314 <td class="entry_name
22315 " rowspan="3">
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022316 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
22317 </td>
22318 <td class="entry_type">
22319 <span class="entry_type_name">int64</span>
22320 <span class="entry_type_container">x</span>
22321
22322 <span class="entry_type_array">
22323 4 x n
22324 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070022325 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022326
22327
Igor Murashkinca256272014-10-02 15:27:09 -070022328 <span class="entry_type_hwlevel">[legacy] </span>
22329
Igor Murashkin6c936c12014-05-13 14:51:49 -070022330
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022331
22332
22333 </td> <!-- entry_type -->
22334
22335 <td class="entry_description">
22336 <p>This lists the minimum frame duration for each
22337format/<wbr/>size combination.<wbr/></p>
22338 </td>
22339
22340 <td class="entry_units">
22341 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
22342 </td>
22343
22344 <td class="entry_range">
22345 </td>
22346
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022347 <td class="entry_hal_version">
22348 <p>3.<wbr/>2</p>
22349 </td>
22350
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022351 <td class="entry_tags">
22352 <ul class="entry_tags">
Zhijun He5fb671c2014-05-21 17:51:05 -070022353 <li><a href="#tag_V1">V1</a></li>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022354 </ul>
22355 </td>
22356
22357 </tr>
22358 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022359 <th class="th_details" colspan="6">Details</th>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022360 </tr>
22361 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022362 <td class="entry_details" colspan="6">
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022363 <p>This should correspond to the frame duration when only that
22364stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
22365set to either OFF or FAST.<wbr/></p>
22366<p>When multiple streams are used in a request,<wbr/> the minimum frame
22367duration will be max(individual stream min durations).<wbr/></p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022368<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
22369<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
22370calculating the max frame rate.<wbr/></p>
22371 </td>
22372 </tr>
22373
22374
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022375 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022376 <!-- end of entry -->
22377
22378
22379 <tr class="entry" id="static_android.scaler.availableStallDurations">
Igor Murashkin6c936c12014-05-13 14:51:49 -070022380 <td class="entry_name
22381 " rowspan="5">
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022382 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
22383 </td>
22384 <td class="entry_type">
22385 <span class="entry_type_name">int64</span>
22386 <span class="entry_type_container">x</span>
22387
22388 <span class="entry_type_array">
22389 4 x n
22390 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070022391 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022392
22393
Igor Murashkinca256272014-10-02 15:27:09 -070022394 <span class="entry_type_hwlevel">[legacy] </span>
22395
Igor Murashkin6c936c12014-05-13 14:51:49 -070022396
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022397
22398
22399 </td> <!-- entry_type -->
22400
22401 <td class="entry_description">
22402 <p>This lists the maximum stall duration for each
Zhijun He51379152015-04-24 17:59:50 -070022403output format/<wbr/>size combination.<wbr/></p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022404 </td>
22405
22406 <td class="entry_units">
22407 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
22408 </td>
22409
22410 <td class="entry_range">
22411 </td>
22412
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022413 <td class="entry_hal_version">
22414 <p>3.<wbr/>2</p>
22415 </td>
22416
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022417 <td class="entry_tags">
22418 <ul class="entry_tags">
Zhijun He5fb671c2014-05-21 17:51:05 -070022419 <li><a href="#tag_V1">V1</a></li>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022420 </ul>
22421 </td>
22422
22423 </tr>
22424 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022425 <th class="th_details" colspan="6">Details</th>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022426 </tr>
22427 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022428 <td class="entry_details" colspan="6">
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022429 <p>A stall duration is how much extra time would get added
22430to the normal minimum frame duration for a repeating request
22431that has streams with non-zero stall.<wbr/></p>
22432<p>For example,<wbr/> consider JPEG captures which have the following
22433characteristics:</p>
22434<ul>
22435<li>JPEG streams act like processed YUV streams in requests for which
22436they are not included; in requests in which they are directly
22437referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
22438JPEG stream requires the underlying YUV data to always be ready for
22439use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
22440frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
22441<li>The JPEG processor can run concurrently to the rest of the camera
22442pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
22443</ul>
22444<p>In other words,<wbr/> using a repeating YUV request would result
22445in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
22446JPEG request is submitted periodically,<wbr/> the frame rate will stay
22447at 30 FPS (as long as we wait for the previous JPEG to return each
22448time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
22449the frame rate will drop from 30 FPS.<wbr/></p>
22450<p>In general,<wbr/> submitting a new request with a non-0 stall time
22451stream will <em>not</em> cause a frame rate drop unless there are still
22452outstanding buffers for that stream from previous requests.<wbr/></p>
22453<p>Submitting a repeating request with streams (call this <code>S</code>)
22454is the same as setting the minimum frame duration from
22455the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
22456the maximum stall duration for <code>S</code>.<wbr/></p>
22457<p>If interleaving requests with and without a stall duration,<wbr/>
22458a request will stall by the maximum of the remaining times
22459for each can-stall stream with outstanding buffers.<wbr/></p>
22460<p>This means that a stalling request will not have an exposure start
22461until the stall has completed.<wbr/></p>
22462<p>This should correspond to the stall duration when only that stream is
22463active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
22464or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
22465effectively results in an indeterminate stall duration for all
22466streams in a request (the regular stall calculation rules are
22467ignored).<wbr/></p>
22468<p>The following formats may always have a stall duration:</p>
22469<ul>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070022470<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
22471<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022472</ul>
22473<p>The following formats will never have a stall duration:</p>
22474<ul>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070022475<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>
22476<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022477<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070022478<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#Y8">ImageFormat#Y8</a></li>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022479</ul>
22480<p>All other formats may or may not have an allowed stall duration on
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080022481a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022482for more details.<wbr/></p>
22483<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
22484calculating the max frame rate (absent stalls).<wbr/></p>
22485 </td>
22486 </tr>
22487
22488 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022489 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022490 </tr>
22491 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022492 <td class="entry_details" colspan="6">
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022493 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
Yin-Chia Yehf9801f42015-03-20 16:53:19 -070022494(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
22495and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022496 </td>
22497 </tr>
22498
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022499 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080022500 <!-- end of entry -->
22501
Igor Murashkin6c936c12014-05-13 14:51:49 -070022502
22503 <tr class="entry" id="static_android.scaler.streamConfigurationMap">
22504 <td class="entry_name
22505 " rowspan="5">
22506 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
22507 </td>
22508 <td class="entry_type">
22509 <span class="entry_type_name">int32</span>
22510
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070022511 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022512
22513 <span class="entry_type_synthetic">[synthetic] </span>
22514
Igor Murashkinca256272014-10-02 15:27:09 -070022515 <span class="entry_type_hwlevel">[legacy] </span>
22516
Igor Murashkin6c936c12014-05-13 14:51:49 -070022517
22518
22519
22520 </td> <!-- entry_type -->
22521
22522 <td class="entry_description">
22523 <p>The available stream configurations that this
22524camera device supports; also includes the minimum frame durations
22525and the stall durations for each format/<wbr/>size combination.<wbr/></p>
22526 </td>
22527
22528 <td class="entry_units">
22529 </td>
22530
22531 <td class="entry_range">
22532 </td>
22533
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022534 <td class="entry_hal_version">
22535 <p>3.<wbr/>2</p>
22536 </td>
22537
Igor Murashkin6c936c12014-05-13 14:51:49 -070022538 <td class="entry_tags">
22539 </td>
22540
22541 </tr>
22542 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022543 <th class="th_details" colspan="6">Details</th>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022544 </tr>
22545 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022546 <td class="entry_details" colspan="6">
Igor Murashkin6c936c12014-05-13 14:51:49 -070022547 <p>All camera devices will support sensor maximum resolution (defined by
22548<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>
22549<p>For a given use case,<wbr/> the actual maximum supported resolution
22550may be lower than what is listed here,<wbr/> depending on the destination
22551Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
22552the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
22553smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
22554can provide.<wbr/></p>
22555<p>Please reference the documentation for the image data destination to
22556check if it limits the maximum size for image data.<wbr/></p>
Shuzhen Wang16c73e42022-06-13 09:42:11 -070022557<p>For applications targeting SDK version older than 31,<wbr/> the following table
22558describes the minimum required output stream configurations based on the
22559hardware level (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):
22560Format |<wbr/> Size |<wbr/> Hardware Level |<wbr/> Notes
22561:-------------------------------------------------:|<wbr/>:--------------------------------------------:|<wbr/>:--------------:|<wbr/>:--------------:
22562<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> |<wbr/> <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1) |<wbr/> Any |<wbr/>
22563<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> |<wbr/> 1920x1080 (1080p) |<wbr/> Any |<wbr/> if 1080p &lt;= activeArraySize
22564<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> |<wbr/> 1280x720 (720p) |<wbr/> Any |<wbr/> if 720p &lt;= activeArraySize
22565<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> |<wbr/> 640x480 (480p) |<wbr/> Any |<wbr/> if 480p &lt;= activeArraySize
22566<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> |<wbr/> 320x240 (240p) |<wbr/> Any |<wbr/> if 240p &lt;= activeArraySize
22567<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> |<wbr/> all output sizes available for JPEG |<wbr/> FULL |<wbr/>
22568<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> |<wbr/> all output sizes available for JPEG,<wbr/> up to the maximum video size |<wbr/> LIMITED |<wbr/>
22569<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> |<wbr/> same as YUV_<wbr/>420_<wbr/>888 |<wbr/> Any |<wbr/></p>
22570<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device declares to be
22571media performance class 12 or higher by setting
22572<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
22573the primary camera devices (first rear/<wbr/>front camera in the camera ID list) will not
22574support JPEG sizes smaller than 1080p.<wbr/> If the application configures a JPEG stream
22575smaller than 1080p,<wbr/> the camera device will round up the JPEG image size to at least
225761080p.<wbr/> The requirements for IMPLEMENTATION_<wbr/>DEFINED and YUV_<wbr/>420_<wbr/>888 stay the same.<wbr/>
22577This new minimum required output stream configurations are illustrated by the table below:</p>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022578<table>
22579<thead>
22580<tr>
22581<th align="center">Format</th>
22582<th align="center">Size</th>
22583<th align="center">Hardware Level</th>
22584<th align="center">Notes</th>
22585</tr>
22586</thead>
22587<tbody>
22588<tr>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070022589<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
Yin-Chia Yehfc57a582015-07-08 14:07:39 -070022590<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022591<td align="center">Any</td>
22592<td align="center"></td>
22593</tr>
22594<tr>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070022595<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022596<td align="center">1920x1080 (1080p)</td>
22597<td align="center">Any</td>
22598<td align="center">if 1080p &lt;= activeArraySize</td>
22599</tr>
22600<tr>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070022601<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>
Shuzhen Wang16c73e42022-06-13 09:42:11 -070022602<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022603<td align="center">FULL</td>
22604<td align="center"></td>
22605</tr>
22606<tr>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070022607<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>
Shuzhen Wang16c73e42022-06-13 09:42:11 -070022608<td align="center">1920x1080 (1080p)</td>
22609<td align="center">FULL</td>
22610<td align="center">if 1080p &lt;= activeArraySize</td>
22611</tr>
22612<tr>
22613<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>
22614<td align="center">1280x720 (720)</td>
22615<td align="center">FULL</td>
22616<td align="center">if 720p &lt;= activeArraySize</td>
22617</tr>
22618<tr>
22619<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>
22620<td align="center">640x480 (480p)</td>
22621<td align="center">FULL</td>
22622<td align="center">if 480p &lt;= activeArraySize</td>
22623</tr>
22624<tr>
22625<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>
22626<td align="center">320x240 (240p)</td>
22627<td align="center">FULL</td>
22628<td align="center">if 240p &lt;= activeArraySize</td>
22629</tr>
22630<tr>
22631<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>
22632<td align="center">all output sizes available for FULL hardware level,<wbr/> up to the maximum video size</td>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022633<td align="center">LIMITED</td>
22634<td align="center"></td>
22635</tr>
22636<tr>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070022637<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022638<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
22639<td align="center">Any</td>
22640<td align="center"></td>
22641</tr>
22642</tbody>
22643</table>
Shuzhen Wang16c73e42022-06-13 09:42:11 -070022644<p>For applications targeting SDK version 31 or newer,<wbr/> if the mobile device doesn't declare
22645to be media performance class 12 or better by setting
22646<a href="https://developer.android.com/reference/android/os/Build.VERSION.html#MEDIA_PERFORMANCE_CLASS">VERSION#MEDIA_<wbr/>PERFORMANCE_<wbr/>CLASS</a> to be 31 or larger,<wbr/>
22647or if the camera device isn't a primary rear/<wbr/>front camera,<wbr/> the minimum required output
22648stream configurations are the same as for applications targeting SDK version older than
2264931.<wbr/></p>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070022650<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
22651stream configurations on a per-capability basis.<wbr/></p>
Yin-Chia Yehfc57a582015-07-08 14:07:39 -070022652<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
22653<ul>
22654<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
22655(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
22656(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/>
22657it does not have to be included in the supported JPEG sizes.<wbr/></li>
22658<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
22659the dimensions being a multiple of 16.<wbr/>
22660Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
22661However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
22662resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
22663additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
22664if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
22665ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
226663264x2448.<wbr/></li>
22667</ul>
Yin-Chia Yeh60231262019-01-23 15:25:41 -080022668<p>Exception on 176x144 (QCIF) resolution: camera devices usually have a fixed capability on
22669downscaling from larger resolution to smaller ones,<wbr/> and the QCIF resolution can sometimes
22670not be fully supported due to this limitation on devices with high-resolution image
22671sensors.<wbr/> Therefore,<wbr/> trying to configure a QCIF resolution stream together with any other
22672stream larger than 1920x1080 resolution (either width or height) might not be supported,<wbr/>
22673and capture session creation will fail if it is not.<wbr/></p>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022674 </td>
22675 </tr>
22676
22677 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022678 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022679 </tr>
22680 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022681 <td class="entry_details" colspan="6">
Igor Murashkin6c936c12014-05-13 14:51:49 -070022682 <p>Do not set this property directly
22683(it is synthetic and will not be available at the HAL layer);
22684set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
Igor Murashkinefff0de2014-05-14 17:30:49 -070022685<p>Not all output formats may be supported in a configuration with
22686an input stream of a particular format.<wbr/> For more details,<wbr/> see
22687<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022688<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
22689of sensor maximum resolution for JPEG formats (regardless of hardware
22690level).<wbr/></p>
22691<p>(The following is a rewording of the above required table):</p>
22692<p>The HAL must include sensor maximum resolution (defined by
22693<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
22694<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/>
22695the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
22696here as output streams.<wbr/></p>
22697<p>It must also include each below resolution if it is smaller than or
22698equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
22699formats),<wbr/> as output streams:</p>
22700<ul>
22701<li>240p (320 x 240)</li>
22702<li>480p (640 x 480)</li>
22703<li>720p (1280 x 720)</li>
22704<li>1080p (1920 x 1080)</li>
22705</ul>
Shuzhen Wang16c73e42022-06-13 09:42:11 -070022706<p>Note that for Performance Class 12 or higher primary cameras (first rear/<wbr/>front facing
22707camera in the camera ID list),<wbr/> camera framework filters out JPEG sizes smaller than
227081080p depending on applications' targetSdkLevel.<wbr/> The camera HAL must still support the
22709smaller JPEG sizes to maintain backward comopatibility.<wbr/></p>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022710<p>For LIMITED capability devices
22711(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
22712the HAL only has to list up to the maximum video size
22713supported by the device.<wbr/></p>
22714<p>Regardless of hardware level,<wbr/> every output resolution available for
22715YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070022716<p>This supersedes the following fields,<wbr/> which are now deprecated:</p>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022717<ul>
22718<li>availableFormats</li>
22719<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
22720</ul>
22721 </td>
22722 </tr>
22723
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022724 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin6c936c12014-05-13 14:51:49 -070022725 <!-- end of entry -->
22726
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022727
22728 <tr class="entry" id="static_android.scaler.croppingType">
22729 <td class="entry_name
Shuzhen Wangb6149792019-11-07 15:59:22 -080022730 " rowspan="5">
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022731 android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
22732 </td>
22733 <td class="entry_type">
22734 <span class="entry_type_name entry_type_name_enum">byte</span>
22735
22736 <span class="entry_type_visibility"> [public]</span>
22737
22738
Igor Murashkinca256272014-10-02 15:27:09 -070022739 <span class="entry_type_hwlevel">[legacy] </span>
22740
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022741
22742
22743 <ul class="entry_type_enum">
22744 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080022745 <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070022746 <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022747 </li>
22748 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080022749 <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070022750 <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022751 </li>
22752 </ul>
22753
22754 </td> <!-- entry_type -->
22755
22756 <td class="entry_description">
22757 <p>The crop type that this camera device supports.<wbr/></p>
22758 </td>
22759
22760 <td class="entry_units">
22761 </td>
22762
22763 <td class="entry_range">
22764 </td>
22765
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022766 <td class="entry_hal_version">
22767 <p>3.<wbr/>2</p>
22768 </td>
22769
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022770 <td class="entry_tags">
22771 </td>
22772
22773 </tr>
22774 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022775 <th class="th_details" colspan="6">Details</th>
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022776 </tr>
22777 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022778 <td class="entry_details" colspan="6">
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022779 <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
22780device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
22781crop 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>)
22782and keep the crop region width and height unchanged.<wbr/> The camera device will return the
22783final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
22784<p>Camera devices that support FREEFORM cropping will support any crop region that
22785is inside of the active array.<wbr/> The camera device will apply the same crop region and
22786return 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>
Shuzhen Wangb6149792019-11-07 15:59:22 -080022787<p>Starting from API level 30,<wbr/></p>
22788<ul>
22789<li>If the camera device supports FREEFORM cropping,<wbr/> in order to do FREEFORM cropping,<wbr/> the
22790application must set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> and use <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
22791for zoom.<wbr/></li>
22792<li>To do CENTER_<wbr/>ONLY zoom,<wbr/> the application has below 2 options:<ol>
22793<li>Set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0; adjust zoom by <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li>
22794<li>Adjust zoom by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>; use <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to crop
22795the field of view vertically (letterboxing) or horizontally (pillarboxing),<wbr/> but not
22796windowboxing.<wbr/></li>
22797</ol>
22798</li>
22799<li>Setting <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to values different than 1.<wbr/>0 and
Shuzhen Wang0ca63162020-11-30 20:11:27 -080022800<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be windowboxing at the same time are not supported.<wbr/> In this
22801case,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be the active
22802array.<wbr/></li>
Shuzhen Wangb6149792019-11-07 15:59:22 -080022803</ul>
Eino-Ville Talvala593b8212015-06-30 16:33:57 -070022804<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022805 </td>
22806 </tr>
22807
Shuzhen Wangb6149792019-11-07 15:59:22 -080022808 <tr class="entries_header">
22809 <th class="th_details" colspan="6">HAL Implementation Details</th>
22810 </tr>
22811 <tr class="entry_cont">
22812 <td class="entry_details" colspan="6">
22813 <p>If the HAL supports <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> this tag must be set to CENTER_<wbr/>ONLY.<wbr/></p>
22814 </td>
22815 </tr>
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022816
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080022817 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun Hed0f25ca2014-05-21 15:29:07 -070022818 <!-- end of entry -->
22819
Emilian Peev9c7b5d32018-09-18 14:01:55 +010022820
22821 <tr class="entry" id="static_android.scaler.availableRecommendedStreamConfigurations">
22822 <td class="entry_name
22823 " rowspan="5">
22824 android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations
22825 </td>
22826 <td class="entry_type">
22827 <span class="entry_type_name entry_type_name_enum">int32</span>
22828 <span class="entry_type_container">x</span>
22829
22830 <span class="entry_type_array">
22831 n x 5
22832 </span>
22833 <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span>
22834
22835
22836
22837
22838
22839 <ul class="entry_type_enum">
22840 <li>
22841 <span class="entry_type_enum_name">PREVIEW (v3.4)</span>
22842 <span class="entry_type_enum_value">0x0</span>
22843 <span class="entry_type_enum_notes"><p>Preview must only include non-stalling processed stream configurations with
Emilian Peeveb314d92019-03-12 18:11:30 -070022844output formats like
22845<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
22846<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a>,<wbr/> etc.<wbr/></p></span>
Emilian Peev9c7b5d32018-09-18 14:01:55 +010022847 </li>
22848 <li>
22849 <span class="entry_type_enum_name">RECORD (v3.4)</span>
22850 <span class="entry_type_enum_value">0x1</span>
22851 <span class="entry_type_enum_notes"><p>Video record must include stream configurations that match the advertised
22852supported media profiles <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> with
22853IMPLEMENTATION_<wbr/>DEFINED format.<wbr/></p></span>
22854 </li>
22855 <li>
22856 <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.4)</span>
22857 <span class="entry_type_enum_value">0x2</span>
22858 <span class="entry_type_enum_notes"><p>Video snapshot must include stream configurations at least as big as
Emilian Peeveb314d92019-03-12 18:11:30 -070022859the maximum RECORD resolutions and only with
22860<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/>
22861Additionally the configurations shouldn't cause preview glitches and also be able to
22862run at 30 fps.<wbr/></p></span>
Emilian Peev9c7b5d32018-09-18 14:01:55 +010022863 </li>
22864 <li>
22865 <span class="entry_type_enum_name">SNAPSHOT (v3.4)</span>
22866 <span class="entry_type_enum_value">0x3</span>
22867 <span class="entry_type_enum_notes"><p>Recommended snapshot stream configurations must include at least one with
Emilian Peeveb314d92019-03-12 18:11:30 -070022868size close to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> and
22869<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>.<wbr/>
22870Taking into account restrictions on aspect ratio,<wbr/> alignment etc.<wbr/> the area of the
22871maximum suggested size shouldn’t be less than 97% of the sensor array size area.<wbr/></p></span>
Emilian Peev9c7b5d32018-09-18 14:01:55 +010022872 </li>
22873 <li>
22874 <span class="entry_type_enum_name">ZSL (v3.4)</span>
22875 <span class="entry_type_enum_value">0x4</span>
22876 <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended input stream configurations must only be advertised with
22877ZSL along with other processed and/<wbr/>or stalling output formats.<wbr/></p></span>
22878 </li>
22879 <li>
22880 <span class="entry_type_enum_name">RAW (v3.4)</span>
22881 <span class="entry_type_enum_value">0x5</span>
22882 <span class="entry_type_enum_notes"><p>If supported,<wbr/> recommended raw stream configurations must only include RAW based
22883output formats.<wbr/></p></span>
22884 </li>
22885 <li>
Emilian Peeveb314d92019-03-12 18:11:30 -070022886 <span class="entry_type_enum_name">LOW_LATENCY_SNAPSHOT (v3.4)</span>
Emilian Peev9c7b5d32018-09-18 14:01:55 +010022887 <span class="entry_type_enum_value">0x6</span>
Emilian Peeveb314d92019-03-12 18:11:30 -070022888 <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended low latency stream configurations must have
22889end-to-end latency that does not exceed 200 ms.<wbr/> under standard operating conditions
22890(reasonable light levels,<wbr/> not loaded system) and using template
22891TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE.<wbr/> This is primarily for listing configurations for the
22892<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG output format</a>
22893however other supported output formats can be added as well.<wbr/></p></span>
22894 </li>
22895 <li>
22896 <span class="entry_type_enum_name">PUBLIC_END (v3.4)</span>
22897 <span class="entry_type_enum_value">0x7</span>
Emilian Peev9c7b5d32018-09-18 14:01:55 +010022898 </li>
22899 <li>
Emilian Peev276c7222021-11-12 18:07:39 -080022900 <span class="entry_type_enum_name">10BIT_OUTPUT (v3.8)</span>
22901 <span class="entry_type_enum_value">0x8</span>
22902 <span class="entry_type_enum_notes"><p>If supported,<wbr/> the recommended 10-bit output stream configurations must include
22903a subset of the advertised <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YCBCR_P010">ImageFormat#YCBCR_<wbr/>P010</a> and
22904<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> outputs that are optimized for power
22905and performance when registered along with a supported 10-bit dynamic range profile.<wbr/>
22906see android.<wbr/>hardware.<wbr/>camera2.<wbr/>params.<wbr/>Output<wbr/>Configuration#set<wbr/>Dynamic<wbr/>Range<wbr/>Profile for
22907details.<wbr/></p></span>
22908 </li>
22909 <li>
22910 <span class="entry_type_enum_name">PUBLIC_END_3_8 (v3.8)</span>
22911 <span class="entry_type_enum_value">0x9</span>
22912 </li>
22913 <li>
Emilian Peev9c7b5d32018-09-18 14:01:55 +010022914 <span class="entry_type_enum_name">VENDOR_START (v3.4)</span>
22915 <span class="entry_type_enum_value">0x18</span>
22916 <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span>
22917 </li>
22918 </ul>
22919
22920 </td> <!-- entry_type -->
22921
22922 <td class="entry_description">
22923 <p>Recommended stream configurations for common client use cases.<wbr/></p>
22924 </td>
22925
22926 <td class="entry_units">
22927 </td>
22928
22929 <td class="entry_range">
22930 </td>
22931
22932 <td class="entry_hal_version">
22933 <p>3.<wbr/>4</p>
22934 </td>
22935
22936 <td class="entry_tags">
22937 </td>
22938
22939 </tr>
22940 <tr class="entries_header">
22941 <th class="th_details" colspan="6">Details</th>
22942 </tr>
22943 <tr class="entry_cont">
22944 <td class="entry_details" colspan="6">
22945 <p>Optional subset of the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> that contains
22946similar tuples listed as
22947(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/>
22948Camera devices will be able to suggest particular stream configurations which are
22949power and performance efficient for specific use cases.<wbr/> For more information about
22950retrieving the suggestions see
22951<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
22952 </td>
22953 </tr>
22954
22955 <tr class="entries_header">
22956 <th class="th_details" colspan="6">HAL Implementation Details</th>
22957 </tr>
22958 <tr class="entry_cont">
22959 <td class="entry_details" colspan="6">
22960 <p>There are some requirements that need to be considered regarding the usecases and the
22961suggested configurations:</p>
22962<ul>
22963<li>If <a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a> is set,<wbr/> then recommended
22964stream configurations must be present for all mandatory usecases PREVIEW,<wbr/>
22965SNAPSHOT,<wbr/> RECORD,<wbr/> VIDEO_<wbr/>SNAPSHOT.<wbr/> ZSL and RAW are
22966required depending on device capabilities see <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></li>
22967<li>Non-existing usecases and non-vendor usecases within the range
22968(RAW : VENDOR_<wbr/>START] are prohibited as well as stream configurations not
22969present in the exhaustive <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> list.<wbr/></li>
22970</ul>
22971<p>For example,<wbr/> in case the camera device supports only 4K and 1080p and both resolutions are
22972recommended for the mandatory usecases except preview which can run efficiently only
22973on 1080p.<wbr/> The array may look like this:</p>
22974<p>[3840,<wbr/> 2160,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/>
22975 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/>
22976 (1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/>
22977 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/>
22978 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT),<wbr/></p>
22979<p>1920,<wbr/> 1080,<wbr/> HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED,<wbr/>
22980 ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>OUTPUT,<wbr/>
22981 (1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>PREVIEW |<wbr/>
22982 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>RECORD |<wbr/>
22983 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>SNAPSHOT |<wbr/>
22984 1&lt;&lt; ANDROID_<wbr/>SCALER_<wbr/>AVAILABLE_<wbr/>RECOMMENDED_<wbr/>STREAM_<wbr/>CONFIGURATIONS_<wbr/>VIDEO_<wbr/>SNAPSHOT)]</p>
22985 </td>
22986 </tr>
22987
22988 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22989 <!-- end of entry -->
22990
22991
22992 <tr class="entry" id="static_android.scaler.availableRecommendedInputOutputFormatsMap">
22993 <td class="entry_name
22994 " rowspan="5">
22995 android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
22996 </td>
22997 <td class="entry_type">
22998 <span class="entry_type_name">int32</span>
22999
23000 <span class="entry_type_visibility"> [ndk_public as reprocessFormatsMap]</span>
23001
23002
23003
23004
23005
23006
23007 </td> <!-- entry_type -->
23008
23009 <td class="entry_description">
23010 <p>Recommended mappings of image formats that are supported by this
23011camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
23012 </td>
23013
23014 <td class="entry_units">
23015 </td>
23016
23017 <td class="entry_range">
23018 </td>
23019
23020 <td class="entry_hal_version">
23021 <p>3.<wbr/>4</p>
23022 </td>
23023
23024 <td class="entry_tags">
23025 <ul class="entry_tags">
23026 <li><a href="#tag_REPROC">REPROC</a></li>
23027 </ul>
23028 </td>
23029
23030 </tr>
23031 <tr class="entries_header">
23032 <th class="th_details" colspan="6">Details</th>
23033 </tr>
23034 <tr class="entry_cont">
23035 <td class="entry_details" colspan="6">
23036 <p>This is a recommended subset of the complete list of mappings found in
23037<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/> The same requirements apply here as well.<wbr/>
23038The list however doesn't need to contain all available and supported mappings.<wbr/> Instead of
23039this developers must list only recommended and efficient entries.<wbr/>
23040If set,<wbr/> the information will be available in the ZERO_<wbr/>SHUTTER_<wbr/>LAG recommended stream
23041configuration see
23042<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
23043 </td>
23044 </tr>
23045
23046 <tr class="entries_header">
23047 <th class="th_details" colspan="6">HAL Implementation Details</th>
23048 </tr>
23049 <tr class="entry_cont">
23050 <td class="entry_details" colspan="6">
23051 <p>For a code sample of the required data encoding please check
23052<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
23053 </td>
23054 </tr>
23055
23056 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23057 <!-- end of entry -->
23058
Emilian Peevfdc55632018-11-14 17:50:18 +000023059
23060 <tr class="entry" id="static_android.scaler.mandatoryStreamCombinations">
23061 <td class="entry_name
23062 " rowspan="5">
23063 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Stream<wbr/>Combinations
23064 </td>
23065 <td class="entry_type">
23066 <span class="entry_type_name">int32</span>
23067 <span class="entry_type_container">x</span>
23068
23069 <span class="entry_type_array">
23070 n
23071 </span>
23072 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
23073
23074 <span class="entry_type_synthetic">[synthetic] </span>
23075
23076 <span class="entry_type_hwlevel">[limited] </span>
23077
23078
23079
23080
23081 </td> <!-- entry_type -->
23082
23083 <td class="entry_description">
23084 <p>An array of mandatory stream combinations generated according to the camera device
23085<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#INFO_SUPPORTED_HARDWARE_LEVEL">Camera<wbr/>Characteristics#INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL</a>
23086and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES</a>.<wbr/>
23087This is an app-readable conversion of the mandatory stream combination
23088<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p>
23089 </td>
23090
23091 <td class="entry_units">
23092 </td>
23093
23094 <td class="entry_range">
23095 </td>
23096
23097 <td class="entry_hal_version">
23098 <p>3.<wbr/>2</p>
23099 </td>
23100
23101 <td class="entry_tags">
23102 </td>
23103
23104 </tr>
23105 <tr class="entries_header">
23106 <th class="th_details" colspan="6">Details</th>
23107 </tr>
23108 <tr class="entry_cont">
23109 <td class="entry_details" colspan="6">
23110 <p>The array of
23111<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
23112generated according to the documented
23113<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> based on
23114specific device level and capabilities.<wbr/>
23115Clients can use the array as a quick reference to find an appropriate camera stream
23116combination.<wbr/>
23117As per documentation,<wbr/> the stream combinations with given PREVIEW,<wbr/> RECORD and
23118MAXIMUM resolutions and anything smaller from the list given by
23119<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> are
23120guaranteed to work.<wbr/>
Shuzhen Wang648774d2019-03-07 08:38:51 -080023121For a physical camera not independently exposed in
23122<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getCameraIdList">CameraManager#getCameraIdList</a>,<wbr/> the mandatory stream
23123combinations for that physical camera Id are also generated,<wbr/> so that the application can
23124configure them as physical streams via the logical camera.<wbr/>
23125The mandatory stream combination array will be {@code null} in case the device is not
23126backward compatible.<wbr/></p>
Emilian Peevfdc55632018-11-14 17:50:18 +000023127 </td>
23128 </tr>
23129
23130 <tr class="entries_header">
23131 <th class="th_details" colspan="6">HAL Implementation Details</th>
23132 </tr>
23133 <tr class="entry_cont">
23134 <td class="entry_details" colspan="6">
23135 <p>Do not set this property directly
23136(it is synthetic and will not be available at the HAL layer).<wbr/></p>
23137 </td>
23138 </tr>
23139
23140 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23141 <!-- end of entry -->
23142
Eino-Ville Talvala9cbba082020-01-06 13:06:22 -080023143
Jayant Chowdhary828a0202020-03-13 13:57:38 -070023144 <tr class="entry" id="static_android.scaler.mandatoryConcurrentStreamCombinations">
23145 <td class="entry_name
23146 " rowspan="5">
23147 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Concurrent<wbr/>Stream<wbr/>Combinations
23148 </td>
23149 <td class="entry_type">
23150 <span class="entry_type_name">int32</span>
23151 <span class="entry_type_container">x</span>
23152
23153 <span class="entry_type_array">
23154 n
23155 </span>
23156 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
23157
23158 <span class="entry_type_synthetic">[synthetic] </span>
23159
23160
23161
23162
23163
23164 </td> <!-- entry_type -->
23165
23166 <td class="entry_description">
23167 <p>An array of mandatory concurrent stream combinations.<wbr/>
23168This is an app-readable conversion of the concurrent mandatory stream combination
23169<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p>
23170 </td>
23171
23172 <td class="entry_units">
23173 </td>
23174
23175 <td class="entry_range">
23176 </td>
23177
23178 <td class="entry_hal_version">
23179 <p>3.<wbr/>2</p>
23180 </td>
23181
23182 <td class="entry_tags">
23183 </td>
23184
23185 </tr>
23186 <tr class="entries_header">
23187 <th class="th_details" colspan="6">Details</th>
23188 </tr>
23189 <tr class="entry_cont">
23190 <td class="entry_details" colspan="6">
23191 <p>The array of
23192<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
23193generated according to the documented
23194<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> for each
23195device which has its Id present in the set returned by
23196<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/>
23197Clients can use the array as a quick reference to find an appropriate camera stream
23198combination.<wbr/>
23199The mandatory stream combination array will be {@code null} in case the device is not a
23200part of at least one set of combinations returned by
23201<a href="https://developer.android.com/reference/android/hardware/camera2/CameraManager.html#getConcurrentCameraIds">CameraManager#getConcurrentCameraIds</a>.<wbr/></p>
23202 </td>
23203 </tr>
23204
23205 <tr class="entries_header">
23206 <th class="th_details" colspan="6">HAL Implementation Details</th>
23207 </tr>
23208 <tr class="entry_cont">
23209 <td class="entry_details" colspan="6">
23210 <p>Do not set this property directly
23211(it is synthetic and will not be available at the HAL layer).<wbr/></p>
23212 </td>
23213 </tr>
23214
23215 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23216 <!-- end of entry -->
23217
23218
Eino-Ville Talvala9cbba082020-01-06 13:06:22 -080023219 <tr class="entry" id="static_android.scaler.availableRotateAndCropModes">
23220 <td class="entry_name
23221 " rowspan="3">
23222 android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes
23223 </td>
23224 <td class="entry_type">
23225 <span class="entry_type_name">byte</span>
23226 <span class="entry_type_container">x</span>
23227
23228 <span class="entry_type_array">
23229 n
23230 </span>
23231 <span class="entry_type_visibility"> [public as enumList]</span>
23232
23233
23234
23235
23236 <div class="entry_type_notes">list of enums</div>
23237
23238
23239 </td> <!-- entry_type -->
23240
23241 <td class="entry_description">
23242 <p>List of rotate-and-crop modes for <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a> that are supported by this camera device.<wbr/></p>
23243 </td>
23244
23245 <td class="entry_units">
23246 </td>
23247
23248 <td class="entry_range">
23249 <p>Any value listed in <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a></p>
23250 </td>
23251
23252 <td class="entry_hal_version">
23253 <p>3.<wbr/>5</p>
23254 </td>
23255
23256 <td class="entry_tags">
23257 </td>
23258
23259 </tr>
23260 <tr class="entries_header">
23261 <th class="th_details" colspan="6">Details</th>
23262 </tr>
23263 <tr class="entry_cont">
23264 <td class="entry_details" colspan="6">
23265 <p>This entry lists the valid modes for <a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a> for this camera device.<wbr/></p>
23266<p>Starting with API level 30,<wbr/> all devices will list at least <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/>
23267Devices with support for rotate-and-crop will additionally list at least
23268<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>.<wbr/></p>
23269 </td>
23270 </tr>
23271
23272
23273 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23274 <!-- end of entry -->
23275
Yin-Chia Yeh8a349d82021-02-11 17:10:20 -080023276
23277 <tr class="entry" id="static_android.scaler.defaultSecureImageSize">
23278 <td class="entry_name
23279 " rowspan="3">
23280 android.<wbr/>scaler.<wbr/>default<wbr/>Secure<wbr/>Image<wbr/>Size
23281 </td>
23282 <td class="entry_type">
23283 <span class="entry_type_name">int32</span>
23284 <span class="entry_type_container">x</span>
23285
23286 <span class="entry_type_array">
23287 2
23288 </span>
23289 <span class="entry_type_visibility"> [public as size]</span>
23290
23291
23292
23293
23294 <div class="entry_type_notes">width/<wbr/>height for the default secure image data size</div>
23295
23296
23297 </td> <!-- entry_type -->
23298
23299 <td class="entry_description">
23300 <p>Default YUV/<wbr/>PRIVATE size to use for requesting secure image buffers.<wbr/></p>
23301 </td>
23302
23303 <td class="entry_units">
23304 Pixels
23305 </td>
23306
23307 <td class="entry_range">
23308 </td>
23309
23310 <td class="entry_hal_version">
23311 <p>3.<wbr/>6</p>
23312 </td>
23313
23314 <td class="entry_tags">
23315 </td>
23316
23317 </tr>
23318 <tr class="entries_header">
23319 <th class="th_details" colspan="6">Details</th>
23320 </tr>
23321 <tr class="entry_cont">
23322 <td class="entry_details" colspan="6">
23323 <p>This entry lists the default size supported in the secure camera mode.<wbr/> This entry is
23324optional on devices support the SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/> This entry will be null
23325if the camera device does not list SECURE_<wbr/>IMAGE_<wbr/>DATA capability.<wbr/></p>
23326<p>When the key is present,<wbr/> only a PRIVATE/<wbr/>YUV output of the specified size is guaranteed
23327to be supported by the camera HAL in the secure camera mode.<wbr/> Any other format or
23328resolutions might not be supported.<wbr/> Use
23329<a href="https://developer.android.com/reference/CameraDevice.html#isSessionConfigurationSupported">CameraDevice#isSessionConfigurationSupported</a>
23330API to query if a secure session configuration is supported if the device supports this
23331API.<wbr/></p>
23332<p>If this key returns null on a device with SECURE_<wbr/>IMAGE_<wbr/>DATA capability,<wbr/> the application
23333can assume all output sizes listed in the
23334<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
23335are supported.<wbr/></p>
23336 </td>
23337 </tr>
23338
23339
23340 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23341 <!-- end of entry -->
23342
Shuzhen Wang3dd7c292020-11-20 15:39:23 -080023343
23344 <tr class="entry" id="static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">
23345 <td class="entry_name
Shuzhen Wange8aa5562021-04-29 13:31:18 -070023346 " rowspan="5">
Shuzhen Wang3dd7c292020-11-20 15:39:23 -080023347 android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations
23348 </td>
23349 <td class="entry_type">
23350 <span class="entry_type_name entry_type_name_enum">int32</span>
23351 <span class="entry_type_container">x</span>
23352
23353 <span class="entry_type_array">
23354 n x 4
23355 </span>
23356 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
23357
23358
23359 <span class="entry_type_hwlevel">[limited] </span>
23360
23361
23362
23363 <ul class="entry_type_enum">
23364 <li>
23365 <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
23366 </li>
23367 <li>
23368 <span class="entry_type_enum_name">INPUT (v3.6)</span>
23369 </li>
23370 </ul>
23371
23372 </td> <!-- entry_type -->
23373
23374 <td class="entry_description">
23375 <p>The available multi-resolution stream configurations that this
23376physical camera device supports
23377(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
23378 </td>
23379
23380 <td class="entry_units">
23381 </td>
23382
23383 <td class="entry_range">
23384 </td>
23385
23386 <td class="entry_hal_version">
23387 <p>3.<wbr/>6</p>
23388 </td>
23389
23390 <td class="entry_tags">
23391 </td>
23392
23393 </tr>
23394 <tr class="entries_header">
23395 <th class="th_details" colspan="6">Details</th>
23396 </tr>
23397 <tr class="entry_cont">
23398 <td class="entry_details" colspan="6">
23399 <p>This list contains a subset of the parent logical camera's multi-resolution stream
23400configurations which belong to this physical camera,<wbr/> and it will advertise and will only
23401advertise the maximum supported resolutions for a particular format.<wbr/></p>
23402<p>If this camera device isn't a physical camera device constituting a logical camera,<wbr/>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080023403but a standalone <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
23404camera,<wbr/> this field represents the multi-resolution input/<wbr/>output stream configurations of
23405default mode and max resolution modes.<wbr/> The sizes will be the maximum resolution of a
23406particular format for default mode and max resolution mode.<wbr/></p>
Shuzhen Wang3dd7c292020-11-20 15:39:23 -080023407<p>This field will only be advertised if the device is a physical camera of a
23408logical multi-camera device or an ultra high resolution sensor camera.<wbr/> For a logical
23409multi-camera,<wbr/> the camera API will derive the logical camera’s multi-resolution stream
23410configurations from all physical cameras.<wbr/> For an ultra high resolution sensor camera,<wbr/> this
23411is used directly as the camera’s multi-resolution stream configurations.<wbr/></p>
23412 </td>
23413 </tr>
23414
Shuzhen Wange8aa5562021-04-29 13:31:18 -070023415 <tr class="entries_header">
23416 <th class="th_details" colspan="6">HAL Implementation Details</th>
23417 </tr>
23418 <tr class="entry_cont">
23419 <td class="entry_details" colspan="6">
23420 <p>If this field contains input stream configurations,<wbr/> and the camera device is a physical
23421camera (not a standalone ultra-high resolution camera),<wbr/> the
23422<a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id</a> tag must be set to the physical camera Id in
23423the physical camera result metadata.<wbr/> This is to make sure during multi-resolution
23424reprocessing,<wbr/> the camera HAL is notified of which physical camera the reprocessing
23425request comes from.<wbr/></p>
23426 </td>
23427 </tr>
Shuzhen Wang3dd7c292020-11-20 15:39:23 -080023428
23429 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23430 <!-- end of entry -->
23431
23432
23433 <tr class="entry" id="static_android.scaler.multiResolutionStreamConfigurationMap">
23434 <td class="entry_name
23435 " rowspan="5">
23436 android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map
23437 </td>
23438 <td class="entry_type">
23439 <span class="entry_type_name">int32</span>
23440
23441 <span class="entry_type_visibility"> [java_public as multiResolutionStreamConfigurationMap]</span>
23442
23443 <span class="entry_type_synthetic">[synthetic] </span>
23444
23445
23446
23447
23448
23449 </td> <!-- entry_type -->
23450
23451 <td class="entry_description">
23452 <p>The multi-resolution stream configurations supported by this logical camera
23453or ultra high resolution sensor camera device.<wbr/></p>
23454 </td>
23455
23456 <td class="entry_units">
23457 </td>
23458
23459 <td class="entry_range">
23460 </td>
23461
23462 <td class="entry_hal_version">
23463 <p>3.<wbr/>2</p>
23464 </td>
23465
23466 <td class="entry_tags">
23467 </td>
23468
23469 </tr>
23470 <tr class="entries_header">
23471 <th class="th_details" colspan="6">Details</th>
23472 </tr>
23473 <tr class="entry_cont">
23474 <td class="entry_details" colspan="6">
23475 <p>Multi-resolution streams can be used by a LOGICAL_<wbr/>MULTI_<wbr/>CAMERA or an
23476ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR camera where the images sent or received can vary in
23477resolution per frame.<wbr/> This is useful in cases where the camera device's effective full
23478resolution changes depending on factors such as the current zoom level,<wbr/> lighting
23479condition,<wbr/> focus distance,<wbr/> or pixel mode.<wbr/></p>
23480<ul>
23481<li>For a logical multi-camera implementing optical zoom,<wbr/> at different zoom level,<wbr/> a
23482different physical camera may be active,<wbr/> resulting in different full-resolution image
23483sizes.<wbr/></li>
23484<li>For an ultra high resolution camera,<wbr/> depending on whether the camera operates in default
23485mode,<wbr/> or maximum resolution mode,<wbr/> the output full-size images may be of either binned
23486resolution or maximum resolution.<wbr/></li>
23487</ul>
23488<p>To use multi-resolution output streams,<wbr/> the supported formats can be queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getOutputFormats">MultiResolutionStreamConfigurationMap#getOutputFormats</a>.<wbr/>
23489A <a href="https://developer.android.com/reference/android/hardware/camera2/MultiResolutionImageReader.html">MultiResolutionImageReader</a> can then be created for a
23490supported format with the MultiResolutionStreamInfo group queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getOutputInfo">MultiResolutionStreamConfigurationMap#getOutputInfo</a>.<wbr/></p>
23491<p>If a camera device supports multi-resolution output streams for a particular format,<wbr/> for
23492each of its mandatory stream combinations,<wbr/> the camera device will support using a
23493MultiResolutionImageReader for the MAXIMUM stream of supported formats.<wbr/> Refer to
23494<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional details.<wbr/></p>
23495<p>To use multi-resolution input streams,<wbr/> the supported formats can be queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getInputFormats">MultiResolutionStreamConfigurationMap#getInputFormats</a>.<wbr/>
23496A reprocessable CameraCaptureSession can then be created using an <a href="https://developer.android.com/reference/android/hardware/camera2/params/InputConfiguration.html">InputConfiguration</a> constructed with
23497the input MultiResolutionStreamInfo group,<wbr/> queried by <a href="https://developer.android.com/reference/android/hardware/camera2/params/MultiResolutionStreamConfigurationMap.html#getInputInfo">MultiResolutionStreamConfigurationMap#getInputInfo</a>.<wbr/></p>
23498<p>If a camera device supports multi-resolution {@code YUV} input and multi-resolution
23499{@code YUV} output,<wbr/> or multi-resolution {@code PRIVATE} input and multi-resolution
23500{@code PRIVATE} output,<wbr/> {@code JPEG} and {@code YUV} are guaranteed to be supported
23501multi-resolution output stream formats.<wbr/> Refer to
23502<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for
23503details about the additional mandatory stream combinations in this case.<wbr/></p>
23504 </td>
23505 </tr>
23506
23507 <tr class="entries_header">
23508 <th class="th_details" colspan="6">HAL Implementation Details</th>
23509 </tr>
23510 <tr class="entry_cont">
23511 <td class="entry_details" colspan="6">
23512 <p>Do not set this property directly
23513(it is synthetic and will not be available at the HAL layer).<wbr/></p>
23514 </td>
23515 </tr>
23516
23517 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23518 <!-- end of entry -->
23519
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080023520
23521 <tr class="entry" id="static_android.scaler.availableStreamConfigurationsMaximumResolution">
23522 <td class="entry_name
23523 " rowspan="5">
23524 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
23525 </td>
23526 <td class="entry_type">
23527 <span class="entry_type_name entry_type_name_enum">int32</span>
23528 <span class="entry_type_container">x</span>
23529
23530 <span class="entry_type_array">
23531 n x 4
23532 </span>
23533 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
23534
23535
23536
23537
23538
23539 <ul class="entry_type_enum">
23540 <li>
23541 <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
23542 </li>
23543 <li>
23544 <span class="entry_type_enum_name">INPUT (v3.6)</span>
23545 </li>
23546 </ul>
23547
23548 </td> <!-- entry_type -->
23549
23550 <td class="entry_description">
23551 <p>The available stream configurations that this
23552camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) for a
23553CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
23554<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
23555 </td>
23556
23557 <td class="entry_units">
23558 </td>
23559
23560 <td class="entry_range">
23561 </td>
23562
23563 <td class="entry_hal_version">
23564 <p>3.<wbr/>6</p>
23565 </td>
23566
23567 <td class="entry_tags">
23568 </td>
23569
23570 </tr>
23571 <tr class="entries_header">
23572 <th class="th_details" colspan="6">Details</th>
23573 </tr>
23574 <tr class="entry_cont">
23575 <td class="entry_details" colspan="6">
23576 <p>Analogous to <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations
23577which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
23578<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
23579<p>Not all output formats may be supported in a configuration with
23580an input stream of a particular format.<wbr/> For more details,<wbr/> see
23581<a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p>
23582 </td>
23583 </tr>
23584
23585 <tr class="entries_header">
23586 <th class="th_details" colspan="6">HAL Implementation Details</th>
23587 </tr>
23588 <tr class="entry_cont">
23589 <td class="entry_details" colspan="6">
23590 <p>Refer to hal_<wbr/>details for <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p>
23591 </td>
23592 </tr>
23593
23594 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23595 <!-- end of entry -->
23596
23597
23598 <tr class="entry" id="static_android.scaler.availableMinFrameDurationsMaximumResolution">
23599 <td class="entry_name
23600 " rowspan="3">
23601 android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
23602 </td>
23603 <td class="entry_type">
23604 <span class="entry_type_name">int64</span>
23605 <span class="entry_type_container">x</span>
23606
23607 <span class="entry_type_array">
23608 4 x n
23609 </span>
23610 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
23611
23612
23613
23614
23615
23616
23617 </td> <!-- entry_type -->
23618
23619 <td class="entry_description">
23620 <p>This lists the minimum frame duration for each
23621format/<wbr/>size combination when the camera device is sent a CaptureRequest with
23622<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
23623<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
23624 </td>
23625
23626 <td class="entry_units">
23627 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
23628 </td>
23629
23630 <td class="entry_range">
23631 </td>
23632
23633 <td class="entry_hal_version">
23634 <p>3.<wbr/>6</p>
23635 </td>
23636
23637 <td class="entry_tags">
23638 </td>
23639
23640 </tr>
23641 <tr class="entries_header">
23642 <th class="th_details" colspan="6">Details</th>
23643 </tr>
23644 <tr class="entry_cont">
23645 <td class="entry_details" colspan="6">
23646 <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations
23647which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
23648<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
23649<p>When multiple streams are used in a request (if supported,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>
23650is set to
23651<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>),<wbr/> the
23652minimum frame duration will be max(individual stream min durations).<wbr/></p>
23653<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
23654<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about
23655calculating the max frame rate.<wbr/></p>
23656 </td>
23657 </tr>
23658
23659
23660 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23661 <!-- end of entry -->
23662
23663
23664 <tr class="entry" id="static_android.scaler.availableStallDurationsMaximumResolution">
23665 <td class="entry_name
23666 " rowspan="5">
23667 android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
23668 </td>
23669 <td class="entry_type">
23670 <span class="entry_type_name">int64</span>
23671 <span class="entry_type_container">x</span>
23672
23673 <span class="entry_type_array">
23674 4 x n
23675 </span>
23676 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
23677
23678
23679
23680
23681
23682
23683 </td> <!-- entry_type -->
23684
23685 <td class="entry_description">
23686 <p>This lists the maximum stall duration for each
23687output format/<wbr/>size combination when CaptureRequests are submitted with
23688<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
23689<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a></p>
23690 </td>
23691
23692 <td class="entry_units">
23693 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
23694 </td>
23695
23696 <td class="entry_range">
23697 </td>
23698
23699 <td class="entry_hal_version">
23700 <p>3.<wbr/>6</p>
23701 </td>
23702
23703 <td class="entry_tags">
23704 </td>
23705
23706 </tr>
23707 <tr class="entries_header">
23708 <th class="th_details" colspan="6">Details</th>
23709 </tr>
23710 <tr class="entry_cont">
23711 <td class="entry_details" colspan="6">
23712 <p>Analogous to <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations
23713which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
23714<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
23715 </td>
23716 </tr>
23717
23718 <tr class="entries_header">
23719 <th class="th_details" colspan="6">HAL Implementation Details</th>
23720 </tr>
23721 <tr class="entry_cont">
23722 <td class="entry_details" colspan="6">
23723 <p>If possible,<wbr/> it is recommended that all non-JPEG formats
23724(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
23725and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
23726 </td>
23727 </tr>
23728
23729 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23730 <!-- end of entry -->
23731
23732
23733 <tr class="entry" id="static_android.scaler.streamConfigurationMapMaximumResolution">
23734 <td class="entry_name
23735 " rowspan="5">
23736 android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution
23737 </td>
23738 <td class="entry_type">
23739 <span class="entry_type_name">int32</span>
23740
23741 <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
23742
23743 <span class="entry_type_synthetic">[synthetic] </span>
23744
23745
23746
23747
23748
23749 </td> <!-- entry_type -->
23750
23751 <td class="entry_description">
23752 <p>The available stream configurations that this
23753camera device supports when given a CaptureRequest with <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>
23754set to
23755<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>;
23756also includes the minimum frame durations
23757and the stall durations for each format/<wbr/>size combination.<wbr/></p>
23758 </td>
23759
23760 <td class="entry_units">
23761 </td>
23762
23763 <td class="entry_range">
23764 </td>
23765
23766 <td class="entry_hal_version">
23767 <p>3.<wbr/>2</p>
23768 </td>
23769
23770 <td class="entry_tags">
23771 </td>
23772
23773 </tr>
23774 <tr class="entries_header">
23775 <th class="th_details" colspan="6">Details</th>
23776 </tr>
23777 <tr class="entry_cont">
23778 <td class="entry_details" colspan="6">
23779 <p>Analogous to <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> for CaptureRequests where
23780<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
23781<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
23782 </td>
23783 </tr>
23784
23785 <tr class="entries_header">
23786 <th class="th_details" colspan="6">HAL Implementation Details</th>
23787 </tr>
23788 <tr class="entry_cont">
23789 <td class="entry_details" colspan="6">
23790 <p>Do not set this property directly
23791(it is synthetic and will not be available at the HAL layer);
23792set the <a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution</a> instead.<wbr/></p>
23793<p>Not all output formats may be supported in a configuration with
23794an input stream of a particular format.<wbr/> For more details,<wbr/> see
23795<a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p>
23796 </td>
23797 </tr>
23798
23799 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23800 <!-- end of entry -->
23801
23802
23803 <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMapMaximumResolution">
23804 <td class="entry_name
23805 " rowspan="5">
23806 android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution
23807 </td>
23808 <td class="entry_type">
23809 <span class="entry_type_name">int32</span>
23810
23811 <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
23812
23813
23814
23815
23816
23817
23818 </td> <!-- entry_type -->
23819
23820 <td class="entry_description">
23821 <p>The mapping of image formats that are supported by this
23822camera device for input streams,<wbr/> to their corresponding output formats,<wbr/> when
23823<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
23824<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
23825 </td>
23826
23827 <td class="entry_units">
23828 </td>
23829
23830 <td class="entry_range">
23831 </td>
23832
23833 <td class="entry_hal_version">
23834 <p>3.<wbr/>6</p>
23835 </td>
23836
23837 <td class="entry_tags">
23838 <ul class="entry_tags">
23839 <li><a href="#tag_REPROC">REPROC</a></li>
23840 </ul>
23841 </td>
23842
23843 </tr>
23844 <tr class="entries_header">
23845 <th class="th_details" colspan="6">Details</th>
23846 </tr>
23847 <tr class="entry_cont">
23848 <td class="entry_details" colspan="6">
23849 <p>Analogous to <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for CaptureRequests where
23850<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
23851<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
23852 </td>
23853 </tr>
23854
23855 <tr class="entries_header">
23856 <th class="th_details" colspan="6">HAL Implementation Details</th>
23857 </tr>
23858 <tr class="entry_cont">
23859 <td class="entry_details" colspan="6">
23860 <p>Refer to hal details for <a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p>
23861 </td>
23862 </tr>
23863
23864 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23865 <!-- end of entry -->
23866
23867
23868 <tr class="entry" id="static_android.scaler.mandatoryMaximumResolutionStreamCombinations">
23869 <td class="entry_name
23870 " rowspan="5">
23871 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Maximum<wbr/>Resolution<wbr/>Stream<wbr/>Combinations
23872 </td>
23873 <td class="entry_type">
23874 <span class="entry_type_name">int32</span>
23875 <span class="entry_type_container">x</span>
23876
23877 <span class="entry_type_array">
23878 n
23879 </span>
23880 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
23881
23882 <span class="entry_type_synthetic">[synthetic] </span>
23883
23884
23885
23886
23887
23888 </td> <!-- entry_type -->
23889
23890 <td class="entry_description">
23891 <p>An array of mandatory stream combinations which are applicable when
23892<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a> has <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set
23893to <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
23894This is an app-readable conversion of the maximum resolution mandatory stream combination
23895<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p>
23896 </td>
23897
23898 <td class="entry_units">
23899 </td>
23900
23901 <td class="entry_range">
23902 </td>
23903
23904 <td class="entry_hal_version">
23905 <p>3.<wbr/>2</p>
23906 </td>
23907
23908 <td class="entry_tags">
23909 </td>
23910
23911 </tr>
23912 <tr class="entries_header">
23913 <th class="th_details" colspan="6">Details</th>
23914 </tr>
23915 <tr class="entry_cont">
23916 <td class="entry_details" colspan="6">
23917 <p>The array of
23918<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
23919generated according to the documented
23920<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> for each
23921device which has the
23922<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
23923capability.<wbr/>
23924Clients can use the array as a quick reference to find an appropriate camera stream
23925combination.<wbr/>
23926The mandatory stream combination array will be {@code null} in case the device is not an
23927<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
23928device.<wbr/></p>
23929 </td>
23930 </tr>
23931
23932 <tr class="entries_header">
23933 <th class="th_details" colspan="6">HAL Implementation Details</th>
23934 </tr>
23935 <tr class="entry_cont">
23936 <td class="entry_details" colspan="6">
23937 <p>Do not set this property directly
23938(it is synthetic and will not be available at the HAL layer).<wbr/></p>
23939 </td>
23940 </tr>
23941
23942 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23943 <!-- end of entry -->
23944
Shuzhen Wangfa600342021-04-06 12:44:46 -070023945
Emilian Peev276c7222021-11-12 18:07:39 -080023946 <tr class="entry" id="static_android.scaler.mandatoryTenBitOutputStreamCombinations">
23947 <td class="entry_name
23948 " rowspan="5">
23949 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Ten<wbr/>Bit<wbr/>Output<wbr/>Stream<wbr/>Combinations
23950 </td>
23951 <td class="entry_type">
23952 <span class="entry_type_name">int32</span>
23953 <span class="entry_type_container">x</span>
23954
23955 <span class="entry_type_array">
23956 n
23957 </span>
23958 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
23959
23960 <span class="entry_type_synthetic">[synthetic] </span>
23961
23962
23963
23964
23965
23966 </td> <!-- entry_type -->
23967
23968 <td class="entry_description">
23969 <p>An array of mandatory stream combinations which are applicable when device support the
2397010-bit output capability
23971<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
23972This is an app-readable conversion of the maximum resolution mandatory stream combination
23973<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p>
23974 </td>
23975
23976 <td class="entry_units">
23977 </td>
23978
23979 <td class="entry_range">
23980 </td>
23981
23982 <td class="entry_hal_version">
23983 <p>3.<wbr/>2</p>
23984 </td>
23985
23986 <td class="entry_tags">
23987 </td>
23988
23989 </tr>
23990 <tr class="entries_header">
23991 <th class="th_details" colspan="6">Details</th>
23992 </tr>
23993 <tr class="entry_cont">
23994 <td class="entry_details" colspan="6">
23995 <p>The array of
23996<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
23997generated according to the documented
23998<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> for each
23999device which has the
24000<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
24001capability.<wbr/>
24002Clients can use the array as a quick reference to find an appropriate camera stream
24003combination.<wbr/>
24004The mandatory stream combination array will be {@code null} in case the device is not an
24005<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_DYNAMIC_RANGE_TEN_BIT">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>DYNAMIC_<wbr/>RANGE_<wbr/>TEN_<wbr/>BIT</a>
24006device.<wbr/></p>
24007 </td>
24008 </tr>
24009
24010 <tr class="entries_header">
24011 <th class="th_details" colspan="6">HAL Implementation Details</th>
24012 </tr>
24013 <tr class="entry_cont">
24014 <td class="entry_details" colspan="6">
24015 <p>Do not set this property directly
24016(it is synthetic and will not be available at the HAL layer).<wbr/></p>
24017 </td>
24018 </tr>
24019
24020 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24021 <!-- end of entry -->
24022
24023
Jayant Chowdhary36214072022-02-09 20:58:54 +000024024 <tr class="entry" id="static_android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations">
24025 <td class="entry_name
24026 " rowspan="5">
24027 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Preview<wbr/>Stabilization<wbr/>Output<wbr/>Stream<wbr/>Combinations
24028 </td>
24029 <td class="entry_type">
24030 <span class="entry_type_name">int32</span>
24031 <span class="entry_type_container">x</span>
24032
24033 <span class="entry_type_array">
24034 n
24035 </span>
24036 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
24037
24038 <span class="entry_type_synthetic">[synthetic] </span>
24039
24040
24041
24042
24043
24044 </td> <!-- entry_type -->
24045
24046 <td class="entry_description">
24047 <p>An array of mandatory stream combinations which are applicable when device lists
24048{@code PREVIEW_<wbr/>STABILIZATION} in <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>.<wbr/>
24049This is an app-readable conversion of the maximum resolution mandatory stream combination
24050<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a>.<wbr/></p>
24051 </td>
24052
24053 <td class="entry_units">
24054 </td>
24055
24056 <td class="entry_range">
24057 </td>
24058
24059 <td class="entry_hal_version">
24060 <p>3.<wbr/>2</p>
24061 </td>
24062
24063 <td class="entry_tags">
24064 </td>
24065
24066 </tr>
24067 <tr class="entries_header">
24068 <th class="th_details" colspan="6">Details</th>
24069 </tr>
24070 <tr class="entry_cont">
24071 <td class="entry_details" colspan="6">
24072 <p>The array of
24073<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
24074generated according to the documented
24075<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> for each
24076device which supports {@code PREVIEW_<wbr/>STABILIZATION}
24077Clients can use the array as a quick reference to find an appropriate camera stream
24078combination.<wbr/>
24079The mandatory stream combination array will be {@code null} in case the device does not
24080list {@code PREVIEW_<wbr/>STABILIZATION} in <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>.<wbr/></p>
24081 </td>
24082 </tr>
24083
24084 <tr class="entries_header">
24085 <th class="th_details" colspan="6">HAL Implementation Details</th>
24086 </tr>
24087 <tr class="entry_cont">
24088 <td class="entry_details" colspan="6">
24089 <p>Do not set this property directly
24090(it is synthetic and will not be available at the HAL layer).<wbr/></p>
24091 </td>
24092 </tr>
24093
24094 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24095 <!-- end of entry -->
24096
24097
Shuzhen Wangfa600342021-04-06 12:44:46 -070024098 <tr class="entry" id="static_android.scaler.multiResolutionStreamSupported">
24099 <td class="entry_name
24100 " rowspan="5">
24101 android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Supported
24102 </td>
24103 <td class="entry_type">
24104 <span class="entry_type_name entry_type_name_enum">byte</span>
24105
24106 <span class="entry_type_visibility"> [ndk_public as boolean]</span>
24107
24108
24109 <span class="entry_type_hwlevel">[limited] </span>
24110
24111
24112
24113 <ul class="entry_type_enum">
24114 <li>
24115 <span class="entry_type_enum_name">FALSE (v3.6)</span>
24116 </li>
24117 <li>
24118 <span class="entry_type_enum_name">TRUE (v3.6)</span>
24119 </li>
24120 </ul>
24121
24122 </td> <!-- entry_type -->
24123
24124 <td class="entry_description">
24125 <p>Whether the camera device supports multi-resolution input or output streams</p>
24126 </td>
24127
24128 <td class="entry_units">
24129 </td>
24130
24131 <td class="entry_range">
24132 </td>
24133
24134 <td class="entry_hal_version">
24135 <p>3.<wbr/>6</p>
24136 </td>
24137
24138 <td class="entry_tags">
24139 </td>
24140
24141 </tr>
24142 <tr class="entries_header">
24143 <th class="th_details" colspan="6">Details</th>
24144 </tr>
24145 <tr class="entry_cont">
24146 <td class="entry_details" colspan="6">
24147 <p>A logical multi-camera or an ultra high resolution camera may support multi-resolution
24148input or output streams.<wbr/> With multi-resolution output streams,<wbr/> the camera device is able
24149to output different resolution images depending on the current active physical camera or
24150pixel mode.<wbr/> With multi-resolution input streams,<wbr/> the camera device can reprocess images
24151of different resolutions from different physical cameras or sensor pixel modes.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024152<p>When set to TRUE:</p>
24153<ul>
24154<li>For a logical multi-camera,<wbr/> the camera framework derives
Shuzhen Wangfa600342021-04-06 12:44:46 -070024155<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a> by combining the
24156<a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations</a> from its physical
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024157cameras.<wbr/></li>
24158<li>For an ultra-high resolution sensor camera,<wbr/> the camera framework directly copies
Shuzhen Wangfa600342021-04-06 12:44:46 -070024159the value of <a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.<wbr/>scaler.<wbr/>physical<wbr/>Camera<wbr/>Multi<wbr/>Resolution<wbr/>Stream<wbr/>Configurations</a> to
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024160<a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.<wbr/>scaler.<wbr/>multi<wbr/>Resolution<wbr/>Stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></li>
24161</ul>
Shuzhen Wangfa600342021-04-06 12:44:46 -070024162 </td>
24163 </tr>
24164
24165 <tr class="entries_header">
24166 <th class="th_details" colspan="6">HAL Implementation Details</th>
24167 </tr>
24168 <tr class="entry_cont">
24169 <td class="entry_details" colspan="6">
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024170 <p>For the HAL to claim support for multi-resolution streams:</p>
24171<ul>
24172<li>The HAL must support the buffer management API by setting
24173supportedBufferManagementVersion to HIDL_<wbr/>DEVICE_<wbr/>3_<wbr/>5.<wbr/></li>
24174<li>For a logical multi-camera,<wbr/> when combined from all its physical cameras,<wbr/> there must be
Shuzhen Wangfa600342021-04-06 12:44:46 -070024175at a minimum one input or output stream format with at least two different
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024176physicalCameraMultiResolutionStreamConfigurations entries for that format.<wbr/></li>
24177<li>For an ultra high resolution sensor camera,<wbr/> for each supported multi-resolution format,<wbr/>
Shuzhen Wangfa600342021-04-06 12:44:46 -070024178the physicalCameraMultiResolutionStreamConfigurations must contain both the largest stream
24179configuration within the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> and the largest stream
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024180configuration within the <a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></li>
24181<li>If the HAL advertises multi-resolution input stream support for a particular format
Shuzhen Wangfa600342021-04-06 12:44:46 -070024182(namely PRIVATE,<wbr/> or YUV),<wbr/> the logical multi-camera or ultra high resolution sensor camera
24183must have the corresponding reprocessing capabilities (PRIVATE_<wbr/>REPROCESSING,<wbr/>
24184or YUV_<wbr/>REPROCESSING respectively).<wbr/> The camera HAL must support reprocessing the
24185multi-resolution input stream to the output formats specified in the camera's
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024186<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></li>
24187</ul>
Shuzhen Wangfa600342021-04-06 12:44:46 -070024188 </td>
24189 </tr>
24190
24191 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24192 <!-- end of entry -->
24193
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080024194
24195 <tr class="entry" id="static_android.scaler.availableStreamUseCases">
24196 <td class="entry_name
24197 " rowspan="5">
24198 android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Use<wbr/>Cases
24199 </td>
24200 <td class="entry_type">
Shuzhen Wangd2a78072022-03-08 16:57:03 -080024201 <span class="entry_type_name entry_type_name_enum">int64</span>
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080024202 <span class="entry_type_container">x</span>
24203
24204 <span class="entry_type_array">
24205 n
24206 </span>
24207 <span class="entry_type_visibility"> [public]</span>
24208
24209
24210
24211
24212
24213 <ul class="entry_type_enum">
24214 <li>
24215 <span class="entry_type_enum_name">DEFAULT (v3.8)</span>
24216 <span class="entry_type_enum_optional">[optional]</span>
24217 <span class="entry_type_enum_value">0x0</span>
24218 <span class="entry_type_enum_notes"><p>Default stream use case.<wbr/></p>
24219<p>This use case is the same as when the application doesn't set any use case for
24220the stream.<wbr/> The camera device uses the properties of the output target,<wbr/> such as
24221format,<wbr/> dataSpace,<wbr/> or surface class type,<wbr/> to optimize the image processing pipeline.<wbr/></p></span>
24222 </li>
24223 <li>
24224 <span class="entry_type_enum_name">PREVIEW (v3.8)</span>
24225 <span class="entry_type_enum_optional">[optional]</span>
24226 <span class="entry_type_enum_value">0x1</span>
24227 <span class="entry_type_enum_notes"><p>Live stream shown to the user.<wbr/></p>
24228<p>Optimized for performance and usability as a viewfinder,<wbr/> but not necessarily for
24229image quality.<wbr/> The output is not meant to be persisted as saved images or video.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024230<p>No stall if android.<wbr/>control.<wbr/>* are set to FAST.<wbr/> There may be stall if
24231they are set to HIGH_<wbr/>QUALITY.<wbr/> This use case has the same behavior as the
24232default SurfaceView and SurfaceTexture targets.<wbr/> Additionally,<wbr/> this use case can be
24233used for in-app image analysis.<wbr/></p></span>
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080024234 </li>
24235 <li>
24236 <span class="entry_type_enum_name">STILL_CAPTURE (v3.8)</span>
24237 <span class="entry_type_enum_optional">[optional]</span>
24238 <span class="entry_type_enum_value">0x2</span>
24239 <span class="entry_type_enum_notes"><p>Still photo capture.<wbr/></p>
24240<p>Optimized for high-quality high-resolution capture,<wbr/> and not expected to maintain
24241preview-like frame rates.<wbr/></p>
24242<p>The stream may have stalls regardless of whether android.<wbr/>control.<wbr/>* is HIGH_<wbr/>QUALITY.<wbr/>
24243This use case has the same behavior as the default JPEG and RAW related formats.<wbr/></p></span>
24244 </li>
24245 <li>
24246 <span class="entry_type_enum_name">VIDEO_RECORD (v3.8)</span>
24247 <span class="entry_type_enum_optional">[optional]</span>
24248 <span class="entry_type_enum_value">0x3</span>
24249 <span class="entry_type_enum_notes"><p>Recording video clips.<wbr/></p>
24250<p>Optimized for high-quality video capture,<wbr/> including high-quality image stabilization
24251if supported by the device and enabled by the application.<wbr/> As a result,<wbr/> may produce
24252output frames with a substantial lag from real time,<wbr/> to allow for highest-quality
24253stabilization or other processing.<wbr/> As such,<wbr/> such an output is not suitable for drawing
24254to screen directly,<wbr/> and is expected to be persisted to disk or similar for later
24255playback or processing.<wbr/> Only streams that set the VIDEO_<wbr/>RECORD use case are guaranteed
24256to have video stabilization applied when the video stabilization control is set
24257to ON,<wbr/> as opposed to PREVIEW_<wbr/>STABILIZATION.<wbr/></p>
24258<p>This use case has the same behavior as the default MediaRecorder and MediaCodec
24259targets.<wbr/></p></span>
24260 </li>
24261 <li>
24262 <span class="entry_type_enum_name">PREVIEW_VIDEO_STILL (v3.8)</span>
24263 <span class="entry_type_enum_optional">[optional]</span>
24264 <span class="entry_type_enum_value">0x4</span>
24265 <span class="entry_type_enum_notes"><p>One single stream used for combined purposes of preview,<wbr/> video,<wbr/> and still capture.<wbr/></p>
24266<p>For such multi-purpose streams,<wbr/> the camera device aims to make the best tradeoff
24267between the individual use cases.<wbr/> For example,<wbr/> the STILL_<wbr/>CAPTURE use case by itself
24268may have stalls for achieving best image quality.<wbr/> But if combined with PREVIEW and
24269VIDEO_<wbr/>RECORD,<wbr/> the camera device needs to trade off the additional image processing
24270for speed so that preview and video recording aren't slowed down.<wbr/></p>
24271<p>Similarly,<wbr/> VIDEO_<wbr/>RECORD may produce frames with a substantial lag,<wbr/> but
24272PREVIEW_<wbr/>VIDEO_<wbr/>STILL must have minimal output delay.<wbr/> This means that to enable video
24273stabilization with this use case,<wbr/> the device must support and the app must select the
24274PREVIEW_<wbr/>STABILIZATION mode for video stabilization.<wbr/></p></span>
24275 </li>
24276 <li>
24277 <span class="entry_type_enum_name">VIDEO_CALL (v3.8)</span>
24278 <span class="entry_type_enum_optional">[optional]</span>
24279 <span class="entry_type_enum_value">0x5</span>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024280 <span class="entry_type_enum_notes"><p>Long-running video call optimized for both power efficiency and video quality.<wbr/></p>
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080024281<p>The camera sensor may run in a lower-resolution mode to reduce power consumption
24282at the cost of some image and digital zoom quality.<wbr/> Unlike VIDEO_<wbr/>RECORD,<wbr/> VIDEO_<wbr/>CALL
24283outputs are expected to work in dark conditions,<wbr/> so are usually accompanied with
24284variable frame rate settings to allow sufficient exposure time in low light.<wbr/></p></span>
24285 </li>
24286 <li>
24287 <span class="entry_type_enum_name">VENDOR_START (v3.8)</span>
24288 <span class="entry_type_enum_optional">[optional]</span>
24289 <span class="entry_type_enum_hidden">[hidden]</span>
24290 <span class="entry_type_enum_value">0x10000</span>
24291 <span class="entry_type_enum_notes"><p>Vendor defined use cases.<wbr/> These depend on the vendor implementation.<wbr/></p></span>
24292 </li>
24293 </ul>
24294
24295 </td> <!-- entry_type -->
24296
24297 <td class="entry_description">
24298 <p>The stream use cases supported by this camera device.<wbr/></p>
24299 </td>
24300
24301 <td class="entry_units">
24302 </td>
24303
24304 <td class="entry_range">
24305 </td>
24306
24307 <td class="entry_hal_version">
24308 <p>3.<wbr/>8</p>
24309 </td>
24310
24311 <td class="entry_tags">
24312 </td>
24313
24314 </tr>
24315 <tr class="entries_header">
24316 <th class="th_details" colspan="6">Details</th>
24317 </tr>
24318 <tr class="entry_cont">
24319 <td class="entry_details" colspan="6">
24320 <p>The stream use case indicates the purpose of a particular camera stream from
24321the end-user perspective.<wbr/> Some examples of camera use cases are: preview stream for
24322live viewfinder shown to the user,<wbr/> still capture for generating high quality photo
24323capture,<wbr/> video record for encoding the camera output for the purpose of future playback,<wbr/>
24324and video call for live realtime video conferencing.<wbr/></p>
24325<p>With this flag,<wbr/> the camera device can optimize the image processing pipeline
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024326parameters,<wbr/> such as tuning,<wbr/> sensor mode,<wbr/> and ISP settings,<wbr/> independent of
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080024327the properties of the immediate camera output surface.<wbr/> For example,<wbr/> if the output
24328surface is a SurfaceTexture,<wbr/> the stream use case flag can be used to indicate whether
24329the camera frames eventually go to display,<wbr/> video encoder,<wbr/>
24330still image capture,<wbr/> or all of them combined.<wbr/></p>
24331<p>The application sets the use case of a camera stream by calling
24332<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html#setStreamUseCase">OutputConfiguration#setStreamUseCase</a>.<wbr/></p>
24333<p>A camera device with
24334<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a>
24335capability must support the following stream use cases:</p>
24336<ul>
24337<li>DEFAULT</li>
24338<li>PREVIEW</li>
24339<li>STILL_<wbr/>CAPTURE</li>
24340<li>VIDEO_<wbr/>RECORD</li>
24341<li>PREVIEW_<wbr/>VIDEO_<wbr/>STILL</li>
24342<li>VIDEO_<wbr/>CALL</li>
24343</ul>
24344<p>The guaranteed stream combinations related to stream use case for a camera device with
24345<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a>
24346capability is documented in the camera device
24347<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a>.<wbr/> The
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070024348application is strongly recommended to use one of the guaranteed stream combinations.<wbr/>
Shuzhen Wangcd7177c2021-12-14 20:08:28 -080024349If the application creates a session with a stream combination not in the guaranteed
24350list,<wbr/> or with mixed DEFAULT and non-DEFAULT use cases within the same session,<wbr/>
24351the camera device may ignore some stream use cases due to hardware constraints
24352and implementation details.<wbr/></p>
24353<p>For stream combinations not covered by the stream use case mandatory lists,<wbr/> such as
24354reprocessable session,<wbr/> constrained high speed session,<wbr/> or RAW stream combinations,<wbr/> the
24355application should leave stream use cases within the session as DEFAULT.<wbr/></p>
24356 </td>
24357 </tr>
24358
24359 <tr class="entries_header">
24360 <th class="th_details" colspan="6">HAL Implementation Details</th>
24361 </tr>
24362 <tr class="entry_cont">
24363 <td class="entry_details" colspan="6">
24364 <p>The camera HAL must support DEFAULT stream use case to handle scenarios where the
24365application doesn't explicitly set a stream's use case flag,<wbr/> in which case the camera
24366framework sets it to DEFAULT.<wbr/></p>
24367 </td>
24368 </tr>
24369
24370 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24371 <!-- end of entry -->
24372
24373
24374 <tr class="entry" id="static_android.scaler.mandatoryUseCaseStreamCombinations">
24375 <td class="entry_name
24376 " rowspan="5">
24377 android.<wbr/>scaler.<wbr/>mandatory<wbr/>Use<wbr/>Case<wbr/>Stream<wbr/>Combinations
24378 </td>
24379 <td class="entry_type">
24380 <span class="entry_type_name">int32</span>
24381 <span class="entry_type_container">x</span>
24382
24383 <span class="entry_type_array">
24384 n
24385 </span>
24386 <span class="entry_type_visibility"> [java_public as mandatoryStreamCombination]</span>
24387
24388 <span class="entry_type_synthetic">[synthetic] </span>
24389
24390
24391
24392
24393
24394 </td> <!-- entry_type -->
24395
24396 <td class="entry_description">
24397 <p>An array of mandatory stream combinations with stream use cases.<wbr/>
24398This is an app-readable conversion of the mandatory stream combination
24399<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">tables</a> with
24400each stream's use case being set.<wbr/></p>
24401 </td>
24402
24403 <td class="entry_units">
24404 </td>
24405
24406 <td class="entry_range">
24407 </td>
24408
24409 <td class="entry_hal_version">
24410 <p>3.<wbr/>2</p>
24411 </td>
24412
24413 <td class="entry_tags">
24414 </td>
24415
24416 </tr>
24417 <tr class="entries_header">
24418 <th class="th_details" colspan="6">Details</th>
24419 </tr>
24420 <tr class="entry_cont">
24421 <td class="entry_details" colspan="6">
24422 <p>The array of
24423<a href="https://developer.android.com/reference/android/hardware/camera2/params/MandatoryStreamCombination.html">combinations</a> is
24424generated according to the documented
24425<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">guideline</a> for a
24426camera device with
24427<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a>
24428capability.<wbr/>
24429The mandatory stream combination array will be {@code null} in case the device doesn't
24430have <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REQUEST_AVAILABLE_CAPABILITIES_STREAM_USE_CASE">Camera<wbr/>Characteristics#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>STREAM_<wbr/>USE_<wbr/>CASE</a>
24431capability.<wbr/></p>
24432 </td>
24433 </tr>
24434
24435 <tr class="entries_header">
24436 <th class="th_details" colspan="6">HAL Implementation Details</th>
24437 </tr>
24438 <tr class="entry_cont">
24439 <td class="entry_details" colspan="6">
24440 <p>Do not set this property directly
24441(it is synthetic and will not be available at the HAL layer).<wbr/></p>
24442 </td>
24443 </tr>
24444
24445 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24446 <!-- end of entry -->
24447
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024448
24449
24450 <!-- end of kind -->
24451 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024452 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024453
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070024454 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024455 <tr>
24456 <th class="th_name">Property Name</th>
24457 <th class="th_type">Type</th>
24458 <th class="th_description">Description</th>
24459 <th class="th_units">Units</th>
24460 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024461 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024462 <th class="th_tags">Tags</th>
24463 </tr>
24464 </thead>
24465
24466 <tbody>
24467
24468
24469
24470
24471
24472
24473
24474
24475
24476
24477 <tr class="entry" id="dynamic_android.scaler.cropRegion">
Igor Murashkin6c936c12014-05-13 14:51:49 -070024478 <td class="entry_name
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070024479 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080024480 android.<wbr/>scaler.<wbr/>crop<wbr/>Region
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080024481 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024482 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080024483 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024484 <span class="entry_type_container">x</span>
24485
24486 <span class="entry_type_array">
Eino-Ville Talvalae04ec6e2013-04-16 15:35:18 -070024487 4
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024488 </span>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070024489 <span class="entry_type_visibility"> [public as rectangle]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024490
24491
Igor Murashkinca256272014-10-02 15:27:09 -070024492 <span class="entry_type_hwlevel">[legacy] </span>
24493
Igor Murashkin6c936c12014-05-13 14:51:49 -070024494
24495
24496
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024497 </td> <!-- entry_type -->
24498
24499 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070024500 <p>The desired region of the sensor to read out for this capture.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024501 </td>
24502
24503 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070024504 Pixel coordinates relative to
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070024505 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size or
24506 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on distortion correction
24507 capability and mode
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024508 </td>
24509
24510 <td class="entry_range">
24511 </td>
24512
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024513 <td class="entry_hal_version">
24514 <p>3.<wbr/>2</p>
24515 </td>
24516
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024517 <td class="entry_tags">
24518 <ul class="entry_tags">
24519 <li><a href="#tag_BC">BC</a></li>
24520 </ul>
24521 </td>
24522
24523 </tr>
24524 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024525 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024526 </tr>
24527 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024528 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070024529 <p>This control can be used to implement digital zoom.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070024530<p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
24531system always follows that of <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
24532the top-left pixel of the active array.<wbr/></p>
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080024533<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate system
24534depends on the mode being set.<wbr/> When the distortion correction mode is OFF,<wbr/> the
24535coordinate system follows <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/>
245360)</code> being the top-left pixel of the pre-correction active array.<wbr/> When the distortion
24537correction mode is not OFF,<wbr/> the coordinate system follows
24538<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 top-left pixel of the
24539active array.<wbr/></p>
24540<p>Output streams use this rectangle to produce their output,<wbr/> cropping to a smaller region
24541if necessary to maintain the stream's aspect ratio,<wbr/> then scaling the sensor input to
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070024542match the output's configured resolution.<wbr/></p>
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080024543<p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
24544conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070024545croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080024546<p>For non-raw streams,<wbr/> any additional per-stream cropping will be done to maximize the
24547final pixel area of the stream.<wbr/></p>
24548<p>For example,<wbr/> if the crop region is set to a 4:3 aspect ratio,<wbr/> then 4:3 streams will use
24549the exact crop region.<wbr/> 16:9 streams will further crop vertically (letterbox).<wbr/></p>
24550<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 outputs will crop horizontally
24551(pillarbox),<wbr/> and 16:9 streams will match exactly.<wbr/> These additional crops will be
24552centered within the crop region.<wbr/></p>
24553<p>To illustrate,<wbr/> here are several scenarios of different crop regions and output streams,<wbr/>
24554for a hypothetical camera device with an active array of size <code>(2000,<wbr/>1500)</code>.<wbr/> Note that
24555several of these examples use non-centered crop regions for ease of illustration; such
24556regions are only supported on devices with FREEFORM capability
24557(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>),<wbr/> but this does not affect the way the crop
24558rules work otherwise.<wbr/></p>
24559<ul>
24560<li>Camera Configuration:<ul>
24561<li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li>
24562<li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li>
24563<li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li>
24564</ul>
24565</li>
24566<li>Case #1: 4:3 crop region with 2x digital zoom<ul>
24567<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code></li>
24568<li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-ratio.png"/></li>
24569<li><code>640x480</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code> (equal to crop region)</li>
24570<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
24571</ul>
24572</li>
24573<li>Case #2: 16:9 crop region with ~1.<wbr/>5x digital zoom.<wbr/><ul>
24574<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code></li>
24575<li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-169-ratio.png"/></li>
24576<li><code>640x480</code> stream source area: <code>(666,<wbr/> 375,<wbr/> 1666,<wbr/> 1125)</code> (pillarboxed)</li>
24577<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 375,<wbr/> 1833,<wbr/> 1125)</code> (equal to crop region)</li>
24578</ul>
24579</li>
24580<li>Case #3: 1:1 crop region with ~2.<wbr/>6x digital zoom.<wbr/><ul>
24581<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1250,<wbr/> 1125)</code></li>
24582<li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-11-ratio.png"/></li>
24583<li><code>640x480</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1250,<wbr/> 1031)</code> (letterboxed)</li>
24584<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 543,<wbr/> 1250,<wbr/> 957)</code> (letterboxed)</li>
24585</ul>
24586</li>
24587<li>Case #4: Replace <code>640x480</code> stream with <code>1024x1024</code> stream,<wbr/> with 4:3 crop region:<ul>
24588<li>Crop region: <code>Rect(500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</code></li>
24589<li><img alt="Square output, 4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.scaler.cropRegion/crop-region-43-square-ratio.png"/></li>
24590<li><code>1024x1024</code> stream source area: <code>(625,<wbr/> 375,<wbr/> 1375,<wbr/> 1125)</code> (pillarboxed)</li>
24591<li><code>1280x720</code> stream source area: <code>(500,<wbr/> 469,<wbr/> 1500,<wbr/> 1031)</code> (letterboxed)</li>
24592<li>Note that in this case,<wbr/> neither of the two outputs is a subset of the other,<wbr/> with
24593 each containing image data the other doesn't have.<wbr/></li>
24594</ul>
24595</li>
24596</ul>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070024597<p>If the coordinate system is <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> the width and height
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070024598of the crop region cannot be set to be smaller than
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070024599<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
24600<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>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070024601<p>If the coordinate system is <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> the width
24602and height of the crop region cannot be set to be smaller than
24603<code>floor( preCorrectionActiveArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>
24604and
24605<code>floor( preCorrectionActiveArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/>
24606respectively.<wbr/></p>
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080024607<p>The camera device may adjust the crop region to account for rounding and other hardware
24608requirements; the final crop region used will be included in the output capture result.<wbr/></p>
Shuzhen Wang37705612020-09-14 11:40:07 -070024609<p>The camera sensor output aspect ratio depends on factors such as output stream
24610combination and <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>,<wbr/> and shouldn't be adjusted by using
24611this control.<wbr/> And the camera device will treat different camera sensor output sizes
24612(potentially with in-sensor crop) as the same crop of
24613<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> As a result,<wbr/> the application shouldn't assume the
24614maximum crop region always maps to the same aspect ratio or field of view for the
24615sensor output.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080024616<p>Starting from API level 30,<wbr/> it's strongly recommended to use <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>
24617to take advantage of better support for zoom with logical multi-camera.<wbr/> The benefits
24618include better precision with optical-digital zoom combination,<wbr/> and ability to do
24619zoom-out from 1.<wbr/>0x.<wbr/> When using <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for zoom,<wbr/> the crop region in
Shuzhen Wang37705612020-09-14 11:40:07 -070024620the capture request should be left as the default activeArray size.<wbr/> The
Shuzhen Wangb6149792019-11-07 15:59:22 -080024621coordinate system is post-zoom,<wbr/> meaning that the activeArraySize or
Eino-Ville Talvalac0b77dc2020-01-06 16:08:56 -080024622preCorrectionActiveArraySize covers the camera device's field of view "after" zoom.<wbr/> See
24623<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/></p>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080024624<p>For camera devices with the
24625<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
24626capability,<wbr/> <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/>
24627<a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the
24628coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
24629<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070024630 </td>
24631 </tr>
24632
24633 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024634 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070024635 </tr>
24636 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024637 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070024638 <p>The output streams must maintain square pixels at all
Igor Murashkin0b080452013-12-27 15:30:25 -080024639times,<wbr/> no matter what the relative aspect ratios of the
24640crop region and the stream are.<wbr/> Negative values for
Igor Murashkin8aa2a112013-12-09 12:06:17 -080024641corner are allowed for raw output if full pixel array is
Igor Murashkin0b080452013-12-27 15:30:25 -080024642larger than active pixel array.<wbr/> Width and height may be
24643rounded to nearest larger supportable width,<wbr/> especially
24644for raw output,<wbr/> where only a few fixed scales may be
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070024645possible.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080024646<p>If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is supported by the HAL,<wbr/> the HAL must report the zoom
24647ratio via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and change the coordinate system such that
24648<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>(depending on whether <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> is supported) is used to
24649represent the camera field-of-view after zoom.<wbr/> see <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for
24650details.<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070024651<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024652 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024653 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080024654
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024655 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024656 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024657
Eino-Ville Talvala9cbba082020-01-06 13:06:22 -080024658
24659 <tr class="entry" id="dynamic_android.scaler.rotateAndCrop">
24660 <td class="entry_name
24661 " rowspan="5">
24662 android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop
24663 </td>
24664 <td class="entry_type">
24665 <span class="entry_type_name entry_type_name_enum">byte</span>
24666
24667 <span class="entry_type_visibility"> [public]</span>
24668
24669
24670
24671
24672
24673 <ul class="entry_type_enum">
24674 <li>
24675 <span class="entry_type_enum_name">NONE (v3.5)</span>
24676 <span class="entry_type_enum_notes"><p>No rotate and crop is applied.<wbr/> Processed outputs are in the sensor orientation.<wbr/></p></span>
24677 </li>
24678 <li>
24679 <span class="entry_type_enum_name">90 (v3.5)</span>
24680 <span class="entry_type_enum_notes"><p>Processed images are rotated by 90 degrees clockwise,<wbr/> and then cropped
24681to the original aspect ratio.<wbr/></p></span>
24682 </li>
24683 <li>
24684 <span class="entry_type_enum_name">180 (v3.5)</span>
24685 <span class="entry_type_enum_notes"><p>Processed images are rotated by 180 degrees.<wbr/> Since the aspect ratio does not
24686change,<wbr/> no cropping is performed.<wbr/></p></span>
24687 </li>
24688 <li>
24689 <span class="entry_type_enum_name">270 (v3.5)</span>
24690 <span class="entry_type_enum_notes"><p>Processed images are rotated by 270 degrees clockwise,<wbr/> and then cropped
24691to the original aspect ratio.<wbr/></p></span>
24692 </li>
24693 <li>
24694 <span class="entry_type_enum_name">AUTO (v3.5)</span>
24695 <span class="entry_type_enum_notes"><p>The camera API automatically selects the best concrete value for
24696rotate-and-crop based on the application's support for resizability and the current
24697multi-window mode.<wbr/></p>
24698<p>If the application does not support resizing but the display mode for its main
24699Activity is not in a typical orientation,<wbr/> the camera API will set <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code>
24700or some other supported rotation value,<wbr/> depending on device configuration,<wbr/>
24701to ensure preview and captured images are correctly shown to the user.<wbr/> Otherwise,<wbr/>
24702<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> will be selected.<wbr/></p>
24703<p>When a value other than NONE is selected,<wbr/> several metadata fields will also be parsed
24704differently to ensure that coordinates are correctly handled for features like drawing
24705face detection boxes or passing in tap-to-focus coordinates.<wbr/> The camera API will
24706convert positions in the active array coordinate system to/<wbr/>from the cropped-and-rotated
24707coordinate system to make the operation transparent for applications.<wbr/></p>
24708<p>No coordinate mapping will be done when the application selects a non-AUTO mode.<wbr/></p></span>
24709 </li>
24710 </ul>
24711
24712 </td> <!-- entry_type -->
24713
24714 <td class="entry_description">
24715 <p>Whether a rotation-and-crop operation is applied to processed
24716outputs from the camera.<wbr/></p>
24717 </td>
24718
24719 <td class="entry_units">
24720 </td>
24721
24722 <td class="entry_range">
24723 <p><a href="#static_android.scaler.availableRotateAndCropModes">android.<wbr/>scaler.<wbr/>available<wbr/>Rotate<wbr/>And<wbr/>Crop<wbr/>Modes</a></p>
24724 </td>
24725
24726 <td class="entry_hal_version">
24727 <p>3.<wbr/>5</p>
24728 </td>
24729
24730 <td class="entry_tags">
24731 </td>
24732
24733 </tr>
24734 <tr class="entries_header">
24735 <th class="th_details" colspan="6">Details</th>
24736 </tr>
24737 <tr class="entry_cont">
24738 <td class="entry_details" colspan="6">
24739 <p>This control is primarily intended to help camera applications with no support for
24740multi-window modes to work correctly on devices where multi-window scenarios are
24741unavoidable,<wbr/> such as foldables or other devices with variable display geometry or more
24742free-form window placement (such as laptops,<wbr/> which often place portrait-orientation apps
24743in landscape with pillarboxing).<wbr/></p>
24744<p>If supported,<wbr/> the default value is <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code>,<wbr/> which allows the camera API
24745to enable backwards-compatibility support for applications that do not support resizing
24746/<wbr/> multi-window modes,<wbr/> when the device is in fact in a multi-window mode (such as inset
24747portrait on laptops,<wbr/> or on a foldable device in some fold states).<wbr/> In addition,<wbr/>
24748<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code> and <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> will always be available if this control
24749is supported by the device.<wbr/> If not supported,<wbr/> devices API level 30 or higher will always
24750list only <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>NONE</code>.<wbr/></p>
24751<p>When <code>CROP_<wbr/>AUTO</code> is in use,<wbr/> and the camera API activates backward-compatibility mode,<wbr/>
24752several metadata fields will also be parsed differently to ensure that coordinates are
24753correctly handled for features like drawing face detection boxes or passing in
24754tap-to-focus coordinates.<wbr/> The camera API will convert positions in the active array
24755coordinate system to/<wbr/>from the cropped-and-rotated coordinate system to make the
24756operation transparent for applications.<wbr/> The following controls are affected:</p>
24757<ul>
24758<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
24759<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
24760<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
24761<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
24762</ul>
24763<p>Capture results will contain the actual value selected by the API;
24764<code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO</code> will never be seen in a capture result.<wbr/></p>
24765<p>Applications can also select their preferred cropping mode,<wbr/> either to opt out of the
24766backwards-compatibility treatment,<wbr/> or to use the cropping feature themselves as needed.<wbr/>
24767In this case,<wbr/> no coordinate translation will be done automatically,<wbr/> and all controls
24768will continue to use the normal active array coordinates.<wbr/></p>
24769<p>Cropping and rotating is done after the application of digital zoom (via either
24770<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>),<wbr/> but before each individual
24771output is further cropped and scaled.<wbr/> It only affects processed outputs such as
24772YUV,<wbr/> PRIVATE,<wbr/> and JPEG.<wbr/> It has no effect on RAW outputs.<wbr/></p>
24773<p>When <code>CROP_<wbr/>90</code> or <code>CROP_<wbr/>270</code> are selected,<wbr/> there is a significant loss to the field of
24774view.<wbr/> For example,<wbr/> with a 4:3 aspect ratio output of 1600x1200,<wbr/> <code>CROP_<wbr/>90</code> will still
24775produce 1600x1200 output,<wbr/> but these buffers are cropped from a vertical 3:4 slice at the
24776center of the 4:3 area,<wbr/> then rotated to be 4:3,<wbr/> and then upscaled to 1600x1200.<wbr/> Only
2477756.<wbr/>25% of the original FOV is still visible.<wbr/> In general,<wbr/> for an aspect ratio of <code>w:h</code>,<wbr/>
24778the crop and rotate operation leaves <code>(h/<wbr/>w)^2</code> of the field of view visible.<wbr/> For 16:9,<wbr/>
24779this is ~31.<wbr/>6%.<wbr/></p>
24780<p>As a visual example,<wbr/> the figure below shows the effect of <code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code> on the
24781outputs for the following parameters:</p>
24782<ul>
24783<li>Sensor active array: <code>2000x1500</code></li>
24784<li>Crop region: top-left: <code>(500,<wbr/> 375)</code>,<wbr/> size: <code>(1000,<wbr/> 750)</code> (4:3 aspect ratio)</li>
24785<li>Output streams: YUV <code>640x480</code> and YUV <code>1280x720</code></li>
24786<li><code>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>90</code></li>
24787</ul>
24788<p><img alt="Effect of ROTATE_AND_CROP_90" src="images/camera2/metadata/android.scaler.rotateAndCrop/crop-region-rotate-90-43-ratio.png"/></p>
24789<p>With these settings,<wbr/> the regions of the active array covered by the output streams are:</p>
24790<ul>
24791<li>640x480 stream crop: top-left: <code>(219,<wbr/> 375)</code>,<wbr/> size: <code>(562,<wbr/> 750)</code></li>
24792<li>1280x720 stream crop: top-left: <code>(289,<wbr/> 375)</code>,<wbr/> size: <code>(422,<wbr/> 750)</code></li>
24793</ul>
24794<p>Since the buffers are rotated,<wbr/> the buffers as seen by the application are:</p>
24795<ul>
24796<li>640x480 stream: top-left: <code>(781,<wbr/> 375)</code> on active array,<wbr/> size: <code>(640,<wbr/> 480)</code>,<wbr/> downscaled 1.<wbr/>17x from sensor pixels</li>
24797<li>1280x720 stream: top-left: <code>(711,<wbr/> 375)</code> on active array,<wbr/> size: <code>(1280,<wbr/> 720)</code>,<wbr/> upscaled 1.<wbr/>71x from sensor pixels</li>
24798</ul>
24799 </td>
24800 </tr>
24801
24802 <tr class="entries_header">
24803 <th class="th_details" colspan="6">HAL Implementation Details</th>
24804 </tr>
24805 <tr class="entry_cont">
24806 <td class="entry_details" colspan="6">
24807 <p>ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will never be sent to the HAL,<wbr/> though it must be set as the default
24808value in all the capture request templates by the HAL.<wbr/> The camera service will
24809translate AUTO to a specific rotation value based on the current application's
24810multi-window state and its support of resizability.<wbr/></p>
24811<p>The HAL also does not need to consider coordinate transforms for ROTATE_<wbr/>AND_<wbr/>CROP - all
24812capture request and result fields should be kept in the active array coordinate frame.<wbr/>
24813Any translation required to implement ROTATE_<wbr/>AND_<wbr/>CROP_<wbr/>AUTO will be handled by the camera
24814service.<wbr/></p>
24815 </td>
24816 </tr>
24817
24818 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24819 <!-- end of entry -->
24820
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024821
24822
24823 <!-- end of kind -->
24824 </tbody>
24825
24826 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024827 <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024828
24829
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024830 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024831
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070024832 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024833 <tr>
24834 <th class="th_name">Property Name</th>
24835 <th class="th_type">Type</th>
24836 <th class="th_description">Description</th>
24837 <th class="th_units">Units</th>
24838 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024839 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024840 <th class="th_tags">Tags</th>
24841 </tr>
24842 </thead>
24843
24844 <tbody>
24845
24846
24847
24848
24849
24850
24851
24852
24853
24854
24855 <tr class="entry" id="controls_android.sensor.exposureTime">
Igor Murashkin6c936c12014-05-13 14:51:49 -070024856 <td class="entry_name
24857 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080024858 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080024859 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024860 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080024861 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024862
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070024863 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024864
24865
Igor Murashkinca256272014-10-02 15:27:09 -070024866 <span class="entry_type_hwlevel">[full] </span>
24867
Igor Murashkin6c936c12014-05-13 14:51:49 -070024868
24869
24870
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024871 </td> <!-- entry_type -->
24872
24873 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080024874 <p>Duration each pixel is exposed to
24875light.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024876 </td>
24877
24878 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070024879 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024880 </td>
24881
24882 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080024883 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024884 </td>
24885
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024886 <td class="entry_hal_version">
24887 <p>3.<wbr/>2</p>
24888 </td>
24889
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024890 <td class="entry_tags">
24891 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080024892 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024893 </ul>
24894 </td>
24895
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024896 </tr>
24897 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024898 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024899 </tr>
24900 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024901 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070024902 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
24903duration exposed to the nearest possible value (rather than expose longer).<wbr/>
24904The final exposure time used will be available in the output capture result.<wbr/></p>
24905<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
24906OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024907 </td>
24908 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080024909
24910
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024911 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024912 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024913
24914
24915 <tr class="entry" id="controls_android.sensor.frameDuration">
Igor Murashkin6c936c12014-05-13 14:51:49 -070024916 <td class="entry_name
24917 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080024918 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080024919 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024920 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080024921 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024922
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070024923 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024924
24925
Igor Murashkinca256272014-10-02 15:27:09 -070024926 <span class="entry_type_hwlevel">[full] </span>
24927
Igor Murashkin6c936c12014-05-13 14:51:49 -070024928
24929
24930
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024931 </td> <!-- entry_type -->
24932
24933 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080024934 <p>Duration from start of frame exposure to
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080024935start of next frame exposure.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024936 </td>
24937
24938 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070024939 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024940 </td>
24941
24942 <td class="entry_range">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024943 <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/>
24944The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
24945 </td>
24946
24947 <td class="entry_hal_version">
24948 <p>3.<wbr/>2</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024949 </td>
24950
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024951 <td class="entry_tags">
24952 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080024953 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080024954 </ul>
24955 </td>
24956
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024957 </tr>
24958 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024959 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080024960 </tr>
24961 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024962 <td class="entry_details" colspan="6">
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080024963 <p>The maximum frame rate that can be supported by a camera subsystem is
24964a function of many factors:</p>
24965<ul>
24966<li>Requested resolutions of output image streams</li>
24967<li>Availability of binning /<wbr/> skipping modes on the imager</li>
24968<li>The bandwidth of the imager interface</li>
24969<li>The bandwidth of the various ISP processing blocks</li>
24970</ul>
24971<p>Since these factors can vary greatly between different ISPs and
24972sensors,<wbr/> the camera abstraction tries to represent the bandwidth
24973restrictions with as simple a model as possible.<wbr/></p>
24974<p>The model presented has the following characteristics:</p>
24975<ul>
24976<li>The image sensor is always configured to output the smallest
24977resolution possible given the application's requested output stream
24978sizes.<wbr/> The smallest resolution is defined as being at least as large
24979as the largest requested output stream size; the camera pipeline must
24980never digitally upsample sensor data when the crop region covers the
24981whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
24982resolutions are configured,<wbr/> the sensor can provide a higher frame
24983rate.<wbr/></li>
24984<li>Since any request may use any or all the currently configured
24985output streams,<wbr/> the sensor and ISP must be configured to support
24986scaling a single capture to all the streams at the same time.<wbr/> This
24987means the camera pipeline must be ready to produce the largest
24988requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
24989frame rate of a given configured stream set is governed only by the
24990largest requested stream resolution.<wbr/></li>
24991<li>Using more than one output stream in a request does not affect the
24992frame duration.<wbr/></li>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080024993<li>Certain format-streams may need to do additional background processing
24994before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
24995can run concurrently to the rest of the camera pipeline,<wbr/> but
24996cannot process more than 1 capture at a time.<wbr/></li>
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080024997</ul>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080024998<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070024999<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025000These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
25001possible for a given stream configuration.<wbr/></p>
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080025002<p>Specifically,<wbr/> the application can use the following rules to
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080025003determine the minimum frame duration it can request from the camera
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080025004device:</p>
25005<ol>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025006<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
25007<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>
25008(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
25009<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
25010out 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>
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080025011</ol>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070025012<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>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025013using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
25014state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
25015this special kind of request be called <code>Rsimple</code>.<wbr/></p>
25016<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
25017new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
25018<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
25019buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
25020<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>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025021<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
25022OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025023 </td>
25024 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025025
Igor Murashkin6c936c12014-05-13 14:51:49 -070025026 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025027 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin6c936c12014-05-13 14:51:49 -070025028 </tr>
25029 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025030 <td class="entry_details" colspan="6">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025031 <p>For more details about stalling,<wbr/> see
25032<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
25033 </td>
25034 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025035
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025036 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025037 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025038
25039
25040 <tr class="entry" id="controls_android.sensor.sensitivity">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025041 <td class="entry_name
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025042 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080025043 android.<wbr/>sensor.<wbr/>sensitivity
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025044 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025045 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080025046 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025047
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070025048 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025049
25050
Igor Murashkinca256272014-10-02 15:27:09 -070025051 <span class="entry_type_hwlevel">[full] </span>
25052
Igor Murashkin6c936c12014-05-13 14:51:49 -070025053
25054
25055
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025056 </td> <!-- entry_type -->
25057
25058 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025059 <p>The amount of gain applied to sensor data
25060before processing.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025061 </td>
25062
25063 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080025064 ISO arithmetic units
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025065 </td>
25066
25067 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080025068 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025069 </td>
25070
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025071 <td class="entry_hal_version">
25072 <p>3.<wbr/>2</p>
25073 </td>
25074
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025075 <td class="entry_tags">
25076 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080025077 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025078 </ul>
25079 </td>
25080
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025081 </tr>
25082 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025083 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025084 </tr>
25085 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025086 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025087 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
25088as defined in ISO 12232:2006.<wbr/></p>
25089<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
25090if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
25091is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
25092<p>If the camera device cannot apply the exact sensitivity
25093requested,<wbr/> it will reduce the gain to the nearest supported
25094value.<wbr/> The final sensitivity used will be available in the
25095output capture result.<wbr/></p>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080025096<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
25097OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
Shuzhen Wang04961972019-07-08 15:03:24 -070025098<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied
25099to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
25100<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/> In case the application uses the sensor
25101sensitivity from last capture result of an auto request for a manual request,<wbr/> in order
25102to achieve the same brightness in the output image,<wbr/> the application should also
25103set postRawSensitivityBoost.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025104 </td>
25105 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025106
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025107 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025108 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025109 </tr>
25110 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025111 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025112 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
25113 </td>
25114 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025115
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025116 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025117 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025118
Igor Murashkina46e02f2014-01-09 17:43:38 -080025119
25120 <tr class="entry" id="controls_android.sensor.testPatternData">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025121 <td class="entry_name
25122 " rowspan="5">
Igor Murashkina46e02f2014-01-09 17:43:38 -080025123 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
25124 </td>
25125 <td class="entry_type">
25126 <span class="entry_type_name">int32</span>
25127 <span class="entry_type_container">x</span>
25128
25129 <span class="entry_type_array">
25130 4
25131 </span>
25132 <span class="entry_type_visibility"> [public]</span>
25133
25134
Igor Murashkin6c936c12014-05-13 14:51:49 -070025135
25136
25137
Igor Murashkinca256272014-10-02 15:27:09 -070025138
Igor Murashkina46e02f2014-01-09 17:43:38 -080025139 </td> <!-- entry_type -->
25140
25141 <td class="entry_description">
25142 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
25143when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
25144 </td>
25145
25146 <td class="entry_units">
25147 </td>
25148
25149 <td class="entry_range">
Igor Murashkina46e02f2014-01-09 17:43:38 -080025150 </td>
25151
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025152 <td class="entry_hal_version">
25153 <p>3.<wbr/>2</p>
25154 </td>
25155
Igor Murashkina46e02f2014-01-09 17:43:38 -080025156 <td class="entry_tags">
25157 </td>
25158
25159 </tr>
25160 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025161 <th class="th_details" colspan="6">Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025162 </tr>
25163 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025164 <td class="entry_details" colspan="6">
Igor Murashkina46e02f2014-01-09 17:43:38 -080025165 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
25166The camera device then uses the most significant X bits
25167that correspond to how many bits are in its Bayer raw sensor
25168output.<wbr/></p>
25169<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2517010 most significant bits from each color channel.<wbr/></p>
25171 </td>
25172 </tr>
25173
25174 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025175 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025176 </tr>
25177 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025178 <td class="entry_details" colspan="6">
Igor Murashkina46e02f2014-01-09 17:43:38 -080025179
25180 </td>
25181 </tr>
25182
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025183 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025184 <!-- end of entry -->
25185
25186
25187 <tr class="entry" id="controls_android.sensor.testPatternMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025188 <td class="entry_name
25189 " rowspan="5">
Igor Murashkina46e02f2014-01-09 17:43:38 -080025190 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
25191 </td>
25192 <td class="entry_type">
25193 <span class="entry_type_name entry_type_name_enum">int32</span>
25194
25195 <span class="entry_type_visibility"> [public]</span>
25196
Igor Murashkin6c936c12014-05-13 14:51:49 -070025197
25198
25199
Igor Murashkinca256272014-10-02 15:27:09 -070025200
Igor Murashkina46e02f2014-01-09 17:43:38 -080025201 <ul class="entry_type_enum">
25202 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025203 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070025204 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
25205device returns captures from the image sensor.<wbr/></p>
25206<p>This is the default if the key is not set.<wbr/></p></span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025207 </li>
25208 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025209 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025210 <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
25211respective color channel provided in
25212<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
25213<p>For example:</p>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070025214<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
Igor Murashkina46e02f2014-01-09 17:43:38 -080025215</code></pre>
25216<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070025217<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
Igor Murashkina46e02f2014-01-09 17:43:38 -080025218</code></pre>
25219<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
25220are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
25221 </li>
25222 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025223 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025224 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
25225<p>The vertical bars (left-to-right) are as follows:</p>
25226<ul>
25227<li>100% white</li>
25228<li>yellow</li>
25229<li>cyan</li>
25230<li>green</li>
25231<li>magenta</li>
25232<li>red</li>
25233<li>blue</li>
25234<li>black</li>
25235</ul>
25236<p>In general the image would look like the following:</p>
25237<pre><code>W Y C G M R B K
25238W Y C G M R B K
25239W Y C G M R B K
25240W Y C G M R B K
25241W Y C G M R B K
25242.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
25243.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
25244.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
25245
25246(B = Blue,<wbr/> K = Black)
25247</code></pre>
25248<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
25249When this is not possible,<wbr/> the bar size should be rounded
25250down to the nearest integer and the pattern can repeat
25251on the right side.<wbr/></p>
25252<p>Each bar's height must always take up the full sensor
25253pixel array height.<wbr/></p>
25254<p>Each pixel in this test pattern must be set to either
252550% intensity or 100% intensity.<wbr/></p></span>
25256 </li>
25257 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025258 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025259 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
25260each bar should start at its specified color at the top,<wbr/>
25261and fade to gray at the bottom.<wbr/></p>
25262<p>Furthermore each bar is further subdivided into a left and
25263right half.<wbr/> The left half should have a smooth gradient,<wbr/>
25264and the right half should have a quantized gradient.<wbr/></p>
25265<p>In particular,<wbr/> the right half's should consist of blocks of the
25266same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
25267<p>The least significant bits in the quantized gradient should
25268be copied from the most significant bits of the smooth gradient.<wbr/></p>
25269<p>The height of each bar should always be a multiple of 128.<wbr/>
25270When this is not the case,<wbr/> the pattern should repeat at the bottom
25271of the image.<wbr/></p></span>
25272 </li>
25273 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025274 <span class="entry_type_enum_name">PN9 (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025275 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
25276generated from a PN9 512-bit sequence (typically implemented
25277in hardware with a linear feedback shift register).<wbr/></p>
25278<p>The generator should be reset at the beginning of each frame,<wbr/>
25279and thus each subsequent raw frame with this test pattern should
25280be exactly the same as the last.<wbr/></p></span>
25281 </li>
25282 <li>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070025283 <span class="entry_type_enum_name">BLACK (v3.6)</span>
25284 <span class="entry_type_enum_hidden">[test]</span>
25285 <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p>
25286<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for
25287<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/> It is recommended that devices implement full
25288SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a
25289test pattern suitable for privacy use cases.<wbr/></p></span>
25290 </li>
25291 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025292 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025293 <span class="entry_type_enum_value">256</span>
25294 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
25295available only on this camera device are at least this numeric
25296value.<wbr/></p>
25297<p>All of the custom test patterns will be static
25298(that is the raw image must not vary from frame to frame).<wbr/></p></span>
25299 </li>
25300 </ul>
25301
25302 </td> <!-- entry_type -->
25303
25304 <td class="entry_description">
25305 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
25306doing a real exposure from the camera.<wbr/></p>
25307 </td>
25308
25309 <td class="entry_units">
25310 </td>
25311
25312 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025313 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025314 </td>
25315
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025316 <td class="entry_hal_version">
25317 <p>3.<wbr/>2</p>
25318 </td>
25319
Igor Murashkina46e02f2014-01-09 17:43:38 -080025320 <td class="entry_tags">
25321 </td>
25322
25323 </tr>
25324 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025325 <th class="th_details" colspan="6">Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025326 </tr>
25327 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025328 <td class="entry_details" colspan="6">
Igor Murashkina46e02f2014-01-09 17:43:38 -080025329 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070025330by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
Igor Murashkina46e02f2014-01-09 17:43:38 -080025331work as normal.<wbr/></p>
25332<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
25333occur (and that the test pattern remain unmodified,<wbr/> since the flash
25334would not actually affect it).<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025335<p>Defaults to OFF.<wbr/></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025336 </td>
25337 </tr>
25338
25339 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025340 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025341 </tr>
25342 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025343 <td class="entry_details" colspan="6">
Igor Murashkina46e02f2014-01-09 17:43:38 -080025344 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
25345<p>The HAL may choose to substitute test patterns from the sensor
25346with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
25347indistinguishable to the ISP whether the data came from the
25348sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
Shuzhen Wange2324d12021-10-28 17:27:29 -070025349<p>For privacy use cases,<wbr/> if the camera device:</p>
25350<ul>
25351<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li>
25352<li>is a logical multi-camera,<wbr/> and</li>
25353<li>lists testPatternMode as a physical request key,<wbr/></li>
25354</ul>
25355<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns
25356as the logical camera.<wbr/></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025357 </td>
25358 </tr>
25359
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025360 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkina46e02f2014-01-09 17:43:38 -080025361 <!-- end of entry -->
25362
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080025363
25364 <tr class="entry" id="controls_android.sensor.pixelMode">
25365 <td class="entry_name
25366 " rowspan="3">
25367 android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode
25368 </td>
25369 <td class="entry_type">
25370 <span class="entry_type_name entry_type_name_enum">byte</span>
25371
25372 <span class="entry_type_visibility"> [public]</span>
25373
25374
25375
25376
25377
25378 <ul class="entry_type_enum">
25379 <li>
25380 <span class="entry_type_enum_name">DEFAULT (v3.6)</span>
25381 <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/> This is the only sensor pixel mode
25382supported unless a camera device advertises
25383<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>.<wbr/></p></span>
25384 </li>
25385 <li>
25386 <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span>
25387 <span class="entry_type_enum_notes"><p>This sensor pixel mode is offered by devices with capability
25388<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>.<wbr/>
25389In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger
25390image sizes.<wbr/></p></span>
25391 </li>
25392 </ul>
25393
25394 </td> <!-- entry_type -->
25395
25396 <td class="entry_description">
25397 <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p>
25398 </td>
25399
25400 <td class="entry_units">
25401 </td>
25402
25403 <td class="entry_range">
25404 </td>
25405
25406 <td class="entry_hal_version">
25407 <p>3.<wbr/>6</p>
25408 </td>
25409
25410 <td class="entry_tags">
25411 </td>
25412
25413 </tr>
25414 <tr class="entries_header">
25415 <th class="th_details" colspan="6">Details</th>
25416 </tr>
25417 <tr class="entry_cont">
25418 <td class="entry_details" colspan="6">
25419 <p>This key controls whether the camera sensor operates in
25420<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
25421mode or not.<wbr/> By default,<wbr/> all camera devices operate in
25422<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/>
25423When operating in
25424<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode,<wbr/> sensors
25425with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
25426capability would typically perform pixel binning in order to improve low light
25427performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in
25428<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
25429mode (supported only
25430by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
25431sensors),<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/>
25432The stream configurations supported in
25433<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
25434mode are also different from those of
25435<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/>
25436They can be queried through
25437<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with
25438<a href="https://developer.android.com/reference/CameraCharacteristics.html#SCALER_STREAM_CONFIGURATION_MAP_MAXIMUM_RESOLUTION)">Camera<wbr/>Characteristics#SCALER_<wbr/>STREAM_<wbr/>CONFIGURATION_<wbr/>MAP_<wbr/>MAXIMUM_<wbr/>RESOLUTION)</a>.<wbr/>
25439Unless reported by both
25440<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from
25441<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and
25442<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code>
25443must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are
25444exclusive to each other.<wbr/>
25445This key does not need to be set for reprocess requests.<wbr/></p>
25446 </td>
25447 </tr>
25448
25449
25450 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25451 <!-- end of entry -->
25452
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025453
25454
25455 <!-- end of kind -->
25456 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025457 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025458
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070025459 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025460 <tr>
25461 <th class="th_name">Property Name</th>
25462 <th class="th_type">Type</th>
25463 <th class="th_description">Description</th>
25464 <th class="th_units">Units</th>
25465 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025466 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025467 <th class="th_tags">Tags</th>
25468 </tr>
25469 </thead>
25470
25471 <tbody>
25472
25473
25474
25475
25476
25477
25478
25479
25480
25481
25482
25483
25484 <tr class="entry" id="static_android.sensor.info.activeArraySize">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025485 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025486 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080025487 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025488 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025489 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080025490 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025491 <span class="entry_type_container">x</span>
25492
25493 <span class="entry_type_array">
25494 4
25495 </span>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070025496 <span class="entry_type_visibility"> [public as rectangle]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070025497
25498
Igor Murashkinca256272014-10-02 15:27:09 -070025499 <span class="entry_type_hwlevel">[legacy] </span>
25500
Igor Murashkin6c936c12014-05-13 14:51:49 -070025501
Igor Murashkin0b080452013-12-27 15:30:25 -080025502 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025503
25504
25505 </td> <!-- entry_type -->
25506
25507 <td class="entry_description">
Ruben Brunk40c0fdb2015-06-11 18:23:41 -070025508 <p>The area of the image sensor which corresponds to active pixels after any geometric
25509distortion correction has been applied.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025510 </td>
25511
25512 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025513 Pixel coordinates on the image sensor
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025514 </td>
25515
25516 <td class="entry_range">
25517 </td>
25518
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025519 <td class="entry_hal_version">
25520 <p>3.<wbr/>2</p>
25521 </td>
25522
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025523 <td class="entry_tags">
25524 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070025525 <li><a href="#tag_RAW">RAW</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025526 </ul>
25527 </td>
25528
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025529 </tr>
Zhijun Hebdc94c42014-01-21 18:28:30 -080025530 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025531 <th class="th_details" colspan="6">Details</th>
Zhijun Hebdc94c42014-01-21 18:28:30 -080025532 </tr>
25533 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025534 <td class="entry_details" colspan="6">
Ruben Brunk40c0fdb2015-06-11 18:23:41 -070025535 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
25536the region that actually receives light from the scene) after any geometric correction
25537has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
25538image output formats aside from the raw formats.<wbr/></p>
25539<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
25540the full pixel array,<wbr/> and the size of the full pixel array is given by
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025541<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
Ruben Brunk40c0fdb2015-06-11 18:23:41 -070025542<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
25543<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
25544this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025545<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070025546include black calibration pixels or other inactive regions.<wbr/></p>
25547<p>For devices that do not support <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the active
25548array must be the same as <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>
25549<p>For devices that support <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the active array must
25550be enclosed by <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> The difference between
25551pre-correction active array and active array accounts for scaling or cropping caused
25552by lens geometric distortion correction.<wbr/></p>
25553<p>In general,<wbr/> application should always refer to active array size for controls like
25554metering regions or crop region.<wbr/> Two exceptions are when the application is dealing with
25555RAW image buffers (RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 etc),<wbr/> or when application explicitly set
25556<a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> to OFF.<wbr/> In these cases,<wbr/> application should refer
25557to <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>
Ruben Brunk40c0fdb2015-06-11 18:23:41 -070025558 </td>
25559 </tr>
25560
25561 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025562 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunk40c0fdb2015-06-11 18:23:41 -070025563 </tr>
25564 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025565 <td class="entry_details" colspan="6">
Ruben Brunk40c0fdb2015-06-11 18:23:41 -070025566 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
25567&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
25568The <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>
25569 </td>
25570 </tr>
25571
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025572 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk40c0fdb2015-06-11 18:23:41 -070025573 <!-- end of entry -->
25574
25575
Zhijun He69fc0ea2013-07-17 09:42:58 -070025576 <tr class="entry" id="static_android.sensor.info.sensitivityRange">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025577 <td class="entry_name
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025578 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080025579 android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025580 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025581 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080025582 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025583 <span class="entry_type_container">x</span>
25584
25585 <span class="entry_type_array">
Zhijun He69fc0ea2013-07-17 09:42:58 -070025586 2
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025587 </span>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070025588 <span class="entry_type_visibility"> [public as rangeInt]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070025589
25590
Igor Murashkinca256272014-10-02 15:27:09 -070025591 <span class="entry_type_hwlevel">[full] </span>
25592
Igor Murashkin6c936c12014-05-13 14:51:49 -070025593
Igor Murashkin0b080452013-12-27 15:30:25 -080025594 <div class="entry_type_notes">Range of supported sensitivities</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025595
25596
25597 </td> <!-- entry_type -->
25598
25599 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025600 <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
25601camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025602 </td>
25603
25604 <td class="entry_units">
25605 </td>
25606
25607 <td class="entry_range">
Eino-Ville Talvalad77b2342014-09-25 10:27:48 -070025608 <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025609 </td>
25610
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025611 <td class="entry_hal_version">
25612 <p>3.<wbr/>2</p>
25613 </td>
25614
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025615 <td class="entry_tags">
25616 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080025617 <li><a href="#tag_BC">BC</a></li>
25618 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025619 </ul>
25620 </td>
25621
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025622 </tr>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025623 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025624 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025625 </tr>
25626 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025627 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025628 <p>The values are the standard ISO sensitivity values,<wbr/>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025629as defined in ISO 12232:2006.<wbr/></p>
25630 </td>
25631 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025632
25633
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025634 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025635 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025636
25637
25638 <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025639 <td class="entry_name
Shuzhen Wang75273722018-10-15 12:00:13 -070025640 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080025641 android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025642 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025643 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080025644 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025645
Zhijun Hef769dd92014-04-08 17:22:07 -070025646 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025647
Igor Murashkin6c936c12014-05-13 14:51:49 -070025648
Igor Murashkinca256272014-10-02 15:27:09 -070025649 <span class="entry_type_hwlevel">[full] </span>
25650
Igor Murashkin6c936c12014-05-13 14:51:49 -070025651
25652
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025653 <ul class="entry_type_enum">
25654 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025655 <span class="entry_type_enum_name">RGGB (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025656 </li>
25657 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025658 <span class="entry_type_enum_name">GRBG (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025659 </li>
25660 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025661 <span class="entry_type_enum_name">GBRG (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025662 </li>
25663 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025664 <span class="entry_type_enum_name">BGGR (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025665 </li>
25666 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080025667 <span class="entry_type_enum_name">RGB (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080025668 <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
25669values for each pixel,<wbr/> instead of just 1 16-bit value
25670per pixel.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025671 </li>
Shuzhen Wang75273722018-10-15 12:00:13 -070025672 <li>
Shuzhen Wangb6ca2fe2018-11-20 15:03:13 -080025673 <span class="entry_type_enum_name">MONO (v3.4)</span>
Shuzhen Wang75273722018-10-15 12:00:13 -070025674 <span class="entry_type_enum_notes"><p>Sensor doesn't have any Bayer color filter.<wbr/>
25675Such sensor captures visible light in monochrome.<wbr/> The exact weighting and
25676wavelengths captured is not specified,<wbr/> but generally only includes the visible
25677frequencies.<wbr/> This value implies a MONOCHROME camera.<wbr/></p></span>
25678 </li>
25679 <li>
Shuzhen Wangb6ca2fe2018-11-20 15:03:13 -080025680 <span class="entry_type_enum_name">NIR (v3.4)</span>
Shuzhen Wang75273722018-10-15 12:00:13 -070025681 <span class="entry_type_enum_notes"><p>Sensor has a near infrared filter capturing light with wavelength between
25682roughly 750nm and 1400nm,<wbr/> and the same filter covers the whole sensor array.<wbr/> This
25683value implies a MONOCHROME camera.<wbr/></p></span>
25684 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025685 </ul>
25686
25687 </td> <!-- entry_type -->
25688
25689 <td class="entry_description">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070025690 <p>The arrangement of color filters on sensor;
Igor Murashkin8aa2a112013-12-09 12:06:17 -080025691represents the colors in the top-left 2x2 section of
Shuzhen Wang75273722018-10-15 12:00:13 -070025692the sensor,<wbr/> in reading order,<wbr/> for a Bayer camera,<wbr/> or the
25693light spectrum it captures for MONOCHROME camera.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025694 </td>
25695
25696 <td class="entry_units">
25697 </td>
25698
25699 <td class="entry_range">
25700 </td>
25701
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025702 <td class="entry_hal_version">
25703 <p>3.<wbr/>2</p>
25704 </td>
25705
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025706 <td class="entry_tags">
25707 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070025708 <li><a href="#tag_RAW">RAW</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025709 </ul>
25710 </td>
25711
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025712 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025713
Shuzhen Wang75273722018-10-15 12:00:13 -070025714 <tr class="entries_header">
25715 <th class="th_details" colspan="6">HAL Implementation Details</th>
25716 </tr>
25717 <tr class="entry_cont">
25718 <td class="entry_details" colspan="6">
25719 <p>Starting from Android Q,<wbr/> the colorFilterArrangement for a MONOCHROME camera must be
25720single color patterns,<wbr/> such as MONO or NIR.<wbr/></p>
25721 </td>
25722 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025723
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025724 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025725 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025726
25727
25728 <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025729 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025730 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080025731 android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025732 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025733 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080025734 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025735 <span class="entry_type_container">x</span>
25736
25737 <span class="entry_type_array">
25738 2
25739 </span>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070025740 <span class="entry_type_visibility"> [public as rangeLong]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070025741
25742
Igor Murashkinca256272014-10-02 15:27:09 -070025743 <span class="entry_type_hwlevel">[full] </span>
25744
Igor Murashkin6c936c12014-05-13 14:51:49 -070025745
Igor Murashkin0b080452013-12-27 15:30:25 -080025746 <div class="entry_type_notes">nanoseconds</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025747
25748
25749 </td> <!-- entry_type -->
25750
25751 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025752 <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
25753by this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025754 </td>
25755
25756 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025757 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025758 </td>
25759
25760 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025761 <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
25762capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
25763the maximum exposure time will be greater than 100ms.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025764 </td>
25765
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025766 <td class="entry_hal_version">
25767 <p>3.<wbr/>2</p>
25768 </td>
25769
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025770 <td class="entry_tags">
25771 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080025772 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025773 </ul>
25774 </td>
25775
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025776 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025777
Igor Murashkin061c6002014-01-27 16:00:26 -080025778 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025779 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin061c6002014-01-27 16:00:26 -080025780 </tr>
25781 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025782 <td class="entry_details" colspan="6">
Zhijun He7a8aea62014-03-18 13:37:23 -070025783 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025784The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
25785100ms.<wbr/></p>
Igor Murashkin061c6002014-01-27 16:00:26 -080025786 </td>
25787 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025788
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025789 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025790 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025791
25792
25793 <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025794 <td class="entry_name
25795 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080025796 android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025797 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025798 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080025799 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025800
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070025801 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025802
25803
Igor Murashkinca256272014-10-02 15:27:09 -070025804 <span class="entry_type_hwlevel">[full] </span>
25805
Igor Murashkin6c936c12014-05-13 14:51:49 -070025806
25807
25808
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025809 </td> <!-- entry_type -->
25810
25811 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025812 <p>The maximum possible frame duration (minimum frame rate) for
25813<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025814 </td>
25815
25816 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025817 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025818 </td>
25819
25820 <td class="entry_range">
Zhijun He7a8aea62014-03-18 13:37:23 -070025821 <p>For FULL capability devices
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025822(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025823 </td>
25824
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025825 <td class="entry_hal_version">
25826 <p>3.<wbr/>2</p>
25827 </td>
25828
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025829 <td class="entry_tags">
25830 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080025831 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025832 </ul>
25833 </td>
25834
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025835 </tr>
25836 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025837 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025838 </tr>
25839 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025840 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025841 <p>Attempting to use frame durations beyond the maximum will result in the frame
25842duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
25843durations.<wbr/></p>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070025844<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
25845for the minimum frame duration values.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025846 </td>
25847 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025848
Igor Murashkin061c6002014-01-27 16:00:26 -080025849 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025850 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin061c6002014-01-27 16:00:26 -080025851 </tr>
25852 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025853 <td class="entry_details" colspan="6">
Zhijun He7a8aea62014-03-18 13:37:23 -070025854 <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
25855The maximum of the range SHOULD be at least
258561 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080025857<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
25858equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
25859value (since exposure time overrides frame duration).<wbr/></p>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080025860<p>Available minimum frame durations for JPEG must be no greater
25861than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
25862minimum frame durations (for that respective size).<wbr/></p>
25863<p>Since JPEG processing is considered offline and can take longer than
25864a single uncompressed capture,<wbr/> refer to
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080025865<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080025866for details about encoding this scenario.<wbr/></p>
Igor Murashkin061c6002014-01-27 16:00:26 -080025867 </td>
25868 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025869
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025870 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025871 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025872
25873
25874 <tr class="entry" id="static_android.sensor.info.physicalSize">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025875 <td class="entry_name
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025876 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080025877 android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025878 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025879 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080025880 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025881 <span class="entry_type_container">x</span>
25882
25883 <span class="entry_type_array">
25884 2
25885 </span>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070025886 <span class="entry_type_visibility"> [public as sizeF]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070025887
25888
Igor Murashkinca256272014-10-02 15:27:09 -070025889 <span class="entry_type_hwlevel">[legacy] </span>
25890
Igor Murashkin6c936c12014-05-13 14:51:49 -070025891
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025892 <div class="entry_type_notes">width x height</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025893
25894
25895 </td> <!-- entry_type -->
25896
25897 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080025898 <p>The physical dimensions of the full pixel
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025899array.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025900 </td>
25901
25902 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025903 Millimeters
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025904 </td>
25905
25906 <td class="entry_range">
25907 </td>
25908
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025909 <td class="entry_hal_version">
25910 <p>3.<wbr/>2</p>
25911 </td>
25912
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025913 <td class="entry_tags">
25914 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080025915 <li><a href="#tag_V1">V1</a></li>
25916 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025917 </ul>
25918 </td>
25919
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025920 </tr>
25921 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025922 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025923 </tr>
25924 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025925 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025926 <p>This is the physical size of the sensor pixel
25927array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025928 </td>
25929 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025930
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025931 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025932 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025933 </tr>
25934 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025935 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070025936 <p>Needed for FOV calculation for old API</p>
25937 </td>
25938 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025939
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025940 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025941 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025942
25943
25944 <tr class="entry" id="static_android.sensor.info.pixelArraySize">
Igor Murashkin6c936c12014-05-13 14:51:49 -070025945 <td class="entry_name
25946 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080025947 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080025948 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025949 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080025950 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025951 <span class="entry_type_container">x</span>
25952
25953 <span class="entry_type_array">
25954 2
25955 </span>
Ruben Brunkcd05eed2014-01-31 12:38:46 -080025956 <span class="entry_type_visibility"> [public as size]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025957
25958
Igor Murashkinca256272014-10-02 15:27:09 -070025959 <span class="entry_type_hwlevel">[legacy] </span>
25960
Igor Murashkin6c936c12014-05-13 14:51:49 -070025961
25962
25963
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025964 </td> <!-- entry_type -->
25965
25966 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025967 <p>Dimensions of the full pixel array,<wbr/> possibly
Zhijun Hebdc94c42014-01-21 18:28:30 -080025968including black calibration pixels.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025969 </td>
25970
25971 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070025972 Pixels
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025973 </td>
25974
25975 <td class="entry_range">
25976 </td>
25977
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025978 <td class="entry_hal_version">
25979 <p>3.<wbr/>2</p>
25980 </td>
25981
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025982 <td class="entry_tags">
25983 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070025984 <li><a href="#tag_RAW">RAW</a></li>
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080025985 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080025986 </ul>
25987 </td>
25988
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025989 </tr>
25990 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025991 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080025992 </tr>
25993 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080025994 <td class="entry_details" colspan="6">
Ruben Brunk40c0fdb2015-06-11 18:23:41 -070025995 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
25996<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
25997the raw buffers produced by this sensor.<wbr/></p>
25998<p>If a camera device supports raw sensor formats,<wbr/> either this or
25999<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
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026000output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
26001(this depends on whether or not the image sensor returns buffers containing pixels that
26002are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070026003<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
Ruben Brunk40c0fdb2015-06-11 18:23:41 -070026004or 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
26005defines the rectangle of active pixels that will be included in processed image
26006formats.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080026007 </td>
26008 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080026009
26010
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026011 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080026012 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026013
26014
26015 <tr class="entry" id="static_android.sensor.info.whiteLevel">
Igor Murashkin6c936c12014-05-13 14:51:49 -070026016 <td class="entry_name
26017 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080026018 android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080026019 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026020 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080026021 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026022
Ruben Brunk92dd85b2014-02-10 19:16:56 -080026023 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026024
26025
Igor Murashkin6c936c12014-05-13 14:51:49 -070026026
26027
26028
Igor Murashkinca256272014-10-02 15:27:09 -070026029
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026030 </td> <!-- entry_type -->
26031
26032 <td class="entry_description">
Ruben Brunk92dd85b2014-02-10 19:16:56 -080026033 <p>Maximum raw value output by sensor.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026034 </td>
26035
26036 <td class="entry_units">
26037 </td>
26038
26039 <td class="entry_range">
Ruben Brunkd9d12132014-03-18 14:37:04 -070026040 <p>&gt; 255 (8-bit output)</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026041 </td>
26042
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026043 <td class="entry_hal_version">
26044 <p>3.<wbr/>2</p>
26045 </td>
26046
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026047 <td class="entry_tags">
26048 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070026049 <li><a href="#tag_RAW">RAW</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026050 </ul>
26051 </td>
26052
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080026053 </tr>
26054 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026055 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080026056 </tr>
26057 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026058 <td class="entry_details" colspan="6">
Ruben Brunk92dd85b2014-02-10 19:16:56 -080026059 <p>This specifies the fully-saturated encoding level for the raw
26060sample values from the sensor.<wbr/> This is typically caused by the
26061sensor becoming highly non-linear or clipping.<wbr/> The minimum for
26062each channel is specified by the offset in the
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070026063<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
Ruben Brunk92dd85b2014-02-10 19:16:56 -080026064<p>The white level is typically determined either by sensor bit depth
Ruben Brunkd9d12132014-03-18 14:37:04 -070026065(8-14 bits is expected),<wbr/> or by the point where the sensor response
Ruben Brunk92dd85b2014-02-10 19:16:56 -080026066becomes too non-linear to be useful.<wbr/> The default value for this is
26067maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
Zhijun Hed363a122015-11-12 17:27:27 -080026068<p>The white level values of captured images may vary for different
26069capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
26070represents a coarse approximation for such case.<wbr/> It is recommended
26071to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
26072by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080026073 </td>
26074 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080026075
Ruben Brunkd9d12132014-03-18 14:37:04 -070026076 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026077 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunkd9d12132014-03-18 14:37:04 -070026078 </tr>
26079 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026080 <td class="entry_details" colspan="6">
Ruben Brunkd9d12132014-03-18 14:37:04 -070026081 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
26082so the value for linear sensors should not be significantly lower
26083than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
26084 </td>
26085 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080026086
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026087 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080026088 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026089
Zhijun He91449c82014-06-12 10:43:32 -070026090
Eino-Ville Talvala122906c2014-07-28 12:49:25 -070026091 <tr class="entry" id="static_android.sensor.info.timestampSource">
Zhijun He91449c82014-06-12 10:43:32 -070026092 <td class="entry_name
Yin-Chia Yehde687b92016-06-06 14:25:11 -070026093 " rowspan="5">
Eino-Ville Talvala122906c2014-07-28 12:49:25 -070026094 android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
Zhijun He91449c82014-06-12 10:43:32 -070026095 </td>
26096 <td class="entry_type">
26097 <span class="entry_type_name entry_type_name_enum">byte</span>
26098
26099 <span class="entry_type_visibility"> [public]</span>
26100
26101
Igor Murashkinca256272014-10-02 15:27:09 -070026102 <span class="entry_type_hwlevel">[legacy] </span>
26103
Zhijun He91449c82014-06-12 10:43:32 -070026104
26105
26106 <ul class="entry_type_enum">
26107 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026108 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
Eino-Ville Talvala31f60ee2020-01-09 15:10:12 -080026109 <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/> but can
26110not be compared to timestamps from other subsystems (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/>
26111or other instances of the same or different camera devices in the same system with
Yin-Chia Yehfc30a532020-03-17 09:38:54 -070026112accuracy.<wbr/> However,<wbr/> the timestamps are roughly in the same timebase as
Eino-Ville Talvala31f60ee2020-01-09 15:10:12 -080026113<a href="https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis">SystemClock#uptimeMillis</a>.<wbr/> The accuracy is sufficient for tasks
26114like A/<wbr/>V synchronization for video recording,<wbr/> at least,<wbr/> and the timestamps can be
26115directly used together with timestamps from the audio subsystem for that task.<wbr/></p>
26116<p>Timestamps between streams and results for a single camera instance are comparable,<wbr/>
26117and the timestamps for all buffers and the result metadata generated by a single
26118capture are identical.<wbr/></p></span>
Zhijun He91449c82014-06-12 10:43:32 -070026119 </li>
26120 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026121 <span class="entry_type_enum_name">REALTIME (v3.2)</span>
Zhijun He91449c82014-06-12 10:43:32 -070026122 <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
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070026123<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
Eino-Ville Talvala31f60ee2020-01-09 15:10:12 -080026124and they can be compared to other timestamps using that base.<wbr/></p>
26125<p>When buffers from a REALTIME device are passed directly to a video encoder from the
26126camera,<wbr/> automatic compensation is done to account for differing timebases of the
26127audio and camera subsystems.<wbr/> If the application is receiving buffers and then later
26128sending them to a video encoder or other application where they are compared with
26129audio subsystem timestamps or similar,<wbr/> this compensation is not present.<wbr/> In those
26130cases,<wbr/> applications need to adjust the timestamps themselves.<wbr/> Since <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a> and <a href="https://developer.android.com/reference/android/os/SystemClock.html#uptimeMillis">SystemClock#uptimeMillis</a> only diverge while the device is asleep,<wbr/> an
26131offset between the two sources can be measured once per active session and applied
26132to timestamps for sufficient accuracy for A/<wbr/>V sync.<wbr/></p></span>
Zhijun He91449c82014-06-12 10:43:32 -070026133 </li>
26134 </ul>
26135
26136 </td> <!-- entry_type -->
26137
26138 <td class="entry_description">
Eino-Ville Talvala122906c2014-07-28 12:49:25 -070026139 <p>The time base source for sensor capture start timestamps.<wbr/></p>
Zhijun He91449c82014-06-12 10:43:32 -070026140 </td>
26141
26142 <td class="entry_units">
26143 </td>
26144
26145 <td class="entry_range">
26146 </td>
26147
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026148 <td class="entry_hal_version">
26149 <p>3.<wbr/>2</p>
26150 </td>
26151
Zhijun He91449c82014-06-12 10:43:32 -070026152 <td class="entry_tags">
26153 <ul class="entry_tags">
26154 <li><a href="#tag_V1">V1</a></li>
26155 </ul>
26156 </td>
26157
26158 </tr>
26159 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026160 <th class="th_details" colspan="6">Details</th>
Zhijun He91449c82014-06-12 10:43:32 -070026161 </tr>
26162 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026163 <td class="entry_details" colspan="6">
Eino-Ville Talvala122906c2014-07-28 12:49:25 -070026164 <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
26165may not based on a time source that can be compared to other system time sources.<wbr/></p>
26166<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
26167can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
Zhijun He91449c82014-06-12 10:43:32 -070026168 </td>
26169 </tr>
26170
Yin-Chia Yehde687b92016-06-06 14:25:11 -070026171 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026172 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yehde687b92016-06-06 14:25:11 -070026173 </tr>
26174 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026175 <td class="entry_details" colspan="6">
Yin-Chia Yehde687b92016-06-06 14:25:11 -070026176 <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
26177source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
26178framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
26179system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
26180SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
26181recording might suffer unexpected behavior.<wbr/></p>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026182<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
Yin-Chia Yehde687b92016-06-06 14:25:11 -070026183tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
26184 </td>
26185 </tr>
Zhijun He91449c82014-06-12 10:43:32 -070026186
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026187 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He91449c82014-06-12 10:43:32 -070026188 <!-- end of entry -->
26189
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080026190
26191 <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
26192 <td class="entry_name
26193 " rowspan="3">
26194 android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
26195 </td>
26196 <td class="entry_type">
26197 <span class="entry_type_name entry_type_name_enum">byte</span>
26198
26199 <span class="entry_type_visibility"> [public as boolean]</span>
26200
26201
26202
26203
26204
26205 <ul class="entry_type_enum">
26206 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026207 <span class="entry_type_enum_name">FALSE (v3.2)</span>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080026208 </li>
26209 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026210 <span class="entry_type_enum_name">TRUE (v3.2)</span>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080026211 </li>
26212 </ul>
26213
26214 </td> <!-- entry_type -->
26215
26216 <td class="entry_description">
26217 <p>Whether the RAW images output from this camera device are subject to
26218lens shading correction.<wbr/></p>
26219 </td>
26220
26221 <td class="entry_units">
26222 </td>
26223
26224 <td class="entry_range">
26225 </td>
26226
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026227 <td class="entry_hal_version">
26228 <p>3.<wbr/>2</p>
26229 </td>
26230
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080026231 <td class="entry_tags">
26232 </td>
26233
26234 </tr>
26235 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026236 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080026237 </tr>
26238 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026239 <td class="entry_details" colspan="6">
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080026240 <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
26241have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
26242not be adjusted for lens shading correction.<wbr/>
26243See <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>
26244<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
26245Devices with RAW capability will always report this information in this key.<wbr/></p>
26246 </td>
26247 </tr>
26248
26249
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026250 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080026251 <!-- end of entry -->
26252
Ruben Brunk93192942015-07-01 11:32:39 -070026253
26254 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
26255 <td class="entry_name
26256 " rowspan="5">
26257 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
26258 </td>
26259 <td class="entry_type">
26260 <span class="entry_type_name">int32</span>
26261 <span class="entry_type_container">x</span>
26262
26263 <span class="entry_type_array">
26264 4
26265 </span>
26266 <span class="entry_type_visibility"> [public as rectangle]</span>
26267
26268
26269 <span class="entry_type_hwlevel">[legacy] </span>
26270
26271
26272 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
26273
26274
26275 </td> <!-- entry_type -->
26276
26277 <td class="entry_description">
26278 <p>The area of the image sensor which corresponds to active pixels prior to the
26279application of any geometric distortion correction.<wbr/></p>
26280 </td>
26281
26282 <td class="entry_units">
26283 Pixel coordinates on the image sensor
26284 </td>
26285
26286 <td class="entry_range">
26287 </td>
26288
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026289 <td class="entry_hal_version">
26290 <p>3.<wbr/>2</p>
26291 </td>
26292
Ruben Brunk93192942015-07-01 11:32:39 -070026293 <td class="entry_tags">
26294 <ul class="entry_tags">
26295 <li><a href="#tag_RAW">RAW</a></li>
26296 </ul>
26297 </td>
26298
26299 </tr>
26300 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026301 <th class="th_details" colspan="6">Details</th>
Ruben Brunk93192942015-07-01 11:32:39 -070026302 </tr>
26303 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026304 <td class="entry_details" colspan="6">
Ruben Brunk93192942015-07-01 11:32:39 -070026305 <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
26306the region that actually receives light from the scene) before any geometric correction
26307has been applied,<wbr/> and should be treated as the active region rectangle for any of the
26308raw formats.<wbr/> All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
26309correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
26310the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
26311<p>The size of this region determines the maximum field of view and the maximum number of
26312pixels that an image from this sensor can contain,<wbr/> prior to the application of
26313geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
26314post-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>
26315field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
26316can be calculated by applying the geometric distortion correction fields to this
26317rectangle,<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>
26318<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
26319dimensions 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/>
Jayant Chowdhary3b8234c2020-10-26 16:45:45 -070026320(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions given in
Ruben Brunk93192942015-07-01 11:32:39 -070026321<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
26322<ol>
26323<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
26324<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
26325to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
26326<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
26327(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
26328buffers is defined relative to the top,<wbr/> left of the
26329<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>
26330<li>If the resulting corrected pixel coordinate is within the region given in
26331<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
26332processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
26333when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
26334</ol>
26335<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>
26336is (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/>
26337<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
26338correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
26339pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
26340with 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)
26341relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
26342<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26343<p>The currently supported fields that correct for geometric distortion are:</p>
26344<ol>
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070026345<li><a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a>.<wbr/></li>
Ruben Brunk93192942015-07-01 11:32:39 -070026346</ol>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070026347<p>If the camera device doesn't support geometric distortion correction,<wbr/> or all of the
26348geometric distortion fields are no-ops,<wbr/> this rectangle will be the same as the
26349post-distortion-corrected rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
Ruben Brunk93192942015-07-01 11:32:39 -070026350<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
26351the full pixel array,<wbr/> and the size of the full pixel array is given by
26352<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26353<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
26354full array may include black calibration pixels or other inactive regions.<wbr/></p>
26355 </td>
26356 </tr>
26357
26358 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026359 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunk93192942015-07-01 11:32:39 -070026360 </tr>
26361 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026362 <td class="entry_details" colspan="6">
Ruben Brunk93192942015-07-01 11:32:39 -070026363 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
26364&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
26365The <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>
26366<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
26367the same as the post-correction active array region given in
26368<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
26369 </td>
26370 </tr>
26371
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026372 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk93192942015-07-01 11:32:39 -070026373 <!-- end of entry -->
26374
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080026375
26376 <tr class="entry" id="static_android.sensor.info.activeArraySizeMaximumResolution">
26377 <td class="entry_name
26378 " rowspan="5">
26379 android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
26380 </td>
26381 <td class="entry_type">
26382 <span class="entry_type_name">int32</span>
26383 <span class="entry_type_container">x</span>
26384
26385 <span class="entry_type_array">
26386 4
26387 </span>
26388 <span class="entry_type_visibility"> [public as rectangle]</span>
26389
26390
26391
26392
26393 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
26394
26395
26396 </td> <!-- entry_type -->
26397
26398 <td class="entry_description">
26399 <p>The area of the image sensor which corresponds to active pixels after any geometric
26400distortion correction has been applied,<wbr/> when the sensor runs in maximum resolution mode.<wbr/></p>
26401 </td>
26402
26403 <td class="entry_units">
26404 Pixel coordinates on the image sensor
26405 </td>
26406
26407 <td class="entry_range">
26408 </td>
26409
26410 <td class="entry_hal_version">
26411 <p>3.<wbr/>6</p>
26412 </td>
26413
26414 <td class="entry_tags">
26415 <ul class="entry_tags">
26416 <li><a href="#tag_RAW">RAW</a></li>
26417 </ul>
26418 </td>
26419
26420 </tr>
26421 <tr class="entries_header">
26422 <th class="th_details" colspan="6">Details</th>
26423 </tr>
26424 <tr class="entry_cont">
26425 <td class="entry_details" colspan="6">
26426 <p>Analogous to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>
26427is set to
26428<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
26429Refer to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> for details,<wbr/> with sensor array related keys
26430replaced with their
26431<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
26432counterparts.<wbr/>
26433This key will only be present for devices which advertise the
26434<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
26435capability.<wbr/></p>
26436 </td>
26437 </tr>
26438
26439 <tr class="entries_header">
26440 <th class="th_details" colspan="6">HAL Implementation Details</th>
26441 </tr>
26442 <tr class="entry_cont">
26443 <td class="entry_details" colspan="6">
26444 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
26445&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
26446The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/></p>
26447 </td>
26448 </tr>
26449
26450 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26451 <!-- end of entry -->
26452
26453
26454 <tr class="entry" id="static_android.sensor.info.pixelArraySizeMaximumResolution">
26455 <td class="entry_name
26456 " rowspan="3">
26457 android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
26458 </td>
26459 <td class="entry_type">
26460 <span class="entry_type_name">int32</span>
26461 <span class="entry_type_container">x</span>
26462
26463 <span class="entry_type_array">
26464 2
26465 </span>
26466 <span class="entry_type_visibility"> [public as size]</span>
26467
26468
26469
26470
26471
26472
26473 </td> <!-- entry_type -->
26474
26475 <td class="entry_description">
26476 <p>Dimensions of the full pixel array,<wbr/> possibly
26477including black calibration pixels,<wbr/> when the sensor runs in maximum resolution mode.<wbr/>
26478Analogous to <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is
26479set to
26480<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26481 </td>
26482
26483 <td class="entry_units">
26484 Pixels
26485 </td>
26486
26487 <td class="entry_range">
26488 </td>
26489
26490 <td class="entry_hal_version">
26491 <p>3.<wbr/>6</p>
26492 </td>
26493
26494 <td class="entry_tags">
26495 <ul class="entry_tags">
26496 <li><a href="#tag_RAW">RAW</a></li>
26497 </ul>
26498 </td>
26499
26500 </tr>
26501 <tr class="entries_header">
26502 <th class="th_details" colspan="6">Details</th>
26503 </tr>
26504 <tr class="entry_cont">
26505 <td class="entry_details" colspan="6">
26506 <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
26507<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
26508the raw buffers produced by this sensor,<wbr/> when it runs in maximum resolution mode.<wbr/> That
26509is,<wbr/> when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
26510<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
26511This key will only be present for devices which advertise the
26512<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
26513capability.<wbr/></p>
26514 </td>
26515 </tr>
26516
26517
26518 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26519 <!-- end of entry -->
26520
26521
26522 <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">
26523 <td class="entry_name
26524 " rowspan="5">
26525 android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution
26526 </td>
26527 <td class="entry_type">
26528 <span class="entry_type_name">int32</span>
26529 <span class="entry_type_container">x</span>
26530
26531 <span class="entry_type_array">
26532 4
26533 </span>
26534 <span class="entry_type_visibility"> [public as rectangle]</span>
26535
26536
26537
26538
26539 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
26540
26541
26542 </td> <!-- entry_type -->
26543
26544 <td class="entry_description">
26545 <p>The area of the image sensor which corresponds to active pixels prior to the
26546application of any geometric distortion correction,<wbr/> when the sensor runs in maximum
26547resolution mode.<wbr/> This key must be used for crop /<wbr/> metering regions,<wbr/> only when
26548<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
26549<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
26550 </td>
26551
26552 <td class="entry_units">
26553 Pixel coordinates on the image sensor
26554 </td>
26555
26556 <td class="entry_range">
26557 </td>
26558
26559 <td class="entry_hal_version">
26560 <p>3.<wbr/>6</p>
26561 </td>
26562
26563 <td class="entry_tags">
26564 <ul class="entry_tags">
26565 <li><a href="#tag_RAW">RAW</a></li>
26566 </ul>
26567 </td>
26568
26569 </tr>
26570 <tr class="entries_header">
26571 <th class="th_details" colspan="6">Details</th>
26572 </tr>
26573 <tr class="entry_cont">
26574 <td class="entry_details" colspan="6">
26575 <p>Analogous to <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/>
26576when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
26577<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/>
26578This key will only be present for devices which advertise the
26579<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
26580capability.<wbr/></p>
26581 </td>
26582 </tr>
26583
26584 <tr class="entries_header">
26585 <th class="th_details" colspan="6">HAL Implementation Details</th>
26586 </tr>
26587 <tr class="entry_cont">
26588 <td class="entry_details" colspan="6">
26589 <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
26590&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
26591The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a></code>.<wbr/></p>
26592<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
26593the same as the post-correction active array region given in
26594<a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a>.<wbr/></p>
26595 </td>
26596 </tr>
26597
26598 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26599 <!-- end of entry -->
26600
26601
26602 <tr class="entry" id="static_android.sensor.info.binningFactor">
26603 <td class="entry_name
26604 " rowspan="3">
26605 android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor
26606 </td>
26607 <td class="entry_type">
26608 <span class="entry_type_name">int32</span>
26609 <span class="entry_type_container">x</span>
26610
26611 <span class="entry_type_array">
26612 2
26613 </span>
26614 <span class="entry_type_visibility"> [public as size]</span>
26615
26616
26617
26618
26619
26620
26621 </td> <!-- entry_type -->
26622
26623 <td class="entry_description">
26624 <p>Dimensions of the group of pixels which are under the same color filter.<wbr/>
26625This specifies the width and height (pair of integers) of the group of pixels which fall
26626under the same color filter for ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION sensors.<wbr/></p>
26627 </td>
26628
26629 <td class="entry_units">
26630 Pixels
26631 </td>
26632
26633 <td class="entry_range">
26634 </td>
26635
26636 <td class="entry_hal_version">
26637 <p>3.<wbr/>6</p>
26638 </td>
26639
26640 <td class="entry_tags">
26641 </td>
26642
26643 </tr>
26644 <tr class="entries_header">
26645 <th class="th_details" colspan="6">Details</th>
26646 </tr>
26647 <tr class="entry_cont">
26648 <td class="entry_details" colspan="6">
26649 <p>Sensors can have pixels grouped together under the same color filter in order
26650to improve various aspects of imaging such as noise reduction,<wbr/> low light
26651performance etc.<wbr/> These groups can be of various sizes such as 2X2 (quad bayer),<wbr/>
266523X3 (nona-bayer).<wbr/> This key specifies the length and width of the pixels grouped under
26653the same color filter.<wbr/></p>
26654<p>This key will not be present if REMOSAIC_<wbr/>REPROCESSING is not supported,<wbr/> since RAW images
26655will have a regular bayer pattern.<wbr/></p>
26656<p>This key will not be present for sensors which don't have the
26657<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
26658capability.<wbr/></p>
26659 </td>
26660 </tr>
26661
26662
26663 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26664 <!-- end of entry -->
26665
Igor Murashkin08b8aad2012-11-29 15:23:03 -080026666
26667
26668
26669
Ruben Brunk7db06e22014-04-15 17:43:56 -070026670 <tr class="entry" id="static_android.sensor.referenceIlluminant1">
Igor Murashkin6c936c12014-05-13 14:51:49 -070026671 <td class="entry_name
26672 " rowspan="5">
Ruben Brunk7db06e22014-04-15 17:43:56 -070026673 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
26674 </td>
26675 <td class="entry_type">
26676 <span class="entry_type_name entry_type_name_enum">byte</span>
26677
26678 <span class="entry_type_visibility"> [public]</span>
26679
Igor Murashkin6c936c12014-05-13 14:51:49 -070026680
26681
26682
Igor Murashkinca256272014-10-02 15:27:09 -070026683
Ruben Brunk7db06e22014-04-15 17:43:56 -070026684 <ul class="entry_type_enum">
26685 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026686 <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026687 <span class="entry_type_enum_value">1</span>
26688 </li>
26689 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026690 <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026691 <span class="entry_type_enum_value">2</span>
26692 </li>
26693 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026694 <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026695 <span class="entry_type_enum_value">3</span>
26696 <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
26697 </li>
26698 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026699 <span class="entry_type_enum_name">FLASH (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026700 <span class="entry_type_enum_value">4</span>
26701 </li>
26702 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026703 <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026704 <span class="entry_type_enum_value">9</span>
26705 </li>
26706 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026707 <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026708 <span class="entry_type_enum_value">10</span>
26709 </li>
26710 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026711 <span class="entry_type_enum_name">SHADE (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026712 <span class="entry_type_enum_value">11</span>
26713 </li>
26714 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026715 <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026716 <span class="entry_type_enum_value">12</span>
26717 <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
26718 </li>
26719 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026720 <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026721 <span class="entry_type_enum_value">13</span>
26722 <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
26723 </li>
26724 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026725 <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026726 <span class="entry_type_enum_value">14</span>
26727 <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
26728 </li>
26729 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026730 <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026731 <span class="entry_type_enum_value">15</span>
26732 <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
26733 </li>
26734 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026735 <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026736 <span class="entry_type_enum_value">17</span>
26737 </li>
26738 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026739 <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026740 <span class="entry_type_enum_value">18</span>
26741 </li>
26742 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026743 <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026744 <span class="entry_type_enum_value">19</span>
26745 </li>
26746 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026747 <span class="entry_type_enum_name">D55 (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026748 <span class="entry_type_enum_value">20</span>
26749 </li>
26750 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026751 <span class="entry_type_enum_name">D65 (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026752 <span class="entry_type_enum_value">21</span>
26753 </li>
26754 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026755 <span class="entry_type_enum_name">D75 (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026756 <span class="entry_type_enum_value">22</span>
26757 </li>
26758 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026759 <span class="entry_type_enum_name">D50 (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026760 <span class="entry_type_enum_value">23</span>
26761 </li>
26762 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080026763 <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026764 <span class="entry_type_enum_value">24</span>
26765 </li>
26766 </ul>
26767
26768 </td> <!-- entry_type -->
26769
26770 <td class="entry_description">
26771 <p>The standard reference illuminant used as the scene light source when
26772calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
26773<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
26774<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
26775 </td>
26776
26777 <td class="entry_units">
26778 </td>
26779
26780 <td class="entry_range">
26781 </td>
26782
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026783 <td class="entry_hal_version">
26784 <p>3.<wbr/>2</p>
26785 </td>
26786
Ruben Brunk7db06e22014-04-15 17:43:56 -070026787 <td class="entry_tags">
26788 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070026789 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026790 </ul>
26791 </td>
26792
26793 </tr>
26794 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026795 <th class="th_details" colspan="6">Details</th>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026796 </tr>
26797 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026798 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070026799 <p>The values in this key correspond to the values defined for the
Ruben Brunk7db06e22014-04-15 17:43:56 -070026800EXIF LightSource tag.<wbr/> These illuminants are standard light sources
26801that are often used calibrating camera devices.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070026802<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026803<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
26804<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
26805<p>Some devices may choose to provide a second set of calibration
26806information for improved quality,<wbr/> including
26807<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070026808<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
26809the camera device has RAW capability.<wbr/></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026810 </td>
26811 </tr>
26812
26813 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026814 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026815 </tr>
26816 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026817 <td class="entry_details" colspan="6">
Ruben Brunk7db06e22014-04-15 17:43:56 -070026818 <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070026819and corresponding matrices must be present to support the RAW capability
26820and DNG output.<wbr/></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026821<p>When producing raw images with a color profile that has only been
26822calibrated against a single light source,<wbr/> it is valid to omit
26823<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
26824<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/>
26825and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
26826<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
26827chosen so that it is representative of typical scene lighting.<wbr/> In
26828general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
26829<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
26830<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
26831chosen to represent the typical range of scene lighting conditions.<wbr/>
26832In general,<wbr/> low color temperature illuminant such as Standard-A will
26833be chosen for the first reference illuminant and a higher color
26834temperature illuminant such as D65 will be chosen for the second
26835reference illuminant.<wbr/></p>
26836 </td>
26837 </tr>
26838
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026839 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026840 <!-- end of entry -->
26841
26842
26843 <tr class="entry" id="static_android.sensor.referenceIlluminant2">
Igor Murashkin6c936c12014-05-13 14:51:49 -070026844 <td class="entry_name
26845 " rowspan="3">
Ruben Brunk7db06e22014-04-15 17:43:56 -070026846 android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
26847 </td>
26848 <td class="entry_type">
26849 <span class="entry_type_name">byte</span>
26850
26851 <span class="entry_type_visibility"> [public]</span>
26852
26853
Igor Murashkin6c936c12014-05-13 14:51:49 -070026854
26855
26856
Igor Murashkinca256272014-10-02 15:27:09 -070026857
Ruben Brunk7db06e22014-04-15 17:43:56 -070026858 </td> <!-- entry_type -->
26859
26860 <td class="entry_description">
26861 <p>The standard reference illuminant used as the scene light source when
26862calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
26863<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
26864<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
26865 </td>
26866
26867 <td class="entry_units">
26868 </td>
26869
26870 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070026871 <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026872 </td>
26873
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026874 <td class="entry_hal_version">
26875 <p>3.<wbr/>2</p>
26876 </td>
26877
Ruben Brunk7db06e22014-04-15 17:43:56 -070026878 <td class="entry_tags">
26879 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070026880 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026881 </ul>
26882 </td>
26883
26884 </tr>
26885 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026886 <th class="th_details" colspan="6">Details</th>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026887 </tr>
26888 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026889 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070026890 <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
26891<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026892<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
26893<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070026894<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
26895the camera device has RAW capability.<wbr/></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026896 </td>
26897 </tr>
26898
26899
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026900 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026901 <!-- end of entry -->
26902
26903
26904 <tr class="entry" id="static_android.sensor.calibrationTransform1">
Igor Murashkin6c936c12014-05-13 14:51:49 -070026905 <td class="entry_name
26906 " rowspan="3">
Ruben Brunk7db06e22014-04-15 17:43:56 -070026907 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
26908 </td>
26909 <td class="entry_type">
26910 <span class="entry_type_name">rational</span>
26911 <span class="entry_type_container">x</span>
26912
26913 <span class="entry_type_array">
26914 3 x 3
26915 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070026916 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070026917
26918
26919
Igor Murashkinca256272014-10-02 15:27:09 -070026920
Ruben Brunk7db06e22014-04-15 17:43:56 -070026921 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
26922
26923
26924 </td> <!-- entry_type -->
26925
26926 <td class="entry_description">
26927 <p>A per-device calibration transform matrix that maps from the
26928reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
26929 </td>
26930
26931 <td class="entry_units">
26932 </td>
26933
26934 <td class="entry_range">
26935 </td>
26936
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026937 <td class="entry_hal_version">
26938 <p>3.<wbr/>2</p>
26939 </td>
26940
Ruben Brunk7db06e22014-04-15 17:43:56 -070026941 <td class="entry_tags">
26942 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070026943 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026944 </ul>
26945 </td>
26946
26947 </tr>
26948 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026949 <th class="th_details" colspan="6">Details</th>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026950 </tr>
26951 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026952 <td class="entry_details" colspan="6">
Ruben Brunk7db06e22014-04-15 17:43:56 -070026953 <p>This matrix is used to correct for per-device variations in the
26954sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
26955<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
26956contains a per-device calibration transform that maps colors
26957from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
26958colorspace) into this camera device's native sensor color
26959space under the first reference illuminant
26960(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070026961<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
26962the camera device has RAW capability.<wbr/></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026963 </td>
26964 </tr>
26965
26966
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080026967 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk7db06e22014-04-15 17:43:56 -070026968 <!-- end of entry -->
26969
26970
26971 <tr class="entry" id="static_android.sensor.calibrationTransform2">
Igor Murashkin6c936c12014-05-13 14:51:49 -070026972 <td class="entry_name
26973 " rowspan="3">
Ruben Brunk7db06e22014-04-15 17:43:56 -070026974 android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
26975 </td>
26976 <td class="entry_type">
26977 <span class="entry_type_name">rational</span>
26978 <span class="entry_type_container">x</span>
26979
26980 <span class="entry_type_array">
26981 3 x 3
26982 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070026983 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070026984
26985
26986
Igor Murashkinca256272014-10-02 15:27:09 -070026987
Ruben Brunk7db06e22014-04-15 17:43:56 -070026988 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
26989
26990
26991 </td> <!-- entry_type -->
26992
26993 <td class="entry_description">
26994 <p>A per-device calibration transform matrix that maps from the
26995reference sensor colorspace to the actual device sensor colorspace
26996(this is the colorspace of the raw buffer data).<wbr/></p>
26997 </td>
26998
26999 <td class="entry_units">
27000 </td>
27001
27002 <td class="entry_range">
27003 </td>
27004
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027005 <td class="entry_hal_version">
27006 <p>3.<wbr/>2</p>
27007 </td>
27008
Ruben Brunk7db06e22014-04-15 17:43:56 -070027009 <td class="entry_tags">
27010 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070027011 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027012 </ul>
27013 </td>
27014
27015 </tr>
27016 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027017 <th class="th_details" colspan="6">Details</th>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027018 </tr>
27019 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027020 <td class="entry_details" colspan="6">
Ruben Brunk7db06e22014-04-15 17:43:56 -070027021 <p>This matrix is used to correct for per-device variations in the
27022sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
27023<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
27024contains a per-device calibration transform that maps colors
27025from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
27026colorspace) into this camera device's native sensor color
27027space under the second reference illuminant
27028(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
27029<p>This matrix will only be present if the second reference
27030illuminant is present.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070027031<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
27032the camera device has RAW capability.<wbr/></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027033 </td>
27034 </tr>
27035
27036
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027037 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027038 <!-- end of entry -->
27039
27040
27041 <tr class="entry" id="static_android.sensor.colorTransform1">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027042 <td class="entry_name
27043 " rowspan="3">
Ruben Brunk7db06e22014-04-15 17:43:56 -070027044 android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
27045 </td>
27046 <td class="entry_type">
27047 <span class="entry_type_name">rational</span>
27048 <span class="entry_type_container">x</span>
27049
27050 <span class="entry_type_array">
27051 3 x 3
27052 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070027053 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070027054
27055
27056
Igor Murashkinca256272014-10-02 15:27:09 -070027057
Ruben Brunk7db06e22014-04-15 17:43:56 -070027058 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
27059
27060
27061 </td> <!-- entry_type -->
27062
27063 <td class="entry_description">
27064 <p>A matrix that transforms color values from CIE XYZ color space to
27065reference sensor color space.<wbr/></p>
27066 </td>
27067
27068 <td class="entry_units">
27069 </td>
27070
27071 <td class="entry_range">
27072 </td>
27073
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027074 <td class="entry_hal_version">
27075 <p>3.<wbr/>2</p>
27076 </td>
27077
Ruben Brunk7db06e22014-04-15 17:43:56 -070027078 <td class="entry_tags">
27079 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070027080 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027081 </ul>
27082 </td>
27083
27084 </tr>
27085 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027086 <th class="th_details" colspan="6">Details</th>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027087 </tr>
27088 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027089 <td class="entry_details" colspan="6">
Ruben Brunk7db06e22014-04-15 17:43:56 -070027090 <p>This matrix is used to convert from the standard CIE XYZ color
27091space to the reference sensor colorspace,<wbr/> and is used when processing
27092raw buffer data.<wbr/></p>
27093<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
27094contains a color transform matrix that maps colors from the CIE
27095XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
27096"golden module" colorspace) under the first reference illuminant
27097(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
27098<p>The white points chosen in both the reference sensor color space
27099and the CIE XYZ colorspace when calculating this transform will
27100match the standard white point for the first reference illuminant
27101(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070027102<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
27103the camera device has RAW capability.<wbr/></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027104 </td>
27105 </tr>
27106
27107
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027108 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027109 <!-- end of entry -->
27110
27111
27112 <tr class="entry" id="static_android.sensor.colorTransform2">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027113 <td class="entry_name
27114 " rowspan="3">
Ruben Brunk7db06e22014-04-15 17:43:56 -070027115 android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
27116 </td>
27117 <td class="entry_type">
27118 <span class="entry_type_name">rational</span>
27119 <span class="entry_type_container">x</span>
27120
27121 <span class="entry_type_array">
27122 3 x 3
27123 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070027124 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070027125
27126
27127
Igor Murashkinca256272014-10-02 15:27:09 -070027128
Ruben Brunk7db06e22014-04-15 17:43:56 -070027129 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
27130
27131
27132 </td> <!-- entry_type -->
27133
27134 <td class="entry_description">
27135 <p>A matrix that transforms color values from CIE XYZ color space to
27136reference sensor color space.<wbr/></p>
27137 </td>
27138
27139 <td class="entry_units">
27140 </td>
27141
27142 <td class="entry_range">
27143 </td>
27144
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027145 <td class="entry_hal_version">
27146 <p>3.<wbr/>2</p>
27147 </td>
27148
Ruben Brunk7db06e22014-04-15 17:43:56 -070027149 <td class="entry_tags">
27150 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070027151 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027152 </ul>
27153 </td>
27154
27155 </tr>
27156 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027157 <th class="th_details" colspan="6">Details</th>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027158 </tr>
27159 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027160 <td class="entry_details" colspan="6">
Ruben Brunk7db06e22014-04-15 17:43:56 -070027161 <p>This matrix is used to convert from the standard CIE XYZ color
27162space to the reference sensor colorspace,<wbr/> and is used when processing
27163raw buffer data.<wbr/></p>
27164<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
27165contains a color transform matrix that maps colors from the CIE
27166XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
27167"golden module" colorspace) under the second reference illuminant
27168(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
27169<p>The white points chosen in both the reference sensor color space
27170and the CIE XYZ colorspace when calculating this transform will
27171match the standard white point for the second reference illuminant
27172(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
27173<p>This matrix will only be present if the second reference
27174illuminant is present.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070027175<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
27176the camera device has RAW capability.<wbr/></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027177 </td>
27178 </tr>
27179
27180
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027181 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027182 <!-- end of entry -->
27183
27184
27185 <tr class="entry" id="static_android.sensor.forwardMatrix1">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027186 <td class="entry_name
27187 " rowspan="3">
Ruben Brunk7db06e22014-04-15 17:43:56 -070027188 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
27189 </td>
27190 <td class="entry_type">
27191 <span class="entry_type_name">rational</span>
27192 <span class="entry_type_container">x</span>
27193
27194 <span class="entry_type_array">
27195 3 x 3
27196 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070027197 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070027198
27199
27200
Igor Murashkinca256272014-10-02 15:27:09 -070027201
Ruben Brunk7db06e22014-04-15 17:43:56 -070027202 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
27203
27204
27205 </td> <!-- entry_type -->
27206
27207 <td class="entry_description">
27208 <p>A matrix that transforms white balanced camera colors from the reference
27209sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
27210 </td>
27211
27212 <td class="entry_units">
27213 </td>
27214
27215 <td class="entry_range">
27216 </td>
27217
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027218 <td class="entry_hal_version">
27219 <p>3.<wbr/>2</p>
27220 </td>
27221
Ruben Brunk7db06e22014-04-15 17:43:56 -070027222 <td class="entry_tags">
27223 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070027224 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027225 </ul>
27226 </td>
27227
27228 </tr>
27229 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027230 <th class="th_details" colspan="6">Details</th>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027231 </tr>
27232 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027233 <td class="entry_details" colspan="6">
Ruben Brunk7db06e22014-04-15 17:43:56 -070027234 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
27235is used when processing raw buffer data.<wbr/></p>
27236<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
27237a color transform matrix that maps white balanced colors from the
27238reference sensor color space to the CIE XYZ color space with a D50 white
27239point.<wbr/></p>
27240<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
27241this matrix is chosen so that the standard white point for this reference
27242illuminant in the reference sensor colorspace is mapped to D50 in the
27243CIE XYZ colorspace.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070027244<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
27245the camera device has RAW capability.<wbr/></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027246 </td>
27247 </tr>
27248
27249
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027250 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027251 <!-- end of entry -->
27252
27253
27254 <tr class="entry" id="static_android.sensor.forwardMatrix2">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027255 <td class="entry_name
27256 " rowspan="3">
Ruben Brunk7db06e22014-04-15 17:43:56 -070027257 android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
27258 </td>
27259 <td class="entry_type">
27260 <span class="entry_type_name">rational</span>
27261 <span class="entry_type_container">x</span>
27262
27263 <span class="entry_type_array">
27264 3 x 3
27265 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070027266 <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070027267
27268
27269
Igor Murashkinca256272014-10-02 15:27:09 -070027270
Ruben Brunk7db06e22014-04-15 17:43:56 -070027271 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
27272
27273
27274 </td> <!-- entry_type -->
27275
27276 <td class="entry_description">
27277 <p>A matrix that transforms white balanced camera colors from the reference
27278sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
27279 </td>
27280
27281 <td class="entry_units">
27282 </td>
27283
27284 <td class="entry_range">
27285 </td>
27286
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027287 <td class="entry_hal_version">
27288 <p>3.<wbr/>2</p>
27289 </td>
27290
Ruben Brunk7db06e22014-04-15 17:43:56 -070027291 <td class="entry_tags">
27292 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070027293 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027294 </ul>
27295 </td>
27296
27297 </tr>
27298 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027299 <th class="th_details" colspan="6">Details</th>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027300 </tr>
27301 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027302 <td class="entry_details" colspan="6">
Ruben Brunk7db06e22014-04-15 17:43:56 -070027303 <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
27304is used when processing raw buffer data.<wbr/></p>
27305<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
27306a color transform matrix that maps white balanced colors from the
27307reference sensor color space to the CIE XYZ color space with a D50 white
27308point.<wbr/></p>
27309<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
27310this matrix is chosen so that the standard white point for this reference
27311illuminant in the reference sensor colorspace is mapped to D50 in the
27312CIE XYZ colorspace.<wbr/></p>
27313<p>This matrix will only be present if the second reference
27314illuminant is present.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070027315<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
27316the camera device has RAW capability.<wbr/></p>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027317 </td>
27318 </tr>
27319
27320
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027321 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk7db06e22014-04-15 17:43:56 -070027322 <!-- end of entry -->
27323
27324
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027325 <tr class="entry" id="static_android.sensor.baseGainFactor">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027326 <td class="entry_name
27327 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080027328 android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080027329 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027330 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080027331 <span class="entry_type_name">rational</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027332
Zhijun He66e62a42014-05-23 11:02:34 -070027333 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027334
27335
Igor Murashkin6c936c12014-05-13 14:51:49 -070027336
27337
27338
Igor Murashkinca256272014-10-02 15:27:09 -070027339
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027340 </td> <!-- entry_type -->
27341
27342 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080027343 <p>Gain factor from electrons to raw units when
27344ISO=100</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027345 </td>
27346
27347 <td class="entry_units">
27348 </td>
27349
27350 <td class="entry_range">
27351 </td>
27352
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027353 <td class="entry_hal_version">
27354 <p>3.<wbr/>2</p>
27355 </td>
27356
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027357 <td class="entry_tags">
27358 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070027359 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027360 </ul>
27361 </td>
27362
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027363 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080027364
27365
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027366 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027367 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027368
27369
27370 <tr class="entry" id="static_android.sensor.blackLevelPattern">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027371 <td class="entry_name
Ruben Brunkcc09de12014-06-05 13:20:47 -070027372 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080027373 android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080027374 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027375 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080027376 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027377 <span class="entry_type_container">x</span>
27378
27379 <span class="entry_type_array">
27380 4
27381 </span>
Ruben Brunkcc09de12014-06-05 13:20:47 -070027382 <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070027383
27384
27385
Igor Murashkinca256272014-10-02 15:27:09 -070027386
Igor Murashkin0b080452013-12-27 15:30:25 -080027387 <div class="entry_type_notes">2x2 raw count block</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027388
27389
27390 </td> <!-- entry_type -->
27391
27392 <td class="entry_description">
Ruben Brunk24bdaaf2014-01-31 14:11:20 -080027393 <p>A fixed black level offset for each of the color filter arrangement
27394(CFA) mosaic channels.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027395 </td>
27396
27397 <td class="entry_units">
27398 </td>
27399
27400 <td class="entry_range">
Ruben Brunk24bdaaf2014-01-31 14:11:20 -080027401 <p>&gt;= 0 for each.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027402 </td>
27403
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027404 <td class="entry_hal_version">
27405 <p>3.<wbr/>2</p>
27406 </td>
27407
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027408 <td class="entry_tags">
27409 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070027410 <li><a href="#tag_RAW">RAW</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027411 </ul>
27412 </td>
27413
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027414 </tr>
27415 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027416 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027417 </tr>
27418 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027419 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027420 <p>This key specifies the zero light value for each of the CFA mosaic
Ruben Brunk92dd85b2014-02-10 19:16:56 -080027421channels in the camera sensor.<wbr/> The maximal value output by the
27422sensor 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>
Ruben Brunkcc09de12014-06-05 13:20:47 -070027423<p>The values are given in the same order as channels listed for the CFA
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027424layout 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
Ruben Brunkcc09de12014-06-05 13:20:47 -070027425nth value given corresponds to the black level offset for the nth
27426color channel listed in the CFA.<wbr/></p>
Zhijun Hed363a122015-11-12 17:27:27 -080027427<p>The black level values of captured images may vary for different
27428capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
27429represents a coarse approximation for such case.<wbr/> It is recommended to
27430use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
27431<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
27432supported by the camera device,<wbr/> which provides more accurate black
27433level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
27434pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
27435level values for each frame.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070027436<p>For a MONOCHROME camera device,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027437 </td>
27438 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080027439
Ruben Brunkcc09de12014-06-05 13:20:47 -070027440 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027441 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunkcc09de12014-06-05 13:20:47 -070027442 </tr>
27443 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027444 <td class="entry_details" colspan="6">
Ruben Brunkcc09de12014-06-05 13:20:47 -070027445 <p>The values are given in row-column scan order,<wbr/> with the first value
27446corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
27447 </td>
27448 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080027449
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027450 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027451 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027452
27453
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027454 <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027455 <td class="entry_name
27456 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080027457 android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080027458 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027459 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080027460 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027461
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070027462 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027463
27464
Igor Murashkinca256272014-10-02 15:27:09 -070027465 <span class="entry_type_hwlevel">[full] </span>
27466
Igor Murashkin6c936c12014-05-13 14:51:49 -070027467
27468
27469
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027470 </td> <!-- entry_type -->
27471
27472 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080027473 <p>Maximum sensitivity that is implemented
Zhijun Hebdc94c42014-01-21 18:28:30 -080027474purely through analog gain.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027475 </td>
27476
27477 <td class="entry_units">
27478 </td>
27479
27480 <td class="entry_range">
27481 </td>
27482
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027483 <td class="entry_hal_version">
27484 <p>3.<wbr/>2</p>
27485 </td>
27486
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027487 <td class="entry_tags">
27488 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080027489 <li><a href="#tag_V1">V1</a></li>
Alex Rayef40ad62013-10-01 17:52:33 -070027490 <li><a href="#tag_FULL">FULL</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027491 </ul>
27492 </td>
27493
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027494 </tr>
27495 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027496 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027497 </tr>
27498 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027499 <td class="entry_details" colspan="6">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080027500 <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
Igor Murashkin0b080452013-12-27 15:30:25 -080027501equal to this,<wbr/> all applied gain must be analog.<wbr/> For
Zhijun Hebdc94c42014-01-21 18:28:30 -080027502values above this,<wbr/> the gain applied can be a mix of analog and
27503digital.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027504 </td>
27505 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080027506
27507
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027508 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027509 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027510
27511
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027512 <tr class="entry" id="static_android.sensor.orientation">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027513 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027514 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080027515 android.<wbr/>sensor.<wbr/>orientation
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080027516 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027517 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080027518 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027519
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070027520 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027521
27522
Igor Murashkinca256272014-10-02 15:27:09 -070027523 <span class="entry_type_hwlevel">[legacy] </span>
27524
Igor Murashkin6c936c12014-05-13 14:51:49 -070027525
27526
27527
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027528 </td> <!-- entry_type -->
27529
27530 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027531 <p>Clockwise angle through which the output image needs to be rotated to be
27532upright on the device screen in its native orientation.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027533 </td>
27534
27535 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027536 Degrees of clockwise rotation; always a multiple of
Igor Murashkin0b080452013-12-27 15:30:25 -080027537 90
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027538 </td>
27539
27540 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027541 <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027542 </td>
27543
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027544 <td class="entry_hal_version">
27545 <p>3.<wbr/>2</p>
27546 </td>
27547
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027548 <td class="entry_tags">
27549 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080027550 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027551 </ul>
27552 </td>
27553
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027554 </tr>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027555 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027556 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027557 </tr>
27558 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027559 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027560 <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
27561the sensor's coordinate system.<wbr/></p>
Emilian Peevcda90fc2021-09-24 17:45:05 -070027562<p>Starting with Android API level 32,<wbr/> camera clients that query the orientation via
27563<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> on foldable devices which
27564include logical cameras can receive a value that can dynamically change depending on the
27565device/<wbr/>fold state.<wbr/>
27566Clients are advised to not cache or store the orientation value of such logical sensors.<wbr/>
27567In case repeated queries to CameraCharacteristics are not preferred,<wbr/> then clients can
27568also access the entire mapping from device state to sensor orientation in
Emilian Peev9ecc6162021-10-12 13:11:27 -070027569<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/>
Emilian Peevcda90fc2021-09-24 17:45:05 -070027570Do note that a dynamically changing sensor orientation value in camera characteristics
27571will not be the best way to establish the orientation per frame.<wbr/> Clients that want to
27572know the sensor orientation of a particular captured frame should query the
27573<a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id</a> from the corresponding capture result and
27574check the respective physical camera orientation.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027575 </td>
27576 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080027577
27578
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027579 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080027580 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080027581
27582
Ruben Brunk2bebe312014-02-06 13:04:38 -080027583 <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027584 <td class="entry_name
27585 " rowspan="3">
Ruben Brunk2bebe312014-02-06 13:04:38 -080027586 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
27587 </td>
27588 <td class="entry_type">
27589 <span class="entry_type_name">int32</span>
27590 <span class="entry_type_container">x</span>
27591
27592 <span class="entry_type_array">
27593 3
27594 </span>
Zhijun Hed0f482a2014-05-06 16:18:04 -070027595 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070027596
27597
27598
Igor Murashkinca256272014-10-02 15:27:09 -070027599
Ruben Brunk2bebe312014-02-06 13:04:38 -080027600 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
27601
27602
27603 </td> <!-- entry_type -->
27604
27605 <td class="entry_description">
27606 <p>The number of input samples for each dimension of
27607<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
27608 </td>
27609
27610 <td class="entry_units">
27611 </td>
27612
27613 <td class="entry_range">
27614 <p>Hue &gt;= 1,<wbr/>
27615Saturation &gt;= 2,<wbr/>
27616Value &gt;= 1</p>
27617 </td>
27618
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027619 <td class="entry_hal_version">
27620 <p>3.<wbr/>2</p>
27621 </td>
27622
Ruben Brunk2bebe312014-02-06 13:04:38 -080027623 <td class="entry_tags">
27624 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070027625 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk2bebe312014-02-06 13:04:38 -080027626 </ul>
27627 </td>
27628
27629 </tr>
27630 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027631 <th class="th_details" colspan="6">Details</th>
Ruben Brunk2bebe312014-02-06 13:04:38 -080027632 </tr>
27633 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027634 <td class="entry_details" colspan="6">
Ruben Brunk2bebe312014-02-06 13:04:38 -080027635 <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
27636dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
27637dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
27638element.<wbr/></p>
27639 </td>
27640 </tr>
27641
27642
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027643 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk2bebe312014-02-06 13:04:38 -080027644 <!-- end of entry -->
27645
27646
Igor Murashkina46e02f2014-01-09 17:43:38 -080027647 <tr class="entry" id="static_android.sensor.availableTestPatternModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070027648 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027649 " rowspan="5">
Igor Murashkina46e02f2014-01-09 17:43:38 -080027650 android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
27651 </td>
27652 <td class="entry_type">
Zhijun He29a973d2014-03-27 23:54:16 -070027653 <span class="entry_type_name">int32</span>
27654 <span class="entry_type_container">x</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080027655
Zhijun He29a973d2014-03-27 23:54:16 -070027656 <span class="entry_type_array">
27657 n
27658 </span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080027659 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070027660
27661
27662
Igor Murashkinca256272014-10-02 15:27:09 -070027663
Zhijun He29a973d2014-03-27 23:54:16 -070027664 <div class="entry_type_notes">list of enums</div>
Igor Murashkina46e02f2014-01-09 17:43:38 -080027665
27666
27667 </td> <!-- entry_type -->
27668
27669 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027670 <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
27671supported by this camera device.<wbr/></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080027672 </td>
27673
27674 <td class="entry_units">
27675 </td>
27676
27677 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027678 <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080027679 </td>
27680
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027681 <td class="entry_hal_version">
27682 <p>3.<wbr/>2</p>
27683 </td>
27684
Igor Murashkina46e02f2014-01-09 17:43:38 -080027685 <td class="entry_tags">
27686 </td>
27687
27688 </tr>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070027689 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027690 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070027691 </tr>
27692 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027693 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027694 <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070027695 </td>
27696 </tr>
Igor Murashkina46e02f2014-01-09 17:43:38 -080027697
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027698 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027699 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027700 </tr>
27701 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027702 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070027703 <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
27704 </td>
27705 </tr>
Igor Murashkina46e02f2014-01-09 17:43:38 -080027706
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027707 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkina46e02f2014-01-09 17:43:38 -080027708 <!-- end of entry -->
27709
Zhijun Hed363a122015-11-12 17:27:27 -080027710
27711 <tr class="entry" id="static_android.sensor.opticalBlackRegions">
27712 <td class="entry_name
27713 " rowspan="5">
27714 android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
27715 </td>
27716 <td class="entry_type">
27717 <span class="entry_type_name">int32</span>
27718 <span class="entry_type_container">x</span>
27719
27720 <span class="entry_type_array">
27721 4 x num_regions
27722 </span>
27723 <span class="entry_type_visibility"> [public as rectangle]</span>
27724
27725
27726
27727
27728
27729
27730 </td> <!-- entry_type -->
27731
27732 <td class="entry_description">
27733 <p>List of disjoint rectangles indicating the sensor
27734optically shielded black pixel regions.<wbr/></p>
27735 </td>
27736
27737 <td class="entry_units">
27738 </td>
27739
27740 <td class="entry_range">
27741 </td>
27742
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027743 <td class="entry_hal_version">
27744 <p>3.<wbr/>2</p>
27745 </td>
27746
Zhijun Hed363a122015-11-12 17:27:27 -080027747 <td class="entry_tags">
27748 </td>
27749
27750 </tr>
27751 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027752 <th class="th_details" colspan="6">Details</th>
Zhijun Hed363a122015-11-12 17:27:27 -080027753 </tr>
27754 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027755 <td class="entry_details" colspan="6">
Zhijun Hed363a122015-11-12 17:27:27 -080027756 <p>In most camera sensors,<wbr/> the active array is surrounded by some
27757optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
27758provides a reliable black reference for black level compensation
27759in active array region.<wbr/></p>
27760<p>This key provides a list of disjoint rectangles specifying the
27761regions of optically shielded (with metal shield) black pixel
27762regions if the camera device is capable of reading out these black
27763pixels in the output raw images.<wbr/> In comparison to the fixed black
27764level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
27765may provide a more accurate way for the application to calculate
27766black level of each captured raw images.<wbr/></p>
27767<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
27768<a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
27769 </td>
27770 </tr>
27771
27772 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027773 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun Hed363a122015-11-12 17:27:27 -080027774 </tr>
27775 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027776 <td class="entry_details" colspan="6">
Zhijun Hed363a122015-11-12 17:27:27 -080027777 <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
27778must be &gt;= (0,<wbr/>0) and &lt;=
27779<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
27780&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
27781outside the region reported by
27782<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>
27783<p>The HAL must report minimal number of disjoint regions for the
27784optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
27785be covered by one rectangle,<wbr/> the HAL must not split this region into
27786multiple rectangles.<wbr/></p>
27787 </td>
27788 </tr>
27789
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027790 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun Hed363a122015-11-12 17:27:27 -080027791 <!-- end of entry -->
27792
Yin-Chia Yeh366da5b2015-12-06 21:42:35 -080027793
27794 <tr class="entry" id="static_android.sensor.opaqueRawSize">
27795 <td class="entry_name
27796 " rowspan="5">
27797 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
27798 </td>
27799 <td class="entry_type">
27800 <span class="entry_type_name">int32</span>
27801 <span class="entry_type_container">x</span>
27802
27803 <span class="entry_type_array">
27804 n x 3
27805 </span>
27806 <span class="entry_type_visibility"> [system]</span>
27807
27808
27809
27810
27811
27812
27813 </td> <!-- entry_type -->
27814
27815 <td class="entry_description">
27816 <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
27817 </td>
27818
27819 <td class="entry_units">
27820 </td>
27821
27822 <td class="entry_range">
27823 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
27824the camera</p>
27825 </td>
27826
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027827 <td class="entry_hal_version">
27828 <p>3.<wbr/>2</p>
27829 </td>
27830
Yin-Chia Yeh366da5b2015-12-06 21:42:35 -080027831 <td class="entry_tags">
27832 </td>
27833
27834 </tr>
27835 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027836 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh366da5b2015-12-06 21:42:35 -080027837 </tr>
27838 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027839 <td class="entry_details" colspan="6">
Yin-Chia Yeh366da5b2015-12-06 21:42:35 -080027840 <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
27841This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
27842All RAW_<wbr/>OPAQUE output stream configuration listed in
27843<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
27844this key.<wbr/></p>
27845 </td>
27846 </tr>
27847
27848 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027849 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh366da5b2015-12-06 21:42:35 -080027850 </tr>
27851 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027852 <td class="entry_details" colspan="6">
27853 <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
27854<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
27855key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
27856framework will derive this key by assuming each pixel takes two bytes and no padding bytes
Yin-Chia Yeh366da5b2015-12-06 21:42:35 -080027857between rows.<wbr/></p>
27858 </td>
27859 </tr>
27860
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080027861 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh366da5b2015-12-06 21:42:35 -080027862 <!-- end of entry -->
27863
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080027864
27865 <tr class="entry" id="static_android.sensor.opaqueRawSizeMaximumResolution">
27866 <td class="entry_name
27867 " rowspan="5">
27868 android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size<wbr/>Maximum<wbr/>Resolution
27869 </td>
27870 <td class="entry_type">
27871 <span class="entry_type_name">int32</span>
27872 <span class="entry_type_container">x</span>
27873
27874 <span class="entry_type_array">
27875 n x 3
27876 </span>
27877 <span class="entry_type_visibility"> [system]</span>
27878
27879
27880
27881
27882
27883
27884 </td> <!-- entry_type -->
27885
27886 <td class="entry_description">
27887 <p>Size in bytes for all the listed opaque RAW buffer sizes when
27888<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
27889<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
27890 </td>
27891
27892 <td class="entry_units">
27893 </td>
27894
27895 <td class="entry_range">
27896 <p>Must be large enough to fit the opaque RAW of corresponding size produced by
27897the camera</p>
27898 </td>
27899
27900 <td class="entry_hal_version">
27901 <p>3.<wbr/>6</p>
27902 </td>
27903
27904 <td class="entry_tags">
27905 </td>
27906
27907 </tr>
27908 <tr class="entries_header">
27909 <th class="th_details" colspan="6">Details</th>
27910 </tr>
27911 <tr class="entry_cont">
27912 <td class="entry_details" colspan="6">
27913 <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p>
27914 </td>
27915 </tr>
27916
27917 <tr class="entries_header">
27918 <th class="th_details" colspan="6">HAL Implementation Details</th>
27919 </tr>
27920 <tr class="entry_cont">
27921 <td class="entry_details" colspan="6">
27922 <p>Refer to <a href="#static_android.sensor.opaqueRawSize">android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size</a> for details.<wbr/></p>
27923 </td>
27924 </tr>
27925
27926 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27927 <!-- end of entry -->
27928
Shuzhen Wangccdf3a32022-04-20 10:15:57 -070027929
27930 <tr class="entry" id="static_android.sensor.readoutTimestamp">
27931 <td class="entry_name
27932 " rowspan="5">
27933 android.<wbr/>sensor.<wbr/>readout<wbr/>Timestamp
27934 </td>
27935 <td class="entry_type">
27936 <span class="entry_type_name entry_type_name_enum">byte</span>
27937
27938 <span class="entry_type_visibility"> [fwk_java_public]</span>
27939
27940
27941 <span class="entry_type_hwlevel">[legacy] </span>
27942
27943
27944
27945 <ul class="entry_type_enum">
27946 <li>
27947 <span class="entry_type_enum_name">NOT_SUPPORTED (v3.2)</span>
27948 <span class="entry_type_enum_notes"><p>This camera device doesn't support readout timestamp and onReadoutStarted
27949callback.<wbr/></p></span>
27950 </li>
27951 <li>
27952 <span class="entry_type_enum_name">HARDWARE (v3.2)</span>
27953 <span class="entry_type_enum_notes"><p>This camera device supports the onReadoutStarted callback as well as outputting
27954readout timestamp for streams with TIMESTAMP_<wbr/>BASE_<wbr/>READOUT_<wbr/>SENSOR timestamp base.<wbr/> The
27955readout timestamp is generated by the camera hardware and it has the same accuracy
27956and timing characteristics of the start-of-exposure time.<wbr/></p></span>
27957 </li>
27958 </ul>
27959
27960 </td> <!-- entry_type -->
27961
27962 <td class="entry_description">
27963 <p>Whether or not the camera device supports readout timestamp and
27964onReadoutStarted callback.<wbr/></p>
27965 </td>
27966
27967 <td class="entry_units">
27968 </td>
27969
27970 <td class="entry_range">
27971 </td>
27972
27973 <td class="entry_hal_version">
27974 <p>3.<wbr/>2</p>
27975 </td>
27976
27977 <td class="entry_tags">
27978 </td>
27979
27980 </tr>
27981 <tr class="entries_header">
27982 <th class="th_details" colspan="6">Details</th>
27983 </tr>
27984 <tr class="entry_cont">
27985 <td class="entry_details" colspan="6">
27986 <p>If this tag is HARDWARE,<wbr/> the camera device calls onReadoutStarted in addition to the
27987onCaptureStarted callback for each capture.<wbr/> The timestamp passed into the callback
27988is the start of camera image readout rather than the start of the exposure.<wbr/> In
27989addition,<wbr/> the application can configure an
27990<a href="https://developer.android.com/reference/android/hardware/camera2/params/OutputConfiguration.html">OutputConfiguration</a> with
27991TIMESTAMP_<wbr/>BASE_<wbr/>READOUT_<wbr/>SENSOR timestamp base,<wbr/> in which case,<wbr/> the timestamp of the
27992output surface matches the timestamp from the corresponding onReadoutStarted callback.<wbr/></p>
27993<p>The readout timestamp is beneficial for video recording,<wbr/> because the encoder favors
27994uniform timestamps,<wbr/> and the readout timestamps better reflect the cadence camera sensors
27995output data.<wbr/></p>
27996<p>If this tag is HARDWARE,<wbr/> the camera device produces the start-of-exposure and
27997start-of-readout together.<wbr/> As a result,<wbr/> the onReadoutStarted is called right after
27998onCaptureStarted.<wbr/> The difference in start-of-readout and start-of-exposure is the sensor
27999exposure time,<wbr/> plus certain constant offset.<wbr/> The offset is usually due to camera sensor
28000level crop,<wbr/> and it remains constant for a given camera sensor mode.<wbr/></p>
28001 </td>
28002 </tr>
28003
28004 <tr class="entries_header">
28005 <th class="th_details" colspan="6">HAL Implementation Details</th>
28006 </tr>
28007 <tr class="entry_cont">
28008 <td class="entry_details" colspan="6">
28009 <p>This property is populated by the camera framework and must not be set at the HAL layer.<wbr/></p>
28010 </td>
28011 </tr>
28012
28013 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28014 <!-- end of entry -->
28015
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028016
28017
28018 <!-- end of kind -->
28019 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028020 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028021
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070028022 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028023 <tr>
28024 <th class="th_name">Property Name</th>
28025 <th class="th_type">Type</th>
28026 <th class="th_description">Description</th>
28027 <th class="th_units">Units</th>
28028 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028029 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028030 <th class="th_tags">Tags</th>
28031 </tr>
28032 </thead>
28033
28034 <tbody>
28035
28036
28037
28038
28039
28040
28041
28042
28043
28044
28045 <tr class="entry" id="dynamic_android.sensor.exposureTime">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028046 <td class="entry_name
28047 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080028048 android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028049 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028050 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080028051 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028052
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070028053 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028054
28055
Igor Murashkinca256272014-10-02 15:27:09 -070028056 <span class="entry_type_hwlevel">[full] </span>
28057
Igor Murashkin6c936c12014-05-13 14:51:49 -070028058
28059
28060
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028061 </td> <!-- entry_type -->
28062
28063 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080028064 <p>Duration each pixel is exposed to
28065light.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028066 </td>
28067
28068 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028069 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028070 </td>
28071
28072 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080028073 <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028074 </td>
28075
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028076 <td class="entry_hal_version">
28077 <p>3.<wbr/>2</p>
28078 </td>
28079
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028080 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080028081 <ul class="entry_tags">
28082 <li><a href="#tag_V1">V1</a></li>
28083 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028084 </td>
28085
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028086 </tr>
28087 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028088 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028089 </tr>
28090 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028091 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028092 <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
28093duration exposed to the nearest possible value (rather than expose longer).<wbr/>
28094The final exposure time used will be available in the output capture result.<wbr/></p>
28095<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
28096OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028097 </td>
28098 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028099
28100
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028101 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028102 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028103
28104
28105 <tr class="entry" id="dynamic_android.sensor.frameDuration">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028106 <td class="entry_name
28107 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080028108 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028109 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028110 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080028111 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028112
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070028113 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028114
28115
Igor Murashkinca256272014-10-02 15:27:09 -070028116 <span class="entry_type_hwlevel">[full] </span>
28117
Igor Murashkin6c936c12014-05-13 14:51:49 -070028118
28119
28120
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028121 </td> <!-- entry_type -->
28122
28123 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080028124 <p>Duration from start of frame exposure to
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080028125start of next frame exposure.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028126 </td>
28127
28128 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028129 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028130 </td>
28131
28132 <td class="entry_range">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028133 <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/>
28134The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
28135 </td>
28136
28137 <td class="entry_hal_version">
28138 <p>3.<wbr/>2</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028139 </td>
28140
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028141 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080028142 <ul class="entry_tags">
28143 <li><a href="#tag_V1">V1</a></li>
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080028144 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028145 </td>
28146
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028147 </tr>
28148 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028149 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028150 </tr>
28151 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028152 <td class="entry_details" colspan="6">
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080028153 <p>The maximum frame rate that can be supported by a camera subsystem is
28154a function of many factors:</p>
28155<ul>
28156<li>Requested resolutions of output image streams</li>
28157<li>Availability of binning /<wbr/> skipping modes on the imager</li>
28158<li>The bandwidth of the imager interface</li>
28159<li>The bandwidth of the various ISP processing blocks</li>
28160</ul>
28161<p>Since these factors can vary greatly between different ISPs and
28162sensors,<wbr/> the camera abstraction tries to represent the bandwidth
28163restrictions with as simple a model as possible.<wbr/></p>
28164<p>The model presented has the following characteristics:</p>
28165<ul>
28166<li>The image sensor is always configured to output the smallest
28167resolution possible given the application's requested output stream
28168sizes.<wbr/> The smallest resolution is defined as being at least as large
28169as the largest requested output stream size; the camera pipeline must
28170never digitally upsample sensor data when the crop region covers the
28171whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
28172resolutions are configured,<wbr/> the sensor can provide a higher frame
28173rate.<wbr/></li>
28174<li>Since any request may use any or all the currently configured
28175output streams,<wbr/> the sensor and ISP must be configured to support
28176scaling a single capture to all the streams at the same time.<wbr/> This
28177means the camera pipeline must be ready to produce the largest
28178requested output size without any delay.<wbr/> Therefore,<wbr/> the overall
28179frame rate of a given configured stream set is governed only by the
28180largest requested stream resolution.<wbr/></li>
28181<li>Using more than one output stream in a request does not affect the
28182frame duration.<wbr/></li>
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080028183<li>Certain format-streams may need to do additional background processing
28184before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
28185can run concurrently to the rest of the camera pipeline,<wbr/> but
28186cannot process more than 1 capture at a time.<wbr/></li>
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080028187</ul>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028188<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070028189<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028190These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
28191possible for a given stream configuration.<wbr/></p>
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080028192<p>Specifically,<wbr/> the application can use the following rules to
Igor Murashkinaa6bd6f2014-02-07 14:31:31 -080028193determine the minimum frame duration it can request from the camera
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080028194device:</p>
28195<ol>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028196<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
28197<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>
28198(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
28199<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
28200out 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>
Igor Murashkin10f4e0f2014-01-13 17:22:58 -080028201</ol>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070028202<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>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028203using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
28204state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
28205this special kind of request be called <code>Rsimple</code>.<wbr/></p>
28206<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
28207new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
28208<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
28209buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
28210<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>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028211<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
28212OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028213 </td>
28214 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028215
Igor Murashkin6c936c12014-05-13 14:51:49 -070028216 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028217 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin6c936c12014-05-13 14:51:49 -070028218 </tr>
28219 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028220 <td class="entry_details" colspan="6">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028221 <p>For more details about stalling,<wbr/> see
28222<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
28223 </td>
28224 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028225
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028226 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028227 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028228
28229
28230 <tr class="entry" id="dynamic_android.sensor.sensitivity">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028231 <td class="entry_name
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028232 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080028233 android.<wbr/>sensor.<wbr/>sensitivity
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028234 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028235 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080028236 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028237
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070028238 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028239
28240
Igor Murashkinca256272014-10-02 15:27:09 -070028241 <span class="entry_type_hwlevel">[full] </span>
28242
Igor Murashkin6c936c12014-05-13 14:51:49 -070028243
28244
28245
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028246 </td> <!-- entry_type -->
28247
28248 <td class="entry_description">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028249 <p>The amount of gain applied to sensor data
28250before processing.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028251 </td>
28252
28253 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080028254 ISO arithmetic units
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028255 </td>
28256
28257 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080028258 <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028259 </td>
28260
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028261 <td class="entry_hal_version">
28262 <p>3.<wbr/>2</p>
28263 </td>
28264
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028265 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080028266 <ul class="entry_tags">
28267 <li><a href="#tag_V1">V1</a></li>
28268 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028269 </td>
28270
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028271 </tr>
28272 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028273 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028274 </tr>
28275 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028276 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028277 <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
28278as defined in ISO 12232:2006.<wbr/></p>
28279<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
28280if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
28281is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
28282<p>If the camera device cannot apply the exact sensitivity
28283requested,<wbr/> it will reduce the gain to the nearest supported
28284value.<wbr/> The final sensitivity used will be available in the
28285output capture result.<wbr/></p>
Yin-Chia Yeh2003c8d2016-01-18 19:14:55 -080028286<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
28287OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
Shuzhen Wang04961972019-07-08 15:03:24 -070028288<p>Note that for devices supporting postRawSensitivityBoost,<wbr/> the total sensitivity applied
28289to the final processed image is the combination of <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
28290<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<wbr/> In case the application uses the sensor
28291sensitivity from last capture result of an auto request for a manual request,<wbr/> in order
28292to achieve the same brightness in the output image,<wbr/> the application should also
28293set postRawSensitivityBoost.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028294 </td>
28295 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028296
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028297 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028298 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028299 </tr>
28300 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028301 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028302 <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
28303 </td>
28304 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028305
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028306 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028307 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028308
28309
28310 <tr class="entry" id="dynamic_android.sensor.timestamp">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028311 <td class="entry_name
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028312 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080028313 android.<wbr/>sensor.<wbr/>timestamp
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028314 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028315 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080028316 <span class="entry_type_name">int64</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028317
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070028318 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028319
28320
Igor Murashkinca256272014-10-02 15:27:09 -070028321 <span class="entry_type_hwlevel">[legacy] </span>
28322
Igor Murashkin6c936c12014-05-13 14:51:49 -070028323
28324
28325
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028326 </td> <!-- entry_type -->
28327
28328 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080028329 <p>Time at start of exposure of first
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070028330row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028331 </td>
28332
28333 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028334 Nanoseconds
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028335 </td>
28336
28337 <td class="entry_range">
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080028338 <p>&gt; 0</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028339 </td>
28340
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028341 <td class="entry_hal_version">
28342 <p>3.<wbr/>2</p>
28343 </td>
28344
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028345 <td class="entry_tags">
28346 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080028347 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028348 </ul>
28349 </td>
28350
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028351 </tr>
28352 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028353 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028354 </tr>
28355 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028356 <td class="entry_details" colspan="6">
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028357 <p>The timestamps are also included in all image
28358buffers produced for the same capture,<wbr/> and will be identical
Zhijun He91449c82014-06-12 10:43:32 -070028359on all the outputs.<wbr/></p>
Eino-Ville Talvala122906c2014-07-28 12:49:25 -070028360<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
Zhijun He91449c82014-06-12 10:43:32 -070028361the timestamps measure time since an unspecified starting point,<wbr/>
28362and are monotonically increasing.<wbr/> They can be compared with the
28363timestamps for other captures from the same camera device,<wbr/> but are
28364not guaranteed to be comparable to any other time source.<wbr/></p>
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070028365<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
28366timestamps 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
28367be compared to other timestamps from other subsystems that
28368are using that base.<wbr/></p>
Chien-Yu Chenc61e1642015-05-29 11:36:53 -070028369<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
28370the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
28371timestamp</a> in the TotalCaptureResult that was used to create the
28372reprocess capture request.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028373 </td>
28374 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028375
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028376 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028377 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028378 </tr>
28379 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028380 <td class="entry_details" colspan="6">
Zhijun He91449c82014-06-12 10:43:32 -070028381 <p>All timestamps must be in reference to the kernel's
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028382CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
28383time spent asleep.<wbr/> This allows for synchronization with
28384sensors that continue to operate while the system is
28385otherwise asleep.<wbr/></p>
Eino-Ville Talvala122906c2014-07-28 12:49:25 -070028386<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
Zhijun He91449c82014-06-12 10:43:32 -070028387The timestamp must be synchronized with the timestamps from other
28388sensor subsystems that are using the same timebase.<wbr/></p>
Chien-Yu Chenc61e1642015-05-29 11:36:53 -070028389<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
28390with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
28391capture request.<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070028392 </td>
28393 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028394
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028395 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028396 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080028397
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028398
28399 <tr class="entry" id="dynamic_android.sensor.temperature">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028400 <td class="entry_name
28401 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080028402 android.<wbr/>sensor.<wbr/>temperature
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028403 </td>
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028404 <td class="entry_type">
28405 <span class="entry_type_name">float</span>
28406
Zhijun He66e62a42014-05-23 11:02:34 -070028407 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028408
28409
Igor Murashkin6c936c12014-05-13 14:51:49 -070028410
28411
28412
Igor Murashkinca256272014-10-02 15:27:09 -070028413
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028414 </td> <!-- entry_type -->
28415
28416 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080028417 <p>The temperature of the sensor,<wbr/> sampled at the time
28418exposure began for this frame.<wbr/></p>
28419<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
28420somewhere close to it.<wbr/></p>
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028421 </td>
28422
28423 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028424 Celsius
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028425 </td>
28426
28427 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080028428 <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028429 </td>
28430
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028431 <td class="entry_hal_version">
28432 <p>3.<wbr/>2</p>
28433 </td>
28434
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028435 <td class="entry_tags">
Alex Rayef40ad62013-10-01 17:52:33 -070028436 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070028437 <li><a href="#tag_FUTURE">FUTURE</a></li>
Alex Rayef40ad62013-10-01 17:52:33 -070028438 </ul>
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028439 </td>
28440
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028441 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080028442
28443
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028444 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080028445 <!-- end of entry -->
Igor Murashkin656aa5a2013-08-13 14:23:39 -070028446
Igor Murashkina46e02f2014-01-09 17:43:38 -080028447
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080028448 <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028449 <td class="entry_name
28450 " rowspan="3">
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080028451 android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
28452 </td>
28453 <td class="entry_type">
28454 <span class="entry_type_name">rational</span>
28455 <span class="entry_type_container">x</span>
28456
28457 <span class="entry_type_array">
28458 3
28459 </span>
28460 <span class="entry_type_visibility"> [public]</span>
28461
28462
Igor Murashkin6c936c12014-05-13 14:51:49 -070028463
28464
28465
Igor Murashkinca256272014-10-02 15:27:09 -070028466
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080028467 </td> <!-- entry_type -->
28468
28469 <td class="entry_description">
Ruben Brunk7db06e22014-04-15 17:43:56 -070028470 <p>The estimated camera neutral color in the native sensor colorspace at
28471the time of capture.<wbr/></p>
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080028472 </td>
28473
28474 <td class="entry_units">
28475 </td>
28476
28477 <td class="entry_range">
28478 </td>
28479
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028480 <td class="entry_hal_version">
28481 <p>3.<wbr/>2</p>
28482 </td>
28483
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080028484 <td class="entry_tags">
28485 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070028486 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080028487 </ul>
28488 </td>
28489
28490 </tr>
28491 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028492 <th class="th_details" colspan="6">Details</th>
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080028493 </tr>
28494 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028495 <td class="entry_details" colspan="6">
Ruben Brunk7db06e22014-04-15 17:43:56 -070028496 <p>This value gives the neutral color point encoded as an RGB value in the
28497native sensor color space.<wbr/> The neutral color point indicates the
28498currently estimated white point of the scene illumination.<wbr/> It can be
28499used to interpolate between the provided color transforms when
28500processing raw sensor data.<wbr/></p>
28501<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070028502<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
28503the camera device has RAW capability.<wbr/></p>
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080028504 </td>
28505 </tr>
28506
28507
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028508 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080028509 <!-- end of entry -->
28510
28511
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028512 <tr class="entry" id="dynamic_android.sensor.noiseProfile">
28513 <td class="entry_name
28514 " rowspan="5">
28515 android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
28516 </td>
28517 <td class="entry_type">
28518 <span class="entry_type_name">double</span>
28519 <span class="entry_type_container">x</span>
28520
28521 <span class="entry_type_array">
28522 2 x CFA Channels
28523 </span>
28524 <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
28525
28526
28527
Igor Murashkinca256272014-10-02 15:27:09 -070028528
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028529 <div class="entry_type_notes">Pairs of noise model coefficients</div>
28530
28531
28532 </td> <!-- entry_type -->
28533
28534 <td class="entry_description">
28535 <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
28536 </td>
28537
28538 <td class="entry_units">
28539 </td>
28540
28541 <td class="entry_range">
28542 </td>
28543
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028544 <td class="entry_hal_version">
28545 <p>3.<wbr/>2</p>
28546 </td>
28547
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028548 <td class="entry_tags">
28549 <ul class="entry_tags">
28550 <li><a href="#tag_RAW">RAW</a></li>
28551 </ul>
28552 </td>
28553
28554 </tr>
28555 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028556 <th class="th_details" colspan="6">Details</th>
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028557 </tr>
28558 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028559 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028560 <p>This key contains two noise model coefficients for each CFA channel
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028561corresponding to the sensor amplification (S) and sensor readout
28562noise (O).<wbr/> These are given as pairs of coefficients for each channel
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028563in the same order as channels listed for the CFA layout key
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028564(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/> This is
28565represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
28566the first member of the Pair at index n is the S coefficient and the
28567second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
28568<p>These coefficients are used in a two parameter noise model to describe
28569the amount of noise present in the image for each CFA channel.<wbr/> The
28570noise model used here is:</p>
28571<p>N(x) = sqrt(Sx + O)</p>
28572<p>Where x represents the recorded signal of a CFA channel normalized to
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070028573the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coefficients for
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028574that channel.<wbr/></p>
28575<p>A more detailed description of the noise model can be found in the
28576Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070028577<p>For a MONOCHROME camera,<wbr/> there is only one color channel.<wbr/> So the noise model coefficients
28578will only contain one S and one O.<wbr/></p>
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028579 </td>
28580 </tr>
28581
28582 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028583 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028584 </tr>
28585 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028586 <td class="entry_details" colspan="6">
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028587 <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
28588an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
28589for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
28590channel,<wbr/> etc.<wbr/></p>
28591 </td>
28592 </tr>
28593
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028594 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk6a424ff2014-07-23 15:13:16 -070028595 <!-- end of entry -->
28596
28597
Ruben Brunk2bebe312014-02-06 13:04:38 -080028598 <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028599 <td class="entry_name
28600 " rowspan="3">
Ruben Brunk2bebe312014-02-06 13:04:38 -080028601 android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
28602 </td>
28603 <td class="entry_type">
28604 <span class="entry_type_name">float</span>
28605 <span class="entry_type_container">x</span>
28606
28607 <span class="entry_type_array">
28608 hue_samples x saturation_samples x value_samples x 3
28609 </span>
Zhijun Hed0f482a2014-05-06 16:18:04 -070028610 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070028611
28612
28613
Igor Murashkinca256272014-10-02 15:27:09 -070028614
Ruben Brunk2bebe312014-02-06 13:04:38 -080028615 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
28616
28617
28618 </td> <!-- entry_type -->
28619
28620 <td class="entry_description">
28621 <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
28622for each pixel.<wbr/></p>
28623 </td>
28624
28625 <td class="entry_units">
28626
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028627 The hue shift is given in degrees; saturation and value scale factors are
28628 unitless and are between 0 and 1 inclusive
Ruben Brunk2bebe312014-02-06 13:04:38 -080028629
28630 </td>
28631
28632 <td class="entry_range">
28633 </td>
28634
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028635 <td class="entry_hal_version">
28636 <p>3.<wbr/>2</p>
28637 </td>
28638
Ruben Brunk2bebe312014-02-06 13:04:38 -080028639 <td class="entry_tags">
28640 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070028641 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk2bebe312014-02-06 13:04:38 -080028642 </ul>
28643 </td>
28644
28645 </tr>
28646 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028647 <th class="th_details" colspan="6">Details</th>
Ruben Brunk2bebe312014-02-06 13:04:38 -080028648 </tr>
28649 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028650 <td class="entry_details" colspan="6">
Ruben Brunk2bebe312014-02-06 13:04:38 -080028651 <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
28652<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
28653<p>Each entry of this map contains three floats corresponding to the
28654hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028655hue shift has the lowest index.<wbr/> The map entries are stored in the key
Ruben Brunk2bebe312014-02-06 13:04:38 -080028656in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
28657hue divisions in the middle loop,<wbr/> and the saturation divisions in the
28658inner loop.<wbr/> All zero input saturation entries are required to have a
28659value scale factor of 1.<wbr/>0.<wbr/></p>
28660 </td>
28661 </tr>
28662
28663
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028664 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk2bebe312014-02-06 13:04:38 -080028665 <!-- end of entry -->
28666
28667
28668 <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028669 <td class="entry_name
28670 " rowspan="3">
Ruben Brunk2bebe312014-02-06 13:04:38 -080028671 android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
28672 </td>
28673 <td class="entry_type">
28674 <span class="entry_type_name">float</span>
28675 <span class="entry_type_container">x</span>
28676
28677 <span class="entry_type_array">
28678 samples x 2
28679 </span>
Zhijun Hed0f482a2014-05-06 16:18:04 -070028680 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070028681
28682
28683
Igor Murashkinca256272014-10-02 15:27:09 -070028684
Ruben Brunk2bebe312014-02-06 13:04:38 -080028685 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
28686
28687
28688 </td> <!-- entry_type -->
28689
28690 <td class="entry_description">
28691 <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
28692 </td>
28693
28694 <td class="entry_units">
28695 </td>
28696
28697 <td class="entry_range">
28698 <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
28699<code>[0,<wbr/> 1]</code>.<wbr/> The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
28700sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
28701 </td>
28702
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028703 <td class="entry_hal_version">
28704 <p>3.<wbr/>2</p>
28705 </td>
28706
Ruben Brunk2bebe312014-02-06 13:04:38 -080028707 <td class="entry_tags">
28708 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070028709 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk2bebe312014-02-06 13:04:38 -080028710 </ul>
28711 </td>
28712
28713 </tr>
28714 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028715 <th class="th_details" colspan="6">Details</th>
Ruben Brunk2bebe312014-02-06 13:04:38 -080028716 </tr>
28717 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028718 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070028719 <p>This key contains a default tone curve that can be applied while
Ruben Brunk2bebe312014-02-06 13:04:38 -080028720processing the image as a starting point for user adjustments.<wbr/>
28721The curve is specified as a list of value pairs in linear gamma.<wbr/>
28722The curve is interpolated using a cubic spline.<wbr/></p>
28723 </td>
28724 </tr>
28725
28726
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028727 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk2bebe312014-02-06 13:04:38 -080028728 <!-- end of entry -->
28729
28730
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028731 <tr class="entry" id="dynamic_android.sensor.greenSplit">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028732 <td class="entry_name
28733 " rowspan="5">
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028734 android.<wbr/>sensor.<wbr/>green<wbr/>Split
28735 </td>
28736 <td class="entry_type">
28737 <span class="entry_type_name">float</span>
28738
28739 <span class="entry_type_visibility"> [public]</span>
28740
28741
Igor Murashkin6c936c12014-05-13 14:51:49 -070028742
28743
28744
Igor Murashkinca256272014-10-02 15:27:09 -070028745
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028746 </td> <!-- entry_type -->
28747
28748 <td class="entry_description">
28749 <p>The worst-case divergence between Bayer green channels.<wbr/></p>
28750 </td>
28751
28752 <td class="entry_units">
28753 </td>
28754
28755 <td class="entry_range">
28756 <p>&gt;= 0</p>
28757 </td>
28758
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028759 <td class="entry_hal_version">
28760 <p>3.<wbr/>2</p>
28761 </td>
28762
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028763 <td class="entry_tags">
28764 <ul class="entry_tags">
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070028765 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028766 </ul>
28767 </td>
28768
28769 </tr>
28770 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028771 <th class="th_details" colspan="6">Details</th>
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028772 </tr>
28773 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028774 <td class="entry_details" colspan="6">
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028775 <p>This value is an estimate of the worst case split between the
28776Bayer green channels in the red and blue rows in the sensor color
28777filter array.<wbr/></p>
28778<p>The green split is calculated as follows:</p>
28779<ol>
Ruben Brunkd9d12132014-03-18 14:37:04 -070028780<li>A 5x5 pixel (or larger) window W within the active sensor array is
28781chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
28782mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/> The location and size of the window
28783chosen is implementation defined,<wbr/> and should be chosen to provide a
28784green split estimate that is both representative of the entire image
28785for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028786<li>The arithmetic mean of the green channels from the red
28787rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
28788<li>The arithmetic mean of the green channels from the blue
28789rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
28790<li>The maximum ratio R of the two means is computed as follows:
28791<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
28792</ol>
28793<p>The ratio R is the green split divergence reported for this property,<wbr/>
28794which represents how much the green channels differ in the mosaic
28795pattern.<wbr/> This value is typically used to determine the treatment of
28796the green mosaic channels when demosaicing.<wbr/></p>
28797<p>The green split value can be roughly interpreted as follows:</p>
28798<ul>
28799<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
28800<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
28801correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
28802<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070028803a usable image (&gt;20% divergence).<wbr/></li>
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028804</ul>
Shuzhen Wang75273722018-10-15 12:00:13 -070028805<p>Starting from Android Q,<wbr/> this key will not be present for a MONOCHROME camera,<wbr/> even if
28806the camera device has RAW capability.<wbr/></p>
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028807 </td>
28808 </tr>
28809
Ruben Brunkd9d12132014-03-18 14:37:04 -070028810 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028811 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunkd9d12132014-03-18 14:37:04 -070028812 </tr>
28813 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028814 <td class="entry_details" colspan="6">
Ruben Brunkd9d12132014-03-18 14:37:04 -070028815 <p>The green split given may be a static value based on prior
28816characterization of the camera sensor using the green split
28817calculation method given here over a large,<wbr/> representative,<wbr/> sample
28818set of images.<wbr/> Other methods of calculation that produce equivalent
28819results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
28820 </td>
28821 </tr>
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028822
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028823 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk6a5fd112014-02-11 17:55:32 -080028824 <!-- end of entry -->
28825
28826
Zhijun He602d3702014-05-02 17:38:15 -070028827 <tr class="entry" id="dynamic_android.sensor.testPatternData">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028828 <td class="entry_name
28829 " rowspan="5">
Zhijun He602d3702014-05-02 17:38:15 -070028830 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
28831 </td>
28832 <td class="entry_type">
28833 <span class="entry_type_name">int32</span>
28834 <span class="entry_type_container">x</span>
28835
28836 <span class="entry_type_array">
28837 4
28838 </span>
28839 <span class="entry_type_visibility"> [public]</span>
28840
28841
Igor Murashkin6c936c12014-05-13 14:51:49 -070028842
28843
28844
Igor Murashkinca256272014-10-02 15:27:09 -070028845
Zhijun He602d3702014-05-02 17:38:15 -070028846 </td> <!-- entry_type -->
28847
28848 <td class="entry_description">
28849 <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
28850when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
28851 </td>
28852
28853 <td class="entry_units">
28854 </td>
28855
28856 <td class="entry_range">
Zhijun He602d3702014-05-02 17:38:15 -070028857 </td>
28858
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028859 <td class="entry_hal_version">
28860 <p>3.<wbr/>2</p>
28861 </td>
28862
Zhijun He602d3702014-05-02 17:38:15 -070028863 <td class="entry_tags">
28864 </td>
28865
28866 </tr>
28867 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028868 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -070028869 </tr>
28870 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028871 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -070028872 <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
28873The camera device then uses the most significant X bits
28874that correspond to how many bits are in its Bayer raw sensor
28875output.<wbr/></p>
28876<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2887710 most significant bits from each color channel.<wbr/></p>
28878 </td>
28879 </tr>
28880
28881 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028882 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He602d3702014-05-02 17:38:15 -070028883 </tr>
28884 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028885 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -070028886
28887 </td>
28888 </tr>
28889
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080028890 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -070028891 <!-- end of entry -->
28892
28893
Igor Murashkina46e02f2014-01-09 17:43:38 -080028894 <tr class="entry" id="dynamic_android.sensor.testPatternMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070028895 <td class="entry_name
28896 " rowspan="5">
Igor Murashkina46e02f2014-01-09 17:43:38 -080028897 android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
28898 </td>
28899 <td class="entry_type">
28900 <span class="entry_type_name entry_type_name_enum">int32</span>
28901
28902 <span class="entry_type_visibility"> [public]</span>
28903
Igor Murashkin6c936c12014-05-13 14:51:49 -070028904
28905
28906
Igor Murashkinca256272014-10-02 15:27:09 -070028907
Igor Murashkina46e02f2014-01-09 17:43:38 -080028908 <ul class="entry_type_enum">
28909 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080028910 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070028911 <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
28912device returns captures from the image sensor.<wbr/></p>
28913<p>This is the default if the key is not set.<wbr/></p></span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080028914 </li>
28915 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080028916 <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080028917 <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
28918respective color channel provided in
28919<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
28920<p>For example:</p>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070028921<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
Igor Murashkina46e02f2014-01-09 17:43:38 -080028922</code></pre>
28923<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070028924<pre><code><a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a> = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
Igor Murashkina46e02f2014-01-09 17:43:38 -080028925</code></pre>
28926<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
28927are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
28928 </li>
28929 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080028930 <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080028931 <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
28932<p>The vertical bars (left-to-right) are as follows:</p>
28933<ul>
28934<li>100% white</li>
28935<li>yellow</li>
28936<li>cyan</li>
28937<li>green</li>
28938<li>magenta</li>
28939<li>red</li>
28940<li>blue</li>
28941<li>black</li>
28942</ul>
28943<p>In general the image would look like the following:</p>
28944<pre><code>W Y C G M R B K
28945W Y C G M R B K
28946W Y C G M R B K
28947W Y C G M R B K
28948W Y C G M R B K
28949.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
28950.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
28951.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
28952
28953(B = Blue,<wbr/> K = Black)
28954</code></pre>
28955<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
28956When this is not possible,<wbr/> the bar size should be rounded
28957down to the nearest integer and the pattern can repeat
28958on the right side.<wbr/></p>
28959<p>Each bar's height must always take up the full sensor
28960pixel array height.<wbr/></p>
28961<p>Each pixel in this test pattern must be set to either
289620% intensity or 100% intensity.<wbr/></p></span>
28963 </li>
28964 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080028965 <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080028966 <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
28967each bar should start at its specified color at the top,<wbr/>
28968and fade to gray at the bottom.<wbr/></p>
28969<p>Furthermore each bar is further subdivided into a left and
28970right half.<wbr/> The left half should have a smooth gradient,<wbr/>
28971and the right half should have a quantized gradient.<wbr/></p>
28972<p>In particular,<wbr/> the right half's should consist of blocks of the
28973same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
28974<p>The least significant bits in the quantized gradient should
28975be copied from the most significant bits of the smooth gradient.<wbr/></p>
28976<p>The height of each bar should always be a multiple of 128.<wbr/>
28977When this is not the case,<wbr/> the pattern should repeat at the bottom
28978of the image.<wbr/></p></span>
28979 </li>
28980 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080028981 <span class="entry_type_enum_name">PN9 (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080028982 <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
28983generated from a PN9 512-bit sequence (typically implemented
28984in hardware with a linear feedback shift register).<wbr/></p>
28985<p>The generator should be reset at the beginning of each frame,<wbr/>
28986and thus each subsequent raw frame with this test pattern should
28987be exactly the same as the last.<wbr/></p></span>
28988 </li>
28989 <li>
Eino-Ville Talvala805661a2021-05-27 14:43:59 -070028990 <span class="entry_type_enum_name">BLACK (v3.6)</span>
28991 <span class="entry_type_enum_hidden">[test]</span>
28992 <span class="entry_type_enum_notes"><p>All pixel data is replaced by 0% intensity (black) values.<wbr/></p>
28993<p>This test pattern is identical to SOLID_<wbr/>COLOR with a value of <code>[0,<wbr/> 0,<wbr/> 0,<wbr/> 0]</code> for
28994<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/> It is recommended that devices implement full
28995SOLID_<wbr/>COLOR support instead,<wbr/> but BLACK can be used to provide minimal support for a
28996test pattern suitable for privacy use cases.<wbr/></p></span>
28997 </li>
28998 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080028999 <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
Igor Murashkina46e02f2014-01-09 17:43:38 -080029000 <span class="entry_type_enum_value">256</span>
29001 <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
29002available only on this camera device are at least this numeric
29003value.<wbr/></p>
29004<p>All of the custom test patterns will be static
29005(that is the raw image must not vary from frame to frame).<wbr/></p></span>
29006 </li>
29007 </ul>
29008
29009 </td> <!-- entry_type -->
29010
29011 <td class="entry_description">
29012 <p>When enabled,<wbr/> the sensor sends a test pattern instead of
29013doing a real exposure from the camera.<wbr/></p>
29014 </td>
29015
29016 <td class="entry_units">
29017 </td>
29018
29019 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029020 <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080029021 </td>
29022
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029023 <td class="entry_hal_version">
29024 <p>3.<wbr/>2</p>
29025 </td>
29026
Igor Murashkina46e02f2014-01-09 17:43:38 -080029027 <td class="entry_tags">
29028 </td>
29029
29030 </tr>
29031 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029032 <th class="th_details" colspan="6">Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080029033 </tr>
29034 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029035 <td class="entry_details" colspan="6">
Igor Murashkina46e02f2014-01-09 17:43:38 -080029036 <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029037by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
Igor Murashkina46e02f2014-01-09 17:43:38 -080029038work as normal.<wbr/></p>
29039<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
29040occur (and that the test pattern remain unmodified,<wbr/> since the flash
29041would not actually affect it).<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029042<p>Defaults to OFF.<wbr/></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080029043 </td>
29044 </tr>
29045
29046 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029047 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkina46e02f2014-01-09 17:43:38 -080029048 </tr>
29049 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029050 <td class="entry_details" colspan="6">
Igor Murashkina46e02f2014-01-09 17:43:38 -080029051 <p>All test patterns are specified in the Bayer domain.<wbr/></p>
29052<p>The HAL may choose to substitute test patterns from the sensor
29053with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
29054indistinguishable to the ISP whether the data came from the
29055sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
Shuzhen Wange2324d12021-10-28 17:27:29 -070029056<p>For privacy use cases,<wbr/> if the camera device:</p>
29057<ul>
29058<li>supports SOLID_<wbr/>COLOR or BLACK test patterns,<wbr/></li>
29059<li>is a logical multi-camera,<wbr/> and</li>
29060<li>lists testPatternMode as a physical request key,<wbr/></li>
29061</ul>
29062<p>Each physical camera must support the same SOLID_<wbr/>COLOR and/<wbr/>or BLACK test patterns
29063as the logical camera.<wbr/></p>
Igor Murashkina46e02f2014-01-09 17:43:38 -080029064 </td>
29065 </tr>
29066
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029067 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkina46e02f2014-01-09 17:43:38 -080029068 <!-- end of entry -->
29069
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029070
29071 <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
29072 <td class="entry_name
29073 " rowspan="5">
29074 android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
29075 </td>
29076 <td class="entry_type">
29077 <span class="entry_type_name">int64</span>
29078
29079 <span class="entry_type_visibility"> [public]</span>
29080
29081
Igor Murashkinca256272014-10-02 15:27:09 -070029082 <span class="entry_type_hwlevel">[limited] </span>
29083
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029084
29085
29086
29087 </td> <!-- entry_type -->
29088
29089 <td class="entry_description">
Eino-Ville Talvala0bde3862020-05-11 10:23:45 -070029090 <p>Duration between the start of exposure for the first row of the image sensor,<wbr/>
29091and the start of exposure for one past the last row of the image sensor.<wbr/></p>
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029092 </td>
29093
29094 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029095 Nanoseconds
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029096 </td>
29097
29098 <td class="entry_range">
29099 <p>&gt;= 0 and &lt;
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070029100<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029101 </td>
29102
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029103 <td class="entry_hal_version">
29104 <p>3.<wbr/>2</p>
29105 </td>
29106
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029107 <td class="entry_tags">
29108 <ul class="entry_tags">
29109 <li><a href="#tag_V1">V1</a></li>
29110 </ul>
29111 </td>
29112
29113 </tr>
29114 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029115 <th class="th_details" colspan="6">Details</th>
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029116 </tr>
29117 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029118 <td class="entry_details" colspan="6">
Eino-Ville Talvala0bde3862020-05-11 10:23:45 -070029119 <p>This is the exposure time skew between the first and <code>(last+1)</code> row exposure start times.<wbr/> The
29120first row and the last row are the first and last rows inside of the
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029121<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
Eino-Ville Talvala0bde3862020-05-11 10:23:45 -070029122<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent to the frame
29123readout time.<wbr/></p>
29124<p>If the image sensor is operating in a binned or cropped mode due to the current output
29125target resolutions,<wbr/> it's possible this skew is reported to be larger than the exposure
29126time,<wbr/> for example,<wbr/> since it is based on the full array even if a partial array is read
29127out.<wbr/> Be sure to scale the number to cover the section of the sensor actually being used
29128for the outputs you care about.<wbr/> So if your output covers N rows of the active array of
29129height H,<wbr/> scale this value by N/<wbr/>H to get the total skew for that viewport.<wbr/></p>
29130<p><em>Note:</em> Prior to Android 11,<wbr/> this field was described as measuring duration from
29131first to last row of the image sensor,<wbr/> which is not equal to the frame readout time for a
29132rolling shutter sensor.<wbr/> Implementations generally reported the latter value,<wbr/> so to resolve
29133the inconsistency,<wbr/> the description has been updated to range from (first,<wbr/> last+1) row
29134exposure start,<wbr/> instead.<wbr/></p>
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029135 </td>
29136 </tr>
29137
29138 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029139 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029140 </tr>
29141 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029142 <td class="entry_details" colspan="6">
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029143 <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
29144exposure at the same time.<wbr/></p>
29145 </td>
29146 </tr>
29147
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029148 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070029149 <!-- end of entry -->
29150
Zhijun Hed363a122015-11-12 17:27:27 -080029151
29152 <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
29153 <td class="entry_name
29154 " rowspan="5">
29155 android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
29156 </td>
29157 <td class="entry_type">
Zhijun He88f2ffd2015-11-24 14:24:52 -080029158 <span class="entry_type_name">float</span>
Zhijun Hed363a122015-11-12 17:27:27 -080029159 <span class="entry_type_container">x</span>
29160
29161 <span class="entry_type_array">
29162 4
29163 </span>
Zhijun He88f2ffd2015-11-24 14:24:52 -080029164 <span class="entry_type_visibility"> [public]</span>
Zhijun Hed363a122015-11-12 17:27:27 -080029165
29166
29167
29168
29169 <div class="entry_type_notes">2x2 raw count block</div>
29170
29171
29172 </td> <!-- entry_type -->
29173
29174 <td class="entry_description">
29175 <p>A per-frame dynamic black level offset for each of the color filter
29176arrangement (CFA) mosaic channels.<wbr/></p>
29177 </td>
29178
29179 <td class="entry_units">
29180 </td>
29181
29182 <td class="entry_range">
29183 <p>&gt;= 0 for each.<wbr/></p>
29184 </td>
29185
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029186 <td class="entry_hal_version">
29187 <p>3.<wbr/>2</p>
29188 </td>
29189
Zhijun Hed363a122015-11-12 17:27:27 -080029190 <td class="entry_tags">
29191 <ul class="entry_tags">
29192 <li><a href="#tag_RAW">RAW</a></li>
29193 </ul>
29194 </td>
29195
29196 </tr>
29197 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029198 <th class="th_details" colspan="6">Details</th>
Zhijun Hed363a122015-11-12 17:27:27 -080029199 </tr>
29200 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029201 <td class="entry_details" colspan="6">
Zhijun Hed363a122015-11-12 17:27:27 -080029202 <p>Camera sensor black levels may vary dramatically for different
29203capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
29204level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
29205inaccurate to represent the actual value on a per-frame basis.<wbr/> The
29206camera device internal pipeline relies on reliable black level values
29207to process the raw images appropriately.<wbr/> To get the best image
29208quality,<wbr/> the camera device may choose to estimate the per frame black
29209level values either based on optically shielded black regions
29210(<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
29211<p>This key reports the camera device estimated per-frame zero light
29212value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
29213<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
29214approximation of the actual black level values.<wbr/> This value is the
29215black level used in camera device internal image processing pipeline
29216and generally more accurate than the fixed black level values.<wbr/>
29217However,<wbr/> since they are estimated values by the camera device,<wbr/> they
29218may not be as accurate as the black level values calculated from the
29219optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
29220<p>The values are given in the same order as channels listed for the CFA
29221layout 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
29222nth value given corresponds to the black level offset for the nth
29223color channel listed in the CFA.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070029224<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/></p>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029225<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
29226camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
Zhijun Hed363a122015-11-12 17:27:27 -080029227 </td>
29228 </tr>
29229
29230 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029231 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun Hed363a122015-11-12 17:27:27 -080029232 </tr>
29233 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029234 <td class="entry_details" colspan="6">
Zhijun Hed363a122015-11-12 17:27:27 -080029235 <p>The values are given in row-column scan order,<wbr/> with the first value
29236corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
29237 </td>
29238 </tr>
29239
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029240 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun Hed363a122015-11-12 17:27:27 -080029241 <!-- end of entry -->
29242
29243
29244 <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
29245 <td class="entry_name
29246 " rowspan="5">
29247 android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
29248 </td>
29249 <td class="entry_type">
29250 <span class="entry_type_name">int32</span>
29251
29252 <span class="entry_type_visibility"> [public]</span>
29253
29254
29255
29256
29257
29258
29259 </td> <!-- entry_type -->
29260
29261 <td class="entry_description">
29262 <p>Maximum raw value output by sensor for this frame.<wbr/></p>
29263 </td>
29264
29265 <td class="entry_units">
29266 </td>
29267
29268 <td class="entry_range">
29269 <p>&gt;= 0</p>
29270 </td>
29271
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029272 <td class="entry_hal_version">
29273 <p>3.<wbr/>2</p>
29274 </td>
29275
Zhijun Hed363a122015-11-12 17:27:27 -080029276 <td class="entry_tags">
29277 <ul class="entry_tags">
29278 <li><a href="#tag_RAW">RAW</a></li>
29279 </ul>
29280 </td>
29281
29282 </tr>
29283 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029284 <th class="th_details" colspan="6">Details</th>
Zhijun Hed363a122015-11-12 17:27:27 -080029285 </tr>
29286 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029287 <td class="entry_details" colspan="6">
Eino-Ville Talvala1f883d42016-04-04 10:47:43 -070029288 <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
Zhijun Hed363a122015-11-12 17:27:27 -080029289capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
29290level will change accordingly.<wbr/> This key is similar to
29291<a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
29292estimated white level for each frame.<wbr/></p>
29293<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
29294available or the camera device advertises this key via
29295<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
29296 </td>
29297 </tr>
29298
29299 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029300 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun Hed363a122015-11-12 17:27:27 -080029301 </tr>
29302 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029303 <td class="entry_details" colspan="6">
Zhijun Hed363a122015-11-12 17:27:27 -080029304 <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
29305so the value for linear sensors should not be significantly lower
29306than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
29307 </td>
29308 </tr>
29309
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029310 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun Hed363a122015-11-12 17:27:27 -080029311 <!-- end of entry -->
29312
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080029313
29314 <tr class="entry" id="dynamic_android.sensor.pixelMode">
29315 <td class="entry_name
29316 " rowspan="3">
29317 android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode
29318 </td>
29319 <td class="entry_type">
29320 <span class="entry_type_name entry_type_name_enum">byte</span>
29321
29322 <span class="entry_type_visibility"> [public]</span>
29323
29324
29325
29326
29327
29328 <ul class="entry_type_enum">
29329 <li>
29330 <span class="entry_type_enum_name">DEFAULT (v3.6)</span>
29331 <span class="entry_type_enum_notes"><p>This is the default sensor pixel mode.<wbr/> This is the only sensor pixel mode
29332supported unless a camera device advertises
29333<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>.<wbr/></p></span>
29334 </li>
29335 <li>
29336 <span class="entry_type_enum_name">MAXIMUM_RESOLUTION (v3.6)</span>
29337 <span class="entry_type_enum_notes"><p>This sensor pixel mode is offered by devices with capability
29338<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>.<wbr/>
29339In this mode,<wbr/> sensors typically do not bin pixels,<wbr/> as a result can offer larger
29340image sizes.<wbr/></p></span>
29341 </li>
29342 </ul>
29343
29344 </td> <!-- entry_type -->
29345
29346 <td class="entry_description">
29347 <p>Switches sensor pixel mode between maximum resolution mode and default mode.<wbr/></p>
29348 </td>
29349
29350 <td class="entry_units">
29351 </td>
29352
29353 <td class="entry_range">
29354 </td>
29355
29356 <td class="entry_hal_version">
29357 <p>3.<wbr/>6</p>
29358 </td>
29359
29360 <td class="entry_tags">
29361 </td>
29362
29363 </tr>
29364 <tr class="entries_header">
29365 <th class="th_details" colspan="6">Details</th>
29366 </tr>
29367 <tr class="entry_cont">
29368 <td class="entry_details" colspan="6">
29369 <p>This key controls whether the camera sensor operates in
29370<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
29371mode or not.<wbr/> By default,<wbr/> all camera devices operate in
29372<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/>
29373When operating in
29374<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode,<wbr/> sensors
29375with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
29376capability would typically perform pixel binning in order to improve low light
29377performance,<wbr/> noise reduction etc.<wbr/> However,<wbr/> in
29378<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
29379mode (supported only
29380by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
29381sensors),<wbr/> sensors typically operate in unbinned mode allowing for a larger image size.<wbr/>
29382The stream configurations supported in
29383<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>
29384mode are also different from those of
29385<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_DEFAULT">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>DEFAULT</a> mode.<wbr/>
29386They can be queried through
29387<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#get">CameraCharacteristics#get</a> with
29388<a href="https://developer.android.com/reference/CameraCharacteristics.html#SCALER_STREAM_CONFIGURATION_MAP_MAXIMUM_RESOLUTION)">Camera<wbr/>Characteristics#SCALER_<wbr/>STREAM_<wbr/>CONFIGURATION_<wbr/>MAP_<wbr/>MAXIMUM_<wbr/>RESOLUTION)</a>.<wbr/>
29389Unless reported by both
29390<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>s,<wbr/> the outputs from
29391<code><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map<wbr/>Maximum<wbr/>Resolution</a></code> and
29392<code><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></code>
29393must not be mixed in the same CaptureRequest.<wbr/> In other words,<wbr/> these outputs are
29394exclusive to each other.<wbr/>
29395This key does not need to be set for reprocess requests.<wbr/></p>
29396 </td>
29397 </tr>
29398
29399
29400 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29401 <!-- end of entry -->
29402
29403
29404 <tr class="entry" id="dynamic_android.sensor.rawBinningFactorUsed">
29405 <td class="entry_name
29406 " rowspan="3">
29407 android.<wbr/>sensor.<wbr/>raw<wbr/>Binning<wbr/>Factor<wbr/>Used
29408 </td>
29409 <td class="entry_type">
29410 <span class="entry_type_name entry_type_name_enum">byte</span>
29411
29412 <span class="entry_type_visibility"> [public as boolean]</span>
29413
29414
29415
29416
29417
29418 <ul class="entry_type_enum">
29419 <li>
29420 <span class="entry_type_enum_name">TRUE (v3.6)</span>
29421 <span class="entry_type_enum_notes"><p>The <code>RAW</code> targets in this capture have <a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a> as the
29422bayer pattern.<wbr/></p></span>
29423 </li>
29424 <li>
29425 <span class="entry_type_enum_name">FALSE (v3.6)</span>
29426 <span class="entry_type_enum_notes"><p>The <code>RAW</code> targets have a regular bayer pattern in this capture.<wbr/></p></span>
29427 </li>
29428 </ul>
29429
29430 </td> <!-- entry_type -->
29431
29432 <td class="entry_description">
29433 <p>Whether <code>RAW</code> images requested have their bayer pattern as described by
29434<a href="#static_android.sensor.info.binningFactor">android.<wbr/>sensor.<wbr/>info.<wbr/>binning<wbr/>Factor</a>.<wbr/></p>
29435 </td>
29436
29437 <td class="entry_units">
29438 </td>
29439
29440 <td class="entry_range">
29441 </td>
29442
29443 <td class="entry_hal_version">
29444 <p>3.<wbr/>6</p>
29445 </td>
29446
29447 <td class="entry_tags">
29448 </td>
29449
29450 </tr>
29451 <tr class="entries_header">
29452 <th class="th_details" colspan="6">Details</th>
29453 </tr>
29454 <tr class="entry_cont">
29455 <td class="entry_details" colspan="6">
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070029456 <p>This key will only be present in devices advertising the
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080029457<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a>
29458capability which also advertise <code>REMOSAIC_<wbr/>REPROCESSING</code> capability.<wbr/> On all other devices
29459RAW targets will have a regular bayer pattern.<wbr/></p>
29460 </td>
29461 </tr>
29462
29463
29464 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29465 <!-- end of entry -->
29466
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029467
29468
29469 <!-- end of kind -->
29470 </tbody>
29471
29472 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029473 <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029474
29475
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029476 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029477
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070029478 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029479 <tr>
29480 <th class="th_name">Property Name</th>
29481 <th class="th_type">Type</th>
29482 <th class="th_description">Description</th>
29483 <th class="th_units">Units</th>
29484 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029485 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029486 <th class="th_tags">Tags</th>
29487 </tr>
29488 </thead>
29489
29490 <tbody>
29491
29492
29493
29494
29495
29496
29497
29498
29499
29500
29501 <tr class="entry" id="controls_android.shading.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070029502 <td class="entry_name
29503 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080029504 android.<wbr/>shading.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029505 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029506 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080029507 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029508
Zhijun He6ba86962014-03-03 17:32:30 -080029509 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029510
Igor Murashkin6c936c12014-05-13 14:51:49 -070029511
Igor Murashkinca256272014-10-02 15:27:09 -070029512 <span class="entry_type_hwlevel">[full] </span>
29513
Igor Murashkin6c936c12014-05-13 14:51:49 -070029514
29515
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029516 <ul class="entry_type_enum">
29517 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029518 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029519 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029520 </li>
29521 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029522 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029523 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
29524frame rate relative to sensor raw output</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029525 </li>
29526 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029527 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029528 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070029529cost of possibly reduced frame rate.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029530 </li>
29531 </ul>
29532
29533 </td> <!-- entry_type -->
29534
29535 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080029536 <p>Quality of lens shading correction applied
Zhijun He2f86a212014-01-15 10:34:02 -080029537to the image data.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029538 </td>
29539
29540 <td class="entry_units">
29541 </td>
29542
29543 <td class="entry_range">
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029544 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029545 </td>
29546
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029547 <td class="entry_hal_version">
29548 <p>3.<wbr/>2</p>
29549 </td>
29550
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029551 <td class="entry_tags">
29552 </td>
29553
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029554 </tr>
Zhijun He2f86a212014-01-15 10:34:02 -080029555 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029556 <th class="th_details" colspan="6">Details</th>
Zhijun He2f86a212014-01-15 10:34:02 -080029557 </tr>
29558 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029559 <td class="entry_details" colspan="6">
Zhijun He2f86a212014-01-15 10:34:02 -080029560 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
29561camera device,<wbr/> and an identity lens shading map data will be provided
29562if <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
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029563shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
29564the 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
29565map shown below:</p>
Zhijun He2f86a212014-01-15 10:34:02 -080029566<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/>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029567 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/>
29568 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/>
29569 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/>
29570 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/>
29571 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 ]
Zhijun He2f86a212014-01-15 10:34:02 -080029572</code></pre>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029573<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
29574device.<wbr/> Applications can request lens shading map data by setting
29575<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
29576shading 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
29577data will be the one applied by the camera device for this capture request.<wbr/></p>
29578<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
29579the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
29580AWB 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>
29581OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
29582to be converged before using the returned shading map data.<wbr/></p>
Zhijun He2f86a212014-01-15 10:34:02 -080029583 </td>
29584 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029585
29586
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029587 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029588 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029589
29590
29591 <tr class="entry" id="controls_android.shading.strength">
Igor Murashkin6c936c12014-05-13 14:51:49 -070029592 <td class="entry_name
29593 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080029594 android.<wbr/>shading.<wbr/>strength
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029595 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029596 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080029597 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029598
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070029599 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029600
29601
Igor Murashkin6c936c12014-05-13 14:51:49 -070029602
29603
29604
Igor Murashkinca256272014-10-02 15:27:09 -070029605
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029606 </td> <!-- entry_type -->
29607
29608 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080029609 <p>Control the amount of shading correction
29610applied to the images</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029611 </td>
29612
29613 <td class="entry_units">
Igor Murashkin0b080452013-12-27 15:30:25 -080029614 unitless: 1-10; 10 is full shading
29615 compensation
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029616 </td>
29617
29618 <td class="entry_range">
29619 </td>
29620
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029621 <td class="entry_hal_version">
29622 <p>3.<wbr/>2</p>
29623 </td>
29624
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029625 <td class="entry_tags">
29626 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070029627 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029628 </ul>
29629 </td>
29630
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029631 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029632
29633
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029634 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029635 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029636
29637
29638
29639 <!-- end of kind -->
29640 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029641 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029642
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070029643 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029644 <tr>
29645 <th class="th_name">Property Name</th>
29646 <th class="th_type">Type</th>
29647 <th class="th_description">Description</th>
29648 <th class="th_units">Units</th>
29649 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029650 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029651 <th class="th_tags">Tags</th>
29652 </tr>
29653 </thead>
29654
29655 <tbody>
29656
29657
29658
29659
29660
29661
29662
29663
29664
29665
29666 <tr class="entry" id="dynamic_android.shading.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070029667 <td class="entry_name
29668 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080029669 android.<wbr/>shading.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029670 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029671 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080029672 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029673
Zhijun He6ba86962014-03-03 17:32:30 -080029674 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029675
Igor Murashkin6c936c12014-05-13 14:51:49 -070029676
Igor Murashkinca256272014-10-02 15:27:09 -070029677 <span class="entry_type_hwlevel">[full] </span>
29678
Igor Murashkin6c936c12014-05-13 14:51:49 -070029679
29680
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029681 <ul class="entry_type_enum">
29682 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029683 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029684 <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029685 </li>
29686 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029687 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029688 <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
29689frame rate relative to sensor raw output</p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029690 </li>
29691 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029692 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029693 <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070029694cost of possibly reduced frame rate.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029695 </li>
29696 </ul>
29697
29698 </td> <!-- entry_type -->
29699
29700 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080029701 <p>Quality of lens shading correction applied
Zhijun He2f86a212014-01-15 10:34:02 -080029702to the image data.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029703 </td>
29704
29705 <td class="entry_units">
29706 </td>
29707
29708 <td class="entry_range">
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029709 <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029710 </td>
29711
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029712 <td class="entry_hal_version">
29713 <p>3.<wbr/>2</p>
29714 </td>
29715
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029716 <td class="entry_tags">
29717 </td>
29718
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029719 </tr>
Zhijun He2f86a212014-01-15 10:34:02 -080029720 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029721 <th class="th_details" colspan="6">Details</th>
Zhijun He2f86a212014-01-15 10:34:02 -080029722 </tr>
29723 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029724 <td class="entry_details" colspan="6">
Zhijun He2f86a212014-01-15 10:34:02 -080029725 <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
29726camera device,<wbr/> and an identity lens shading map data will be provided
29727if <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
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029728shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
29729the 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
29730map shown below:</p>
Zhijun He2f86a212014-01-15 10:34:02 -080029731<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/>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029732 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/>
29733 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/>
29734 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/>
29735 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/>
29736 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 ]
Zhijun He2f86a212014-01-15 10:34:02 -080029737</code></pre>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029738<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
29739device.<wbr/> Applications can request lens shading map data by setting
29740<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
29741shading 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
29742data will be the one applied by the camera device for this capture request.<wbr/></p>
29743<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
29744the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
29745AWB 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>
29746OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
29747to be converged before using the returned shading map data.<wbr/></p>
Zhijun He2f86a212014-01-15 10:34:02 -080029748 </td>
29749 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029750
29751
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029752 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029753 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029754
29755
29756
29757 <!-- end of kind -->
29758 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029759 <tr><td colspan="7" class="kind">static</td></tr>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029760
29761 <thead class="entries_header">
29762 <tr>
29763 <th class="th_name">Property Name</th>
29764 <th class="th_type">Type</th>
29765 <th class="th_description">Description</th>
29766 <th class="th_units">Units</th>
29767 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029768 <th class="th_hal_version">Initial HIDL HAL version</th>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029769 <th class="th_tags">Tags</th>
29770 </tr>
29771 </thead>
29772
29773 <tbody>
29774
29775
29776
29777
29778
29779
29780
29781
29782
29783
29784 <tr class="entry" id="static_android.shading.availableModes">
29785 <td class="entry_name
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070029786 " rowspan="5">
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029787 android.<wbr/>shading.<wbr/>available<wbr/>Modes
29788 </td>
29789 <td class="entry_type">
29790 <span class="entry_type_name">byte</span>
29791 <span class="entry_type_container">x</span>
29792
29793 <span class="entry_type_array">
29794 n
29795 </span>
29796 <span class="entry_type_visibility"> [public as enumList]</span>
29797
29798
29799 <span class="entry_type_hwlevel">[legacy] </span>
29800
29801
29802 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
29803
29804
29805 </td> <!-- entry_type -->
29806
29807 <td class="entry_description">
29808 <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>
29809 </td>
29810
29811 <td class="entry_units">
29812 </td>
29813
29814 <td class="entry_range">
29815 <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
29816 </td>
29817
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029818 <td class="entry_hal_version">
29819 <p>3.<wbr/>2</p>
29820 </td>
29821
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029822 <td class="entry_tags">
29823 </td>
29824
29825 </tr>
29826 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029827 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029828 </tr>
29829 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029830 <td class="entry_details" colspan="6">
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029831 <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
29832Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
29833list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
29834LEGACY devices will always only support FAST mode.<wbr/></p>
29835 </td>
29836 </tr>
29837
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070029838 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029839 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070029840 </tr>
29841 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029842 <td class="entry_details" colspan="6">
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070029843 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
29844available on the camera device,<wbr/> but the underlying implementation can be the same for
29845both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
29846slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
29847 </td>
29848 </tr>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029849
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029850 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080029851 <!-- end of entry -->
29852
29853
29854
29855 <!-- end of kind -->
29856 </tbody>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029857
29858 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029859 <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029860
29861
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029862 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029863
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070029864 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029865 <tr>
29866 <th class="th_name">Property Name</th>
29867 <th class="th_type">Type</th>
29868 <th class="th_description">Description</th>
29869 <th class="th_units">Units</th>
29870 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029871 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029872 <th class="th_tags">Tags</th>
29873 </tr>
29874 </thead>
29875
29876 <tbody>
29877
29878
29879
29880
29881
29882
29883
29884
29885
29886
29887 <tr class="entry" id="controls_android.statistics.faceDetectMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070029888 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029889 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080029890 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029891 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029892 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080029893 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029894
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070029895 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029896
Igor Murashkin6c936c12014-05-13 14:51:49 -070029897
Igor Murashkinca256272014-10-02 15:27:09 -070029898 <span class="entry_type_hwlevel">[legacy] </span>
29899
Igor Murashkin6c936c12014-05-13 14:51:49 -070029900
29901
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029902 <ul class="entry_type_enum">
29903 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029904 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029905 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
29906results.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029907 </li>
29908 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029909 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029910 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029911 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029912 </li>
29913 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029914 <span class="entry_type_enum_name">FULL (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070029915 <span class="entry_type_enum_optional">[optional]</span>
29916 <span class="entry_type_enum_notes"><p>Return all face
29917metadata.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029918<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029919 </li>
29920 </ul>
29921
29922 </td> <!-- entry_type -->
29923
29924 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029925 <p>Operating mode for the face detector
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070029926unit.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029927 </td>
29928
29929 <td class="entry_units">
29930 </td>
29931
29932 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080029933 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029934 </td>
29935
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029936 <td class="entry_hal_version">
29937 <p>3.<wbr/>2</p>
29938 </td>
29939
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029940 <td class="entry_tags">
29941 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080029942 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029943 </ul>
29944 </td>
29945
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029946 </tr>
29947 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029948 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029949 </tr>
29950 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029951 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080029952 <p>Whether face detection is enabled,<wbr/> and whether it
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029953should output just the basic fields or the full set of
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029954fields.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029955 </td>
29956 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029957
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029958 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029959 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029960 </tr>
29961 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029962 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070029963 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
29964<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
29965FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
29966<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
29967 </td>
29968 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029969
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080029970 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080029971 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029972
29973
29974 <tr class="entry" id="controls_android.statistics.histogramMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070029975 <td class="entry_name
29976 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080029977 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080029978 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029979 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080029980 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029981
Igor Murashkinb8dc8812013-07-17 16:29:34 -070029982 <span class="entry_type_visibility"> [system as boolean]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029983
Igor Murashkin6c936c12014-05-13 14:51:49 -070029984
29985
29986
Igor Murashkinca256272014-10-02 15:27:09 -070029987
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029988 <ul class="entry_type_enum">
29989 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029990 <span class="entry_type_enum_name">OFF (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029991 </li>
29992 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080029993 <span class="entry_type_enum_name">ON (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080029994 </li>
29995 </ul>
29996
29997 </td> <!-- entry_type -->
29998
29999 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080030000 <p>Operating mode for histogram
30001generation</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030002 </td>
30003
30004 <td class="entry_units">
30005 </td>
30006
30007 <td class="entry_range">
30008 </td>
30009
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030010 <td class="entry_hal_version">
30011 <p>3.<wbr/>2</p>
30012 </td>
30013
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030014 <td class="entry_tags">
30015 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070030016 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030017 </ul>
30018 </td>
30019
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030020 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030021
30022
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030023 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030024 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030025
30026
30027 <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030028 <td class="entry_name
30029 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080030030 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030031 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030032 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030033 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030034
Igor Murashkinb8dc8812013-07-17 16:29:34 -070030035 <span class="entry_type_visibility"> [system as boolean]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030036
Igor Murashkin6c936c12014-05-13 14:51:49 -070030037
30038
30039
Igor Murashkinca256272014-10-02 15:27:09 -070030040
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030041 <ul class="entry_type_enum">
30042 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080030043 <span class="entry_type_enum_name">OFF (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030044 </li>
30045 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080030046 <span class="entry_type_enum_name">ON (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030047 </li>
30048 </ul>
30049
30050 </td> <!-- entry_type -->
30051
30052 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080030053 <p>Operating mode for sharpness map
30054generation</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030055 </td>
30056
30057 <td class="entry_units">
30058 </td>
30059
30060 <td class="entry_range">
30061 </td>
30062
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030063 <td class="entry_hal_version">
30064 <p>3.<wbr/>2</p>
30065 </td>
30066
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030067 <td class="entry_tags">
30068 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070030069 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030070 </ul>
30071 </td>
30072
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030073 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030074
30075
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030077 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030078
Zhijun He69fc0ea2013-07-17 09:42:58 -070030079
Ruben Brunk49e4f912014-03-04 14:09:44 -080030080 <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030081 <td class="entry_name
30082 " rowspan="3">
Ruben Brunk49e4f912014-03-04 14:09:44 -080030083 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
30084 </td>
30085 <td class="entry_type">
30086 <span class="entry_type_name entry_type_name_enum">byte</span>
30087
30088 <span class="entry_type_visibility"> [public as boolean]</span>
30089
Igor Murashkin6c936c12014-05-13 14:51:49 -070030090
30091
30092
Igor Murashkinca256272014-10-02 15:27:09 -070030093
Ruben Brunk49e4f912014-03-04 14:09:44 -080030094 <ul class="entry_type_enum">
30095 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080030096 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030097 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030098 </li>
30099 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080030100 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030101 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030102 </li>
30103 </ul>
30104
30105 </td> <!-- entry_type -->
30106
30107 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030108 <p>Operating mode for hot pixel map generation.<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030109 </td>
30110
30111 <td class="entry_units">
30112 </td>
30113
30114 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030115 <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>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030116 </td>
30117
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030118 <td class="entry_hal_version">
30119 <p>3.<wbr/>2</p>
30120 </td>
30121
Ruben Brunk49e4f912014-03-04 14:09:44 -080030122 <td class="entry_tags">
30123 <ul class="entry_tags">
30124 <li><a href="#tag_V1">V1</a></li>
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070030125 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030126 </ul>
30127 </td>
30128
30129 </tr>
30130 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030131 <th class="th_details" colspan="6">Details</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030132 </tr>
30133 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030134 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030135 <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/>
30136If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030137 </td>
30138 </tr>
30139
30140
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030141 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030142 <!-- end of entry -->
30143
30144
Zhijun He69fc0ea2013-07-17 09:42:58 -070030145 <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030146 <td class="entry_name
30147 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080030148 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030149 </td>
Zhijun He69fc0ea2013-07-17 09:42:58 -070030150 <td class="entry_type">
30151 <span class="entry_type_name entry_type_name_enum">byte</span>
30152
30153 <span class="entry_type_visibility"> [public]</span>
30154
Igor Murashkin6c936c12014-05-13 14:51:49 -070030155
Igor Murashkinca256272014-10-02 15:27:09 -070030156 <span class="entry_type_hwlevel">[full] </span>
30157
Igor Murashkin6c936c12014-05-13 14:51:49 -070030158
30159
Zhijun He69fc0ea2013-07-17 09:42:58 -070030160 <ul class="entry_type_enum">
30161 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080030162 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030163 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070030164 </li>
30165 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080030166 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030167 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070030168 </li>
30169 </ul>
30170
30171 </td> <!-- entry_type -->
30172
30173 <td class="entry_description">
Zhijun He25b8ac52014-02-24 09:49:37 -080030174 <p>Whether the camera device will output the lens
30175shading map in output result metadata.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070030176 </td>
30177
30178 <td class="entry_units">
30179 </td>
30180
30181 <td class="entry_range">
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080030182 <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>
Zhijun He69fc0ea2013-07-17 09:42:58 -070030183 </td>
30184
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030185 <td class="entry_hal_version">
30186 <p>3.<wbr/>2</p>
30187 </td>
30188
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030189 <td class="entry_tags">
Igor Murashkinca256272014-10-02 15:27:09 -070030190 <ul class="entry_tags">
30191 <li><a href="#tag_RAW">RAW</a></li>
30192 </ul>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030193 </td>
30194
30195 </tr>
30196 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030197 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030198 </tr>
30199 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030200 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080030201 <p>When set to ON,<wbr/>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030202<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
Igor Murashkin0b080452013-12-27 15:30:25 -080030203the output result metadata.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030204<p>ON is always supported on devices with the RAW capability.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070030205 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030206 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030207
30208
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030209 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030210 <!-- end of entry -->
Zhijun He69fc0ea2013-07-17 09:42:58 -070030211
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080030212
30213 <tr class="entry" id="controls_android.statistics.oisDataMode">
30214 <td class="entry_name
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070030215 " rowspan="3">
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080030216 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
30217 </td>
30218 <td class="entry_type">
30219 <span class="entry_type_name entry_type_name_enum">byte</span>
30220
30221 <span class="entry_type_visibility"> [public]</span>
30222
30223
30224
30225
30226
30227 <ul class="entry_type_enum">
30228 <li>
30229 <span class="entry_type_enum_name">OFF (v3.3)</span>
30230 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
30231 </li>
30232 <li>
30233 <span class="entry_type_enum_name">ON (v3.3)</span>
30234 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
30235 </li>
30236 </ul>
30237
30238 </td> <!-- entry_type -->
30239
30240 <td class="entry_description">
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070030241 <p>A control for selecting whether optical stabilization (OIS) position
30242information is included in output result metadata.<wbr/></p>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080030243 </td>
30244
30245 <td class="entry_units">
30246 </td>
30247
30248 <td class="entry_range">
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070030249 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080030250 </td>
30251
30252 <td class="entry_hal_version">
30253 <p>3.<wbr/>3</p>
30254 </td>
30255
30256 <td class="entry_tags">
30257 </td>
30258
30259 </tr>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070030260 <tr class="entries_header">
30261 <th class="th_details" colspan="6">Details</th>
30262 </tr>
30263 <tr class="entry_cont">
30264 <td class="entry_details" colspan="6">
30265 <p>Since optical image stabilization generally involves motion much faster than the duration
Shuzhen Wang1373ab52021-03-17 11:00:23 -070030266of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070030267result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating
30268at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined
30269with the rolling shutter skew to account for lens motion during image exposure in
30270post-processing algorithms.<wbr/></p>
30271 </td>
30272 </tr>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080030273
30274
30275 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30276 <!-- end of entry -->
30277
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030278
30279
30280 <!-- end of kind -->
30281 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030282 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030283
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070030284 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030285 <tr>
30286 <th class="th_name">Property Name</th>
30287 <th class="th_type">Type</th>
30288 <th class="th_description">Description</th>
30289 <th class="th_units">Units</th>
30290 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030291 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030292 <th class="th_tags">Tags</th>
30293 </tr>
30294 </thead>
30295
30296 <tbody>
30297
30298
30299
30300
30301
30302
30303
30304
30305
30306
30307
30308
30309 <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030310 <td class="entry_name
30311 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080030312 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030313 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030314 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030315 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030316 <span class="entry_type_container">x</span>
30317
30318 <span class="entry_type_array">
30319 n
30320 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070030321 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070030322
30323
Igor Murashkinca256272014-10-02 15:27:09 -070030324 <span class="entry_type_hwlevel">[legacy] </span>
30325
Igor Murashkin6c936c12014-05-13 14:51:49 -070030326
Igor Murashkin0b080452013-12-27 15:30:25 -080030327 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030328
30329
30330 </td> <!-- entry_type -->
30331
30332 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030333 <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
30334supported by this camera device.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030335 </td>
30336
30337 <td class="entry_units">
30338 </td>
30339
30340 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030341 <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030342 </td>
30343
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030344 <td class="entry_hal_version">
30345 <p>3.<wbr/>2</p>
30346 </td>
30347
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030348 <td class="entry_tags">
30349 </td>
30350
30351 </tr>
30352 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030353 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030354 </tr>
30355 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030356 <td class="entry_details" colspan="6">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030357 <p>OFF is always supported.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030358 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030359 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030360
30361
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030362 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030363 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030364
30365
30366 <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030367 <td class="entry_name
30368 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080030369 android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030370 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030371 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030372 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030373
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070030374 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030375
30376
Igor Murashkin6c936c12014-05-13 14:51:49 -070030377
30378
30379
Igor Murashkinca256272014-10-02 15:27:09 -070030380
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030381 </td> <!-- entry_type -->
30382
30383 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080030384 <p>Number of histogram buckets
30385supported</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030386 </td>
30387
30388 <td class="entry_units">
30389 </td>
30390
30391 <td class="entry_range">
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -080030392 <p>&gt;= 64</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030393 </td>
30394
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030395 <td class="entry_hal_version">
30396 <p>3.<wbr/>2</p>
30397 </td>
30398
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030399 <td class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070030400 <ul class="entry_tags">
30401 <li><a href="#tag_FUTURE">FUTURE</a></li>
30402 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030403 </td>
30404
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030405 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030406
30407
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030408 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030409 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030410
30411
30412 <tr class="entry" id="static_android.statistics.info.maxFaceCount">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030413 <td class="entry_name
30414 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080030415 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030416 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030417 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030418 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030419
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070030420 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030421
30422
Igor Murashkinca256272014-10-02 15:27:09 -070030423 <span class="entry_type_hwlevel">[legacy] </span>
30424
Igor Murashkin6c936c12014-05-13 14:51:49 -070030425
30426
30427
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030428 </td> <!-- entry_type -->
30429
30430 <td class="entry_description">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030431 <p>The maximum number of simultaneously detectable
30432faces.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030433 </td>
30434
30435 <td class="entry_units">
30436 </td>
30437
30438 <td class="entry_range">
Igor Murashkinca256272014-10-02 15:27:09 -070030439 <p>0 for cameras without available face detection; otherwise:
30440<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
30441<code>&gt;0</code> for LEGACY devices.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030442 </td>
30443
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030444 <td class="entry_hal_version">
30445 <p>3.<wbr/>2</p>
30446 </td>
30447
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030448 <td class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070030449 <ul class="entry_tags">
30450 <li><a href="#tag_BC">BC</a></li>
30451 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030452 </td>
30453
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030454 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030455
30456
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030457 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030458 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030459
30460
30461 <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030462 <td class="entry_name
30463 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080030464 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030465 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030466 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030467 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030468
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070030469 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030470
30471
Igor Murashkin6c936c12014-05-13 14:51:49 -070030472
30473
30474
Igor Murashkinca256272014-10-02 15:27:09 -070030475
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030476 </td> <!-- entry_type -->
30477
30478 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080030479 <p>Maximum value possible for a histogram
30480bucket</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030481 </td>
30482
30483 <td class="entry_units">
30484 </td>
30485
30486 <td class="entry_range">
30487 </td>
30488
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030489 <td class="entry_hal_version">
30490 <p>3.<wbr/>2</p>
30491 </td>
30492
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030493 <td class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070030494 <ul class="entry_tags">
30495 <li><a href="#tag_FUTURE">FUTURE</a></li>
30496 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030497 </td>
30498
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030499 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030500
30501
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030502 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030503 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030504
30505
30506 <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030507 <td class="entry_name
30508 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080030509 android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030510 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030511 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030512 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030513
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070030514 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030515
30516
Igor Murashkin6c936c12014-05-13 14:51:49 -070030517
30518
30519
Igor Murashkinca256272014-10-02 15:27:09 -070030520
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030521 </td> <!-- entry_type -->
30522
30523 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080030524 <p>Maximum value possible for a sharpness map
30525region.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030526 </td>
30527
30528 <td class="entry_units">
30529 </td>
30530
30531 <td class="entry_range">
30532 </td>
30533
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030534 <td class="entry_hal_version">
30535 <p>3.<wbr/>2</p>
30536 </td>
30537
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030538 <td class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070030539 <ul class="entry_tags">
30540 <li><a href="#tag_FUTURE">FUTURE</a></li>
30541 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030542 </td>
30543
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030544 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030545
30546
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030547 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030548 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030549
30550
30551 <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030552 <td class="entry_name
30553 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080030554 android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030555 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030556 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030557 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030558 <span class="entry_type_container">x</span>
30559
30560 <span class="entry_type_array">
30561 2
30562 </span>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070030563 <span class="entry_type_visibility"> [system as size]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070030564
30565
30566
Igor Murashkinca256272014-10-02 15:27:09 -070030567
Igor Murashkin0b080452013-12-27 15:30:25 -080030568 <div class="entry_type_notes">width x height</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030569
30570
30571 </td> <!-- entry_type -->
30572
30573 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080030574 <p>Dimensions of the sharpness
30575map</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030576 </td>
30577
30578 <td class="entry_units">
30579 </td>
30580
30581 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080030582 <p>Must be at least 32 x 32</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030583 </td>
30584
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030585 <td class="entry_hal_version">
30586 <p>3.<wbr/>2</p>
30587 </td>
30588
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030589 <td class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070030590 <ul class="entry_tags">
30591 <li><a href="#tag_FUTURE">FUTURE</a></li>
30592 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030593 </td>
30594
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030595 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030596
30597
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030598 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030599 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030600
Ruben Brunk49e4f912014-03-04 14:09:44 -080030601
30602 <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030603 <td class="entry_name
30604 " rowspan="3">
Ruben Brunk49e4f912014-03-04 14:09:44 -080030605 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
30606 </td>
30607 <td class="entry_type">
30608 <span class="entry_type_name">byte</span>
30609 <span class="entry_type_container">x</span>
30610
30611 <span class="entry_type_array">
30612 n
30613 </span>
30614 <span class="entry_type_visibility"> [public as boolean]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070030615
30616
30617
Igor Murashkinca256272014-10-02 15:27:09 -070030618
Ruben Brunk49e4f912014-03-04 14:09:44 -080030619 <div class="entry_type_notes">list of enums</div>
30620
30621
30622 </td> <!-- entry_type -->
30623
30624 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030625 <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
30626supported by this camera device.<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030627 </td>
30628
30629 <td class="entry_units">
30630 </td>
30631
30632 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030633 <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030634 </td>
30635
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030636 <td class="entry_hal_version">
30637 <p>3.<wbr/>2</p>
30638 </td>
30639
Ruben Brunk49e4f912014-03-04 14:09:44 -080030640 <td class="entry_tags">
30641 <ul class="entry_tags">
30642 <li><a href="#tag_V1">V1</a></li>
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070030643 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030644 </ul>
30645 </td>
30646
30647 </tr>
30648 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030649 <th class="th_details" colspan="6">Details</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030650 </tr>
30651 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030652 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030653 <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
30654<code>false</code>.<wbr/></p>
30655<p>ON is always supported on devices with the RAW capability.<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030656 </td>
30657 </tr>
30658
30659
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030660 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk49e4f912014-03-04 14:09:44 -080030661 <!-- end of entry -->
30662
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080030663
30664 <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
30665 <td class="entry_name
30666 " rowspan="3">
30667 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
30668 </td>
30669 <td class="entry_type">
30670 <span class="entry_type_name">byte</span>
30671 <span class="entry_type_container">x</span>
30672
30673 <span class="entry_type_array">
30674 n
30675 </span>
Yin-Chia Yehde1da612015-05-22 16:36:25 -070030676 <span class="entry_type_visibility"> [public as enumList]</span>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080030677
30678
30679
30680
30681 <div class="entry_type_notes">list of enums</div>
30682
30683
30684 </td> <!-- entry_type -->
30685
30686 <td class="entry_description">
30687 <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
30688are supported by this camera device.<wbr/></p>
30689 </td>
30690
30691 <td class="entry_units">
30692 </td>
30693
30694 <td class="entry_range">
30695 <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
30696 </td>
30697
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030698 <td class="entry_hal_version">
30699 <p>3.<wbr/>2</p>
30700 </td>
30701
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080030702 <td class="entry_tags">
30703 </td>
30704
30705 </tr>
30706 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030707 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080030708 </tr>
30709 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030710 <td class="entry_details" colspan="6">
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080030711 <p>If no lens shading map output is available for this camera device,<wbr/> this key will
30712contain only OFF.<wbr/></p>
30713<p>ON is always supported on devices with the RAW capability.<wbr/>
30714LEGACY mode devices will always only support OFF.<wbr/></p>
30715 </td>
30716 </tr>
30717
30718
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030719 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080030720 <!-- end of entry -->
30721
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080030722
30723 <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
30724 <td class="entry_name
30725 " rowspan="3">
30726 android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
30727 </td>
30728 <td class="entry_type">
30729 <span class="entry_type_name">byte</span>
30730 <span class="entry_type_container">x</span>
30731
30732 <span class="entry_type_array">
30733 n
30734 </span>
30735 <span class="entry_type_visibility"> [public as enumList]</span>
30736
30737
30738
30739
30740 <div class="entry_type_notes">list of enums</div>
30741
30742
30743 </td> <!-- entry_type -->
30744
30745 <td class="entry_description">
30746 <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
30747are supported by this camera device.<wbr/></p>
30748 </td>
30749
30750 <td class="entry_units">
30751 </td>
30752
30753 <td class="entry_range">
30754 <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
30755 </td>
30756
30757 <td class="entry_hal_version">
30758 <p>3.<wbr/>3</p>
30759 </td>
30760
30761 <td class="entry_tags">
30762 </td>
30763
30764 </tr>
30765 <tr class="entries_header">
30766 <th class="th_details" colspan="6">Details</th>
30767 </tr>
30768 <tr class="entry_cont">
30769 <td class="entry_details" colspan="6">
30770 <p>If no OIS data output is available for this camera device,<wbr/> this key will
30771contain only OFF.<wbr/></p>
30772 </td>
30773 </tr>
30774
30775
30776 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
30777 <!-- end of entry -->
30778
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030779
30780
30781
30782
30783
30784 <!-- end of kind -->
30785 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030786 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030787
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070030788 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030789 <tr>
30790 <th class="th_name">Property Name</th>
30791 <th class="th_type">Type</th>
30792 <th class="th_description">Description</th>
30793 <th class="th_units">Units</th>
30794 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030795 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030796 <th class="th_tags">Tags</th>
30797 </tr>
30798 </thead>
30799
30800 <tbody>
30801
30802
30803
30804
30805
30806
30807
30808
30809
30810
30811 <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030812 <td class="entry_name
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030813 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080030814 android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030815 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030816 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030817 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030818
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070030819 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030820
Igor Murashkin6c936c12014-05-13 14:51:49 -070030821
Igor Murashkinca256272014-10-02 15:27:09 -070030822 <span class="entry_type_hwlevel">[legacy] </span>
30823
Igor Murashkin6c936c12014-05-13 14:51:49 -070030824
30825
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030826 <ul class="entry_type_enum">
30827 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080030828 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030829 <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
30830results.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030831 </li>
30832 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080030833 <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030834 <span class="entry_type_enum_optional">[optional]</span>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030835 <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030836 </li>
30837 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080030838 <span class="entry_type_enum_name">FULL (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030839 <span class="entry_type_enum_optional">[optional]</span>
30840 <span class="entry_type_enum_notes"><p>Return all face
30841metadata.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030842<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030843 </li>
30844 </ul>
30845
30846 </td> <!-- entry_type -->
30847
30848 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030849 <p>Operating mode for the face detector
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070030850unit.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030851 </td>
30852
30853 <td class="entry_units">
30854 </td>
30855
30856 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080030857 <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030858 </td>
30859
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030860 <td class="entry_hal_version">
30861 <p>3.<wbr/>2</p>
30862 </td>
30863
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030864 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080030865 <ul class="entry_tags">
30866 <li><a href="#tag_BC">BC</a></li>
30867 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030868 </td>
30869
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030870 </tr>
30871 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030872 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030873 </tr>
30874 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030875 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080030876 <p>Whether face detection is enabled,<wbr/> and whether it
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030877should output just the basic fields or the full set of
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030878fields.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030879 </td>
30880 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030881
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030882 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030883 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030884 </tr>
30885 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030886 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070030887 <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
30888<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
30889FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
30890<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
30891 </td>
30892 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030893
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030894 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030895 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030896
30897
30898 <tr class="entry" id="dynamic_android.statistics.faceIds">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030899 <td class="entry_name
30900 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080030901 android.<wbr/>statistics.<wbr/>face<wbr/>Ids
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030902 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030903 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030904 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030905 <span class="entry_type_container">x</span>
30906
30907 <span class="entry_type_array">
30908 n
30909 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070030910 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030911
30912
Igor Murashkinca256272014-10-02 15:27:09 -070030913 <span class="entry_type_hwlevel">[legacy] </span>
30914
Igor Murashkin6c936c12014-05-13 14:51:49 -070030915
30916
30917
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030918 </td> <!-- entry_type -->
30919
30920 <td class="entry_description">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030921 <p>List of unique IDs for detected faces.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030922 </td>
30923
30924 <td class="entry_units">
30925 </td>
30926
30927 <td class="entry_range">
30928 </td>
30929
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030930 <td class="entry_hal_version">
30931 <p>3.<wbr/>2</p>
30932 </td>
30933
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030934 <td class="entry_tags">
30935 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080030936 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030937 </ul>
30938 </td>
30939
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030940 </tr>
30941 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030942 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030943 </tr>
30944 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030945 <td class="entry_details" colspan="6">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030946 <p>Each detected face is given a unique ID that is valid for as long as the face is visible
30947to the camera device.<wbr/> A face that leaves the field of view and later returns may be
30948assigned a new ID.<wbr/></p>
30949<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030950 </td>
30951 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030952
30953
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030954 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080030955 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030956
30957
30958 <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
Igor Murashkin6c936c12014-05-13 14:51:49 -070030959 <td class="entry_name
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070030960 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080030961 android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080030962 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030963 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080030964 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030965 <span class="entry_type_container">x</span>
30966
30967 <span class="entry_type_array">
30968 n x 6
30969 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070030970 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070030971
30972
Igor Murashkinca256272014-10-02 15:27:09 -070030973 <span class="entry_type_hwlevel">[legacy] </span>
30974
Igor Murashkin6c936c12014-05-13 14:51:49 -070030975
Igor Murashkin0b080452013-12-27 15:30:25 -080030976 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030977
30978
30979 </td> <!-- entry_type -->
30980
30981 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080030982 <p>List of landmarks for detected
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070030983faces.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030984 </td>
30985
30986 <td class="entry_units">
30987 </td>
30988
30989 <td class="entry_range">
30990 </td>
30991
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080030992 <td class="entry_hal_version">
30993 <p>3.<wbr/>2</p>
30994 </td>
30995
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030996 <td class="entry_tags">
30997 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080030998 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080030999 </ul>
31000 </td>
31001
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031002 </tr>
31003 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031004 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031005 </tr>
31006 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031007 <td class="entry_details" colspan="6">
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070031008 <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
31009system always follows that of <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
31010the top-left pixel of the active array.<wbr/></p>
31011<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
31012system depends on the mode being set.<wbr/>
31013When the distortion correction mode is OFF,<wbr/> the coordinate system follows
31014<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
31015<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
31016When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
31017<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031018<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080031019<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL.<wbr/></p>
31020<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
31021preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
31022pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and
31023the camera device doesn't change,<wbr/> when zooming in by increasing
31024<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> the face landmarks move farther away from the center of the
31025activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0
31026(default),<wbr/> the face landmarks coordinates won't change as <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
31027changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or
31028preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031029 </td>
31030 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031031
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070031032 <tr class="entries_header">
31033 <th class="th_details" colspan="6">HAL Implementation Details</th>
31034 </tr>
31035 <tr class="entry_cont">
31036 <td class="entry_details" colspan="6">
31037 <p>HAL must always report face landmarks in the coordinate system of pre-correction
31038active array.<wbr/></p>
31039 </td>
31040 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031041
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031042 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031043 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031044
31045
31046 <tr class="entry" id="dynamic_android.statistics.faceRectangles">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031047 <td class="entry_name
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070031048 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080031049 android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031050 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031051 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080031052 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031053 <span class="entry_type_container">x</span>
31054
31055 <span class="entry_type_array">
31056 n x 4
31057 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070031058 <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070031059
31060
Igor Murashkinca256272014-10-02 15:27:09 -070031061 <span class="entry_type_hwlevel">[legacy] </span>
31062
Igor Murashkin6c936c12014-05-13 14:51:49 -070031063
Igor Murashkin0b080452013-12-27 15:30:25 -080031064 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031065
31066
31067 </td> <!-- entry_type -->
31068
31069 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080031070 <p>List of the bounding rectangles for detected
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031071faces.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031072 </td>
31073
31074 <td class="entry_units">
31075 </td>
31076
31077 <td class="entry_range">
31078 </td>
31079
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031080 <td class="entry_hal_version">
31081 <p>3.<wbr/>2</p>
31082 </td>
31083
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031084 <td class="entry_tags">
31085 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080031086 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031087 </ul>
31088 </td>
31089
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031090 </tr>
31091 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031092 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031093 </tr>
31094 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031095 <td class="entry_details" colspan="6">
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070031096 <p>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
31097system always follows that of <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
31098the top-left pixel of the active array.<wbr/></p>
31099<p>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate
31100system depends on the mode being set.<wbr/>
31101When the distortion correction mode is OFF,<wbr/> the coordinate system follows
31102<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with
31103<code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array.<wbr/>
31104When the distortion correction mode is not OFF,<wbr/> the coordinate system follows
31105<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031106<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
Shuzhen Wangb6149792019-11-07 15:59:22 -080031107<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
31108<p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or
31109preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not
31110pre-zoomRatio field of view.<wbr/> This means that if the relative position of faces and
31111the camera device doesn't change,<wbr/> when zooming in by increasing
31112<a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> the face rectangles grow larger and move farther away from
31113the center of the activeArray or preCorrectionActiveArray.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>
31114is set to 1.<wbr/>0 (default),<wbr/> the face rectangles won't change as <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>
31115changes.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use activeArraySize or
31116preCorrectionActiveArraySize still depends on distortion correction mode.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031117 </td>
31118 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031119
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070031120 <tr class="entries_header">
31121 <th class="th_details" colspan="6">HAL Implementation Details</th>
31122 </tr>
31123 <tr class="entry_cont">
31124 <td class="entry_details" colspan="6">
31125 <p>HAL must always report face rectangles in the coordinate system of pre-correction
31126active array.<wbr/></p>
31127 </td>
31128 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031129
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031130 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031131 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031132
31133
31134 <tr class="entry" id="dynamic_android.statistics.faceScores">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031135 <td class="entry_name
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031136 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080031137 android.<wbr/>statistics.<wbr/>face<wbr/>Scores
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031138 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031139 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080031140 <span class="entry_type_name">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031141 <span class="entry_type_container">x</span>
31142
31143 <span class="entry_type_array">
31144 n
31145 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070031146 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031147
31148
Igor Murashkinca256272014-10-02 15:27:09 -070031149 <span class="entry_type_hwlevel">[legacy] </span>
31150
Igor Murashkin6c936c12014-05-13 14:51:49 -070031151
31152
31153
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031154 </td> <!-- entry_type -->
31155
31156 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080031157 <p>List of the face confidence scores for
31158detected faces</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031159 </td>
31160
31161 <td class="entry_units">
31162 </td>
31163
31164 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080031165 <p>1-100</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031166 </td>
31167
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031168 <td class="entry_hal_version">
31169 <p>3.<wbr/>2</p>
31170 </td>
31171
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031172 <td class="entry_tags">
31173 <ul class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080031174 <li><a href="#tag_BC">BC</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031175 </ul>
31176 </td>
31177
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031178 </tr>
31179 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031180 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031181 </tr>
31182 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031183 <td class="entry_details" colspan="6">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031184 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031185 </td>
31186 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031187
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031188 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031189 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031190 </tr>
31191 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031192 <td class="entry_details" colspan="6">
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031193 <p>The value should be meaningful (for example,<wbr/> setting 100 at
31194all times is illegal).<wbr/></p>
31195 </td>
31196 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031197
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031198 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031199 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031200
31201
Igor Murashkinefff0de2014-05-14 17:30:49 -070031202 <tr class="entry" id="dynamic_android.statistics.faces">
31203 <td class="entry_name
31204 " rowspan="3">
31205 android.<wbr/>statistics.<wbr/>faces
31206 </td>
31207 <td class="entry_type">
31208 <span class="entry_type_name">int32</span>
31209 <span class="entry_type_container">x</span>
31210
31211 <span class="entry_type_array">
31212 n
31213 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070031214 <span class="entry_type_visibility"> [java_public as face]</span>
Igor Murashkinefff0de2014-05-14 17:30:49 -070031215
31216 <span class="entry_type_synthetic">[synthetic] </span>
31217
Igor Murashkinca256272014-10-02 15:27:09 -070031218 <span class="entry_type_hwlevel">[legacy] </span>
31219
Igor Murashkinefff0de2014-05-14 17:30:49 -070031220
31221
31222
31223 </td> <!-- entry_type -->
31224
31225 <td class="entry_description">
31226 <p>List of the faces detected through camera face detection
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070031227in this capture.<wbr/></p>
Igor Murashkinefff0de2014-05-14 17:30:49 -070031228 </td>
31229
31230 <td class="entry_units">
31231 </td>
31232
31233 <td class="entry_range">
31234 </td>
31235
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031236 <td class="entry_hal_version">
31237 <p>3.<wbr/>2</p>
31238 </td>
31239
Igor Murashkinefff0de2014-05-14 17:30:49 -070031240 <td class="entry_tags">
31241 </td>
31242
31243 </tr>
31244 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031245 <th class="th_details" colspan="6">Details</th>
Igor Murashkinefff0de2014-05-14 17:30:49 -070031246 </tr>
31247 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031248 <td class="entry_details" colspan="6">
Igor Murashkinefff0de2014-05-14 17:30:49 -070031249 <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>
31250 </td>
31251 </tr>
31252
31253
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031254 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkinefff0de2014-05-14 17:30:49 -070031255 <!-- end of entry -->
31256
31257
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031258 <tr class="entry" id="dynamic_android.statistics.histogram">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031259 <td class="entry_name
31260 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080031261 android.<wbr/>statistics.<wbr/>histogram
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031262 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031263 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080031264 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031265 <span class="entry_type_container">x</span>
31266
31267 <span class="entry_type_array">
31268 n x 3
31269 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070031270 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070031271
31272
31273
Igor Murashkinca256272014-10-02 15:27:09 -070031274
Igor Murashkin0b080452013-12-27 15:30:25 -080031275 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031276
31277
31278 </td> <!-- entry_type -->
31279
31280 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080031281 <p>A 3-channel histogram based on the raw
31282sensor data</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031283 </td>
31284
31285 <td class="entry_units">
31286 </td>
31287
31288 <td class="entry_range">
31289 </td>
31290
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031291 <td class="entry_hal_version">
31292 <p>3.<wbr/>2</p>
31293 </td>
31294
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031295 <td class="entry_tags">
31296 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070031297 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031298 </ul>
31299 </td>
31300
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031301 </tr>
31302 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031303 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031304 </tr>
31305 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031306 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080031307 <p>The k'th bucket (0-based) covers the input range
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080031308(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/>
Igor Murashkin0b080452013-12-27 15:30:25 -080031309(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
31310supported,<wbr/> all channels should have the same data</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031311 </td>
31312 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031313
31314
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031315 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031316 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031317
31318
31319 <tr class="entry" id="dynamic_android.statistics.histogramMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031320 <td class="entry_name
31321 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080031322 android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031323 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031324 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080031325 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031326
Igor Murashkinb8dc8812013-07-17 16:29:34 -070031327 <span class="entry_type_visibility"> [system as boolean]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031328
Igor Murashkin6c936c12014-05-13 14:51:49 -070031329
31330
31331
Igor Murashkinca256272014-10-02 15:27:09 -070031332
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031333 <ul class="entry_type_enum">
31334 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080031335 <span class="entry_type_enum_name">OFF (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031336 </li>
31337 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080031338 <span class="entry_type_enum_name">ON (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031339 </li>
31340 </ul>
31341
31342 </td> <!-- entry_type -->
31343
31344 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080031345 <p>Operating mode for histogram
31346generation</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031347 </td>
31348
31349 <td class="entry_units">
31350 </td>
31351
31352 <td class="entry_range">
31353 </td>
31354
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031355 <td class="entry_hal_version">
31356 <p>3.<wbr/>2</p>
31357 </td>
31358
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031359 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080031360 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070031361 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080031362 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031363 </td>
31364
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031365 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031366
31367
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031368 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031369 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031370
31371
31372 <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031373 <td class="entry_name
31374 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080031375 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031376 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031377 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080031378 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031379 <span class="entry_type_container">x</span>
31380
31381 <span class="entry_type_array">
31382 n x m x 3
31383 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070031384 <span class="entry_type_visibility"> [system]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070031385
31386
31387
Igor Murashkinca256272014-10-02 15:27:09 -070031388
Igor Murashkin0b080452013-12-27 15:30:25 -080031389 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031390
31391
31392 </td> <!-- entry_type -->
31393
31394 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080031395 <p>A 3-channel sharpness map,<wbr/> based on the raw
31396sensor data</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031397 </td>
31398
31399 <td class="entry_units">
31400 </td>
31401
31402 <td class="entry_range">
31403 </td>
31404
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031405 <td class="entry_hal_version">
31406 <p>3.<wbr/>2</p>
31407 </td>
31408
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031409 <td class="entry_tags">
31410 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070031411 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031412 </ul>
31413 </td>
31414
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031415 </tr>
31416 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031417 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031418 </tr>
31419 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031420 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080031421 <p>If only a monochrome sharpness map is supported,<wbr/>
31422all channels should have the same data</p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031423 </td>
31424 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031425
31426
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031427 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031428 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031429
31430
31431 <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031432 <td class="entry_name
31433 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080031434 android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031435 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031436 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080031437 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031438
Igor Murashkinb8dc8812013-07-17 16:29:34 -070031439 <span class="entry_type_visibility"> [system as boolean]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031440
Igor Murashkin6c936c12014-05-13 14:51:49 -070031441
31442
31443
Igor Murashkinca256272014-10-02 15:27:09 -070031444
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031445 <ul class="entry_type_enum">
31446 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080031447 <span class="entry_type_enum_name">OFF (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031448 </li>
31449 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080031450 <span class="entry_type_enum_name">ON (v3.2)</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031451 </li>
31452 </ul>
31453
31454 </td> <!-- entry_type -->
31455
31456 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080031457 <p>Operating mode for sharpness map
31458generation</p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031459 </td>
31460
31461 <td class="entry_units">
31462 </td>
31463
31464 <td class="entry_range">
31465 </td>
31466
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031467 <td class="entry_hal_version">
31468 <p>3.<wbr/>2</p>
31469 </td>
31470
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031471 <td class="entry_tags">
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080031472 <ul class="entry_tags">
Zhijun He66e62a42014-05-23 11:02:34 -070031473 <li><a href="#tag_FUTURE">FUTURE</a></li>
Igor Murashkinbaacf9a2012-12-05 14:49:11 -080031474 </ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031475 </td>
31476
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031477 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031478
31479
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031480 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031481 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080031482
Zhijun He69fc0ea2013-07-17 09:42:58 -070031483
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031484 <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
31485 <td class="entry_name
31486 " rowspan="3">
31487 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
31488 </td>
31489 <td class="entry_type">
31490 <span class="entry_type_name">byte</span>
31491
Eino-Ville Talvalad089ee62016-06-02 14:15:56 -070031492 <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031493
31494
Igor Murashkinca256272014-10-02 15:27:09 -070031495 <span class="entry_type_hwlevel">[full] </span>
31496
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031497
31498
31499
31500 </td> <!-- entry_type -->
31501
31502 <td class="entry_description">
31503 <p>The shading map is a low-resolution floating-point map
31504that lists the coefficients used to correct for vignetting,<wbr/> for each
31505Bayer color channel.<wbr/></p>
31506 </td>
31507
31508 <td class="entry_units">
31509 </td>
31510
31511 <td class="entry_range">
31512 <p>Each gain factor is &gt;= 1</p>
31513 </td>
31514
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031515 <td class="entry_hal_version">
31516 <p>3.<wbr/>2</p>
31517 </td>
31518
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031519 <td class="entry_tags">
31520 </td>
31521
31522 </tr>
31523 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031524 <th class="th_details" colspan="6">Details</th>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031525 </tr>
31526 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031527 <td class="entry_details" colspan="6">
Eino-Ville Talvalad089ee62016-06-02 14:15:56 -070031528 <p>The map provided here is the same map that is used by the camera device to
31529correct both color shading and vignetting for output non-RAW images.<wbr/></p>
31530<p>When there is no lens shading correction applied to RAW
31531output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
31532false),<wbr/> this map is the complete lens shading correction
31533map; when there is some lens shading correction applied to
31534the 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
31535correction map that needs to be applied to get shading
31536corrected images that match the camera device's output for
31537non-RAW formats.<wbr/></p>
31538<p>For a complete shading correction map,<wbr/> the least shaded
31539section of the image will have a gain factor of 1; all
31540other sections will have gains above 1.<wbr/></p>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031541<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
Eino-Ville Talvalad089ee62016-06-02 14:15:56 -070031542will take into account the colorCorrection settings.<wbr/></p>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031543<p>The shading map is for the entire active pixel array,<wbr/> and is not
31544affected by the crop region specified in the request.<wbr/> Each shading map
31545entry is the value of the shading compensation map over a specific
31546pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
31547map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
31548(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
31549pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
31550The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
31551<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
31552channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
31553The shading map is stored in a fully interleaved format.<wbr/></p>
Eino-Ville Talvalad089ee62016-06-02 14:15:56 -070031554<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
31555and will be smaller than 64x64.<wbr/></p>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031556<p>As an example,<wbr/> given a very small map defined as:</p>
31557<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
31558values =
31559[ 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/>
31560 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/>
31561 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/>
31562 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/>
31563 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/>
31564 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 ]
31565</code></pre>
31566<p>The low-resolution scaling map images for each channel are
31567(displayed using nearest-neighbor interpolation):</p>
31568<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
31569<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
31570<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
31571<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
31572<p>As a visualization only,<wbr/> inverting the full-color map to recover an
31573image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
31574<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070031575<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example
31576shading map for such a camera is defined as:</p>
31577<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
31578<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
31579[ 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
31580 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>
31581 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/>
31582 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
31583 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
31584 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3 ]
31585</code></pre>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031586 </td>
31587 </tr>
31588
31589
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031590 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk9c766ad2014-05-27 18:52:49 -070031591 <!-- end of entry -->
31592
31593
Zhijun He69fc0ea2013-07-17 09:42:58 -070031594 <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031595 <td class="entry_name
Zhijun He46f82f02014-05-20 18:22:18 -070031596 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080031597 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031598 </td>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031599 <td class="entry_type">
31600 <span class="entry_type_name">float</span>
31601 <span class="entry_type_container">x</span>
31602
31603 <span class="entry_type_array">
31604 4 x n x m
31605 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070031606 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070031607
31608
Igor Murashkinca256272014-10-02 15:27:09 -070031609 <span class="entry_type_hwlevel">[full] </span>
31610
Igor Murashkin6c936c12014-05-13 14:51:49 -070031611
Igor Murashkin0b080452013-12-27 15:30:25 -080031612 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031613
31614
31615 </td> <!-- entry_type -->
31616
31617 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080031618 <p>The shading map is a low-resolution floating-point map
Zhijun He5f92cff2016-04-12 23:08:17 -070031619that lists the coefficients used to correct for vignetting and color shading,<wbr/>
31620for each Bayer color channel of RAW image data.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031621 </td>
31622
31623 <td class="entry_units">
31624 </td>
31625
31626 <td class="entry_range">
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080031627 <p>Each gain factor is &gt;= 1</p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031628 </td>
31629
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031630 <td class="entry_hal_version">
31631 <p>3.<wbr/>2</p>
31632 </td>
31633
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031634 <td class="entry_tags">
31635 </td>
31636
31637 </tr>
31638 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031639 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031640 </tr>
31641 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031642 <td class="entry_details" colspan="6">
Eino-Ville Talvalad089ee62016-06-02 14:15:56 -070031643 <p>The map provided here is the same map that is used by the camera device to
31644correct both color shading and vignetting for output non-RAW images.<wbr/></p>
31645<p>When there is no lens shading correction applied to RAW
31646output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
31647false),<wbr/> this map is the complete lens shading correction
31648map; when there is some lens shading correction applied to
31649the 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
31650correction map that needs to be applied to get shading
31651corrected images that match the camera device's output for
31652non-RAW formats.<wbr/></p>
31653<p>For a complete shading correction map,<wbr/> the least shaded
31654section of the image will have a gain factor of 1; all
31655other sections will have gains above 1.<wbr/></p>
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080031656<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
Eino-Ville Talvalad089ee62016-06-02 14:15:56 -070031657will take into account the colorCorrection settings.<wbr/></p>
Igor Murashkin0b080452013-12-27 15:30:25 -080031658<p>The shading map is for the entire active pixel array,<wbr/> and is not
31659affected by the crop region specified in the request.<wbr/> Each shading map
Igor Murashkin1dd4ecb2013-12-11 13:31:00 -080031660entry is the value of the shading compensation map over a specific
Igor Murashkin0b080452013-12-27 15:30:25 -080031661pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading
31662map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
31663(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
31664pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
31665The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070031666<p>For a Bayer camera,<wbr/> the channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is
31667the green channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
Igor Murashkin0b080452013-12-27 15:30:25 -080031668The shading map is stored in a fully interleaved format,<wbr/> and its size
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080031669is 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>
Eino-Ville Talvalad089ee62016-06-02 14:15:56 -070031670<p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
31671and will be smaller than 64x64.<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070031672<p>As an example,<wbr/> given a very small map for a Bayer camera defined as:</p>
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080031673<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
31674<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
Igor Murashkin0b080452013-12-27 15:30:25 -080031675[ 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/>
31676 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/>
31677 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/>
31678 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/>
31679 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/>
31680 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 ]
Igor Murashkin1dd4ecb2013-12-11 13:31:00 -080031681</code></pre>
31682<p>The low-resolution scaling map images for each channel are
31683(displayed using nearest-neighbor interpolation):</p>
31684<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
31685<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
31686<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
31687<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
Igor Murashkin0b080452013-12-27 15:30:25 -080031688<p>As a visualization only,<wbr/> inverting the full-color map to recover an
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080031689image of a gray wall (using bicubic interpolation for visual quality)
31690as captured by the sensor gives:</p>
Igor Murashkin0b080452013-12-27 15:30:25 -080031691<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070031692<p>For a MONOCHROME camera,<wbr/> all of the 2x2 channels must have the same values.<wbr/> An example
31693shading map for such a camera is defined as:</p>
31694<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
31695<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
31696[ 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
31697 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/>
31698 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/>
31699 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
31700 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/>
31701 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3 ]
31702</code></pre>
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080031703<p>Note that the RAW image data might be subject to lens shading
31704correction not reported on this map.<wbr/> Query
31705<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
31706to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
31707is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
31708correction.<wbr/> In the case full lens shading correction is applied to RAW
31709images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
31710In other words,<wbr/> the map reported in this key is the remaining lens shading
31711that needs to be applied on the RAW image to get images without lens shading
31712artifacts.<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
31713formats.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031714 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031715 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031716
Zhijun He46f82f02014-05-20 18:22:18 -070031717 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031718 <th class="th_details" colspan="6">HAL Implementation Details</th>
Zhijun He46f82f02014-05-20 18:22:18 -070031719 </tr>
31720 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031721 <td class="entry_details" colspan="6">
Zhijun He46f82f02014-05-20 18:22:18 -070031722 <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
31723When AE and AWB are in AUTO modes
31724(<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
31725may have all the information it need to generate most accurate lens shading map.<wbr/> When
31726AE or AWB are in manual mode
31727(<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
31728may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
31729generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
31730the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
31731 </td>
31732 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031733
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031734 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031735 <!-- end of entry -->
Zhijun He69fc0ea2013-07-17 09:42:58 -070031736
31737
31738 <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031739 <td class="entry_name
31740 entry_name_deprecated
31741 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080031742 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031743 </td>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031744 <td class="entry_type">
31745 <span class="entry_type_name">float</span>
31746 <span class="entry_type_container">x</span>
31747
31748 <span class="entry_type_array">
31749 4
31750 </span>
Igor Murashkin0fe2f132014-01-13 16:59:47 -080031751 <span class="entry_type_visibility"> [hidden]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070031752
31753
Igor Murashkinca256272014-10-02 15:27:09 -070031754
Igor Murashkin6c936c12014-05-13 14:51:49 -070031755 <span class="entry_type_deprecated">[deprecated] </span>
31756
Igor Murashkin0b080452013-12-27 15:30:25 -080031757 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031758
31759
31760 </td> <!-- entry_type -->
31761
31762 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080031763 <p>The best-fit color channel gains calculated
Zhijun He25b8ac52014-02-24 09:49:37 -080031764by the camera device's statistics units for the current output frame.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031765 </td>
31766
31767 <td class="entry_units">
31768 </td>
31769
31770 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031771 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031772 </td>
31773
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031774 <td class="entry_hal_version">
31775 <p>3.<wbr/>2</p>
31776 </td>
31777
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031778 <td class="entry_tags">
31779 </td>
31780
31781 </tr>
31782 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031783 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031784 </tr>
31785 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031786 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080031787 <p>This may be different than the gains used for this frame,<wbr/>
Igor Murashkin8aa2a112013-12-09 12:06:17 -080031788since statistics processing on data from a new frame
31789typically completes after the transform has already been
Igor Murashkin0b080452013-12-27 15:30:25 -080031790applied to that frame.<wbr/></p>
31791<p>The 4 channel gains are defined in Bayer domain,<wbr/>
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080031792see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070031793<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
Igor Murashkin0b080452013-12-27 15:30:25 -080031794regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031795 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031796 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031797
31798
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031799 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031800 <!-- end of entry -->
Zhijun He69fc0ea2013-07-17 09:42:58 -070031801
31802
31803 <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031804 <td class="entry_name
31805 entry_name_deprecated
31806 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080031807 android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031808 </td>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031809 <td class="entry_type">
31810 <span class="entry_type_name">rational</span>
31811 <span class="entry_type_container">x</span>
31812
31813 <span class="entry_type_array">
31814 3 x 3
31815 </span>
Igor Murashkin0fe2f132014-01-13 16:59:47 -080031816 <span class="entry_type_visibility"> [hidden]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070031817
31818
Igor Murashkinca256272014-10-02 15:27:09 -070031819
Igor Murashkin6c936c12014-05-13 14:51:49 -070031820 <span class="entry_type_deprecated">[deprecated] </span>
31821
Igor Murashkin0b080452013-12-27 15:30:25 -080031822 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031823
31824
31825 </td> <!-- entry_type -->
31826
31827 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080031828 <p>The best-fit color transform matrix estimate
Zhijun He25b8ac52014-02-24 09:49:37 -080031829calculated by the camera device's statistics units for the current
31830output frame.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031831 </td>
31832
31833 <td class="entry_units">
31834 </td>
31835
31836 <td class="entry_range">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031837 <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031838 </td>
31839
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031840 <td class="entry_hal_version">
31841 <p>3.<wbr/>2</p>
31842 </td>
31843
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031844 <td class="entry_tags">
31845 </td>
31846
31847 </tr>
31848 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031849 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031850 </tr>
31851 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031852 <td class="entry_details" colspan="6">
Zhijun He25b8ac52014-02-24 09:49:37 -080031853 <p>The camera device will provide the estimate from its
Igor Murashkin8aa2a112013-12-09 12:06:17 -080031854statistics unit on the white balance transforms to use
Zhijun He25b8ac52014-02-24 09:49:37 -080031855for the next frame.<wbr/> These are the values the camera device believes
Igor Murashkin0b080452013-12-27 15:30:25 -080031856are the best fit for the current output frame.<wbr/> This may
31857be different than the transform used for this frame,<wbr/> since
Igor Murashkin8aa2a112013-12-09 12:06:17 -080031858statistics processing on data from a new frame typically
31859completes after the transform has already been applied to
Igor Murashkin0b080452013-12-27 15:30:25 -080031860that frame.<wbr/></p>
31861<p>These estimates must be provided for all frames,<wbr/> even if
31862capture settings and color transforms are set by the application.<wbr/></p>
Eino-Ville Talvala68dbc6f2014-06-06 14:35:41 -070031863<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
Igor Murashkin0b080452013-12-27 15:30:25 -080031864regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031865 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031866 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031867
31868
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031869 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031870 <!-- end of entry -->
Zhijun He69fc0ea2013-07-17 09:42:58 -070031871
31872
31873 <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031874 <td class="entry_name
31875 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080031876 android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031877 </td>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031878 <td class="entry_type">
31879 <span class="entry_type_name entry_type_name_enum">byte</span>
31880
31881 <span class="entry_type_visibility"> [public]</span>
31882
Igor Murashkin6c936c12014-05-13 14:51:49 -070031883
Igor Murashkinca256272014-10-02 15:27:09 -070031884 <span class="entry_type_hwlevel">[full] </span>
31885
Igor Murashkin6c936c12014-05-13 14:51:49 -070031886
31887
Zhijun He69fc0ea2013-07-17 09:42:58 -070031888 <ul class="entry_type_enum">
31889 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080031890 <span class="entry_type_enum_name">NONE (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031891 <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
31892in the current scene.<wbr/></p></span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031893 </li>
31894 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080031895 <span class="entry_type_enum_name">50HZ (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031896 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
31897in the current scene.<wbr/></p></span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031898 </li>
31899 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080031900 <span class="entry_type_enum_name">60HZ (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031901 <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
31902in the current scene.<wbr/></p></span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031903 </li>
31904 </ul>
31905
31906 </td> <!-- entry_type -->
31907
31908 <td class="entry_description">
Zhijun Heb8512c52014-02-03 11:46:58 -080031909 <p>The camera device estimated scene illumination lighting
31910frequency.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070031911 </td>
31912
31913 <td class="entry_units">
31914 </td>
31915
31916 <td class="entry_range">
31917 </td>
31918
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031919 <td class="entry_hal_version">
31920 <p>3.<wbr/>2</p>
31921 </td>
31922
Zhijun He69fc0ea2013-07-17 09:42:58 -070031923 <td class="entry_tags">
31924 </td>
31925
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031926 </tr>
31927 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031928 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031929 </tr>
31930 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031931 <td class="entry_details" colspan="6">
Zhijun Heb8512c52014-02-03 11:46:58 -080031932 <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
31933that depends on the local utility power standards.<wbr/> This flicker must be
31934accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
31935The camera device uses this entry to tell the application what the scene
31936illuminant frequency is.<wbr/></p>
31937<p>When manual exposure control is enabled
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031938(<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> ==
31939OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
31940antibanding,<wbr/> and the application can ensure it selects
31941exposure times that do not cause banding issues by looking
31942into this metadata field.<wbr/> See
31943<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
31944<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031945 </td>
31946 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080031947
31948
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031949 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080031950 <!-- end of entry -->
Zhijun He69fc0ea2013-07-17 09:42:58 -070031951
Ruben Brunk49e4f912014-03-04 14:09:44 -080031952
31953 <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070031954 <td class="entry_name
31955 " rowspan="3">
Ruben Brunk49e4f912014-03-04 14:09:44 -080031956 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
31957 </td>
31958 <td class="entry_type">
31959 <span class="entry_type_name entry_type_name_enum">byte</span>
31960
31961 <span class="entry_type_visibility"> [public as boolean]</span>
31962
Igor Murashkin6c936c12014-05-13 14:51:49 -070031963
31964
31965
Igor Murashkinca256272014-10-02 15:27:09 -070031966
Ruben Brunk49e4f912014-03-04 14:09:44 -080031967 <ul class="entry_type_enum">
31968 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080031969 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031970 <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
Ruben Brunk49e4f912014-03-04 14:09:44 -080031971 </li>
31972 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080031973 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070031974 <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
Ruben Brunk49e4f912014-03-04 14:09:44 -080031975 </li>
31976 </ul>
31977
31978 </td> <!-- entry_type -->
31979
31980 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070031981 <p>Operating mode for hot pixel map generation.<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080031982 </td>
31983
31984 <td class="entry_units">
31985 </td>
31986
31987 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070031988 <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>
Ruben Brunk49e4f912014-03-04 14:09:44 -080031989 </td>
31990
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080031991 <td class="entry_hal_version">
31992 <p>3.<wbr/>2</p>
31993 </td>
31994
Ruben Brunk49e4f912014-03-04 14:09:44 -080031995 <td class="entry_tags">
31996 <ul class="entry_tags">
31997 <li><a href="#tag_V1">V1</a></li>
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070031998 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080031999 </ul>
32000 </td>
32001
32002 </tr>
32003 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032004 <th class="th_details" colspan="6">Details</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080032005 </tr>
32006 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032007 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070032008 <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/>
32009If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
Ruben Brunk49e4f912014-03-04 14:09:44 -080032010 </td>
32011 </tr>
32012
32013
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032014 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk49e4f912014-03-04 14:09:44 -080032015 <!-- end of entry -->
32016
32017
32018 <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
Igor Murashkin6c936c12014-05-13 14:51:49 -070032019 <td class="entry_name
32020 " rowspan="5">
Ruben Brunk49e4f912014-03-04 14:09:44 -080032021 android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
32022 </td>
32023 <td class="entry_type">
32024 <span class="entry_type_name">int32</span>
32025 <span class="entry_type_container">x</span>
32026
32027 <span class="entry_type_array">
32028 2 x n
32029 </span>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032030 <span class="entry_type_visibility"> [public as point]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070032031
32032
32033
Igor Murashkinca256272014-10-02 15:27:09 -070032034
Ruben Brunk49e4f912014-03-04 14:09:44 -080032035 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
32036
32037
32038 </td> <!-- entry_type -->
32039
32040 <td class="entry_description">
32041 <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
32042 </td>
32043
32044 <td class="entry_units">
32045 </td>
32046
32047 <td class="entry_range">
32048 <p>n &lt;= number of pixels on the sensor.<wbr/>
32049The <code>(x,<wbr/> y)</code> coordinates must be bounded by
32050<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
32051 </td>
32052
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032053 <td class="entry_hal_version">
32054 <p>3.<wbr/>2</p>
32055 </td>
32056
Ruben Brunk49e4f912014-03-04 14:09:44 -080032057 <td class="entry_tags">
32058 <ul class="entry_tags">
32059 <li><a href="#tag_V1">V1</a></li>
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070032060 <li><a href="#tag_RAW">RAW</a></li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080032061 </ul>
32062 </td>
32063
32064 </tr>
32065 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032066 <th class="th_details" colspan="6">Details</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080032067 </tr>
32068 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032069 <td class="entry_details" colspan="6">
Ruben Brunk49e4f912014-03-04 14:09:44 -080032070 <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
32071<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
32072bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
32073height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
32074This may include hot pixels that lie outside of the active array
32075bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
32076 </td>
32077 </tr>
32078
32079 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032080 <th class="th_details" colspan="6">HAL Implementation Details</th>
Ruben Brunk49e4f912014-03-04 14:09:44 -080032081 </tr>
32082 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032083 <td class="entry_details" colspan="6">
Ruben Brunk49e4f912014-03-04 14:09:44 -080032084 <p>A hotpixel map contains the coordinates of pixels on the camera
32085sensor that do report valid values (usually due to defects in
32086the camera sensor).<wbr/> This includes pixels that are stuck at certain
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070032087values,<wbr/> or have a response that does not accurately encode the
Ruben Brunk49e4f912014-03-04 14:09:44 -080032088incoming light from the scene.<wbr/></p>
32089<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
32090pixels than actual pixels on the camera sensor.<wbr/></p>
32091 </td>
32092 </tr>
32093
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032094 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunk49e4f912014-03-04 14:09:44 -080032095 <!-- end of entry -->
32096
Zhijun He602d3702014-05-02 17:38:15 -070032097
32098 <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070032099 <td class="entry_name
32100 " rowspan="3">
Zhijun He602d3702014-05-02 17:38:15 -070032101 android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
32102 </td>
32103 <td class="entry_type">
32104 <span class="entry_type_name entry_type_name_enum">byte</span>
32105
32106 <span class="entry_type_visibility"> [public]</span>
32107
Igor Murashkin6c936c12014-05-13 14:51:49 -070032108
Igor Murashkinca256272014-10-02 15:27:09 -070032109 <span class="entry_type_hwlevel">[full] </span>
32110
Igor Murashkin6c936c12014-05-13 14:51:49 -070032111
32112
Zhijun He602d3702014-05-02 17:38:15 -070032113 <ul class="entry_type_enum">
32114 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080032115 <span class="entry_type_enum_name">OFF (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070032116 <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -070032117 </li>
32118 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080032119 <span class="entry_type_enum_name">ON (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070032120 <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
Zhijun He602d3702014-05-02 17:38:15 -070032121 </li>
32122 </ul>
32123
32124 </td> <!-- entry_type -->
32125
32126 <td class="entry_description">
32127 <p>Whether the camera device will output the lens
32128shading map in output result metadata.<wbr/></p>
32129 </td>
32130
32131 <td class="entry_units">
32132 </td>
32133
32134 <td class="entry_range">
Yin-Chia Yehd7dcb742015-02-04 10:04:37 -080032135 <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>
Zhijun He602d3702014-05-02 17:38:15 -070032136 </td>
32137
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032138 <td class="entry_hal_version">
32139 <p>3.<wbr/>2</p>
32140 </td>
32141
Zhijun He602d3702014-05-02 17:38:15 -070032142 <td class="entry_tags">
Igor Murashkinca256272014-10-02 15:27:09 -070032143 <ul class="entry_tags">
32144 <li><a href="#tag_RAW">RAW</a></li>
32145 </ul>
Zhijun He602d3702014-05-02 17:38:15 -070032146 </td>
32147
32148 </tr>
32149 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032150 <th class="th_details" colspan="6">Details</th>
Zhijun He602d3702014-05-02 17:38:15 -070032151 </tr>
32152 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032153 <td class="entry_details" colspan="6">
Zhijun He602d3702014-05-02 17:38:15 -070032154 <p>When set to ON,<wbr/>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070032155<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
Zhijun He602d3702014-05-02 17:38:15 -070032156the output result metadata.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070032157<p>ON is always supported on devices with the RAW capability.<wbr/></p>
Zhijun He602d3702014-05-02 17:38:15 -070032158 </td>
32159 </tr>
32160
32161
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032162 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He602d3702014-05-02 17:38:15 -070032163 <!-- end of entry -->
32164
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032165
32166 <tr class="entry" id="dynamic_android.statistics.oisDataMode">
32167 <td class="entry_name
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032168 " rowspan="3">
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032169 android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
32170 </td>
32171 <td class="entry_type">
32172 <span class="entry_type_name entry_type_name_enum">byte</span>
32173
32174 <span class="entry_type_visibility"> [public]</span>
32175
32176
32177
32178
32179
32180 <ul class="entry_type_enum">
32181 <li>
32182 <span class="entry_type_enum_name">OFF (v3.3)</span>
32183 <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
32184 </li>
32185 <li>
32186 <span class="entry_type_enum_name">ON (v3.3)</span>
32187 <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
32188 </li>
32189 </ul>
32190
32191 </td> <!-- entry_type -->
32192
32193 <td class="entry_description">
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032194 <p>A control for selecting whether optical stabilization (OIS) position
32195information is included in output result metadata.<wbr/></p>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032196 </td>
32197
32198 <td class="entry_units">
32199 </td>
32200
32201 <td class="entry_range">
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070032202 <p><a href="#static_android.statistics.info.availableOisDataModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</a></p>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032203 </td>
32204
32205 <td class="entry_hal_version">
32206 <p>3.<wbr/>3</p>
32207 </td>
32208
32209 <td class="entry_tags">
32210 </td>
32211
32212 </tr>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032213 <tr class="entries_header">
32214 <th class="th_details" colspan="6">Details</th>
32215 </tr>
32216 <tr class="entry_cont">
32217 <td class="entry_details" colspan="6">
32218 <p>Since optical image stabilization generally involves motion much faster than the duration
Shuzhen Wang1373ab52021-03-17 11:00:23 -070032219of individual image exposure,<wbr/> multiple OIS samples can be included for a single capture
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032220result.<wbr/> For example,<wbr/> if the OIS reporting operates at 200 Hz,<wbr/> a typical camera operating
32221at 30fps may have 6-7 OIS samples per capture result.<wbr/> This information can be combined
32222with the rolling shutter skew to account for lens motion during image exposure in
32223post-processing algorithms.<wbr/></p>
32224 </td>
32225 </tr>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032226
32227
32228 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32229 <!-- end of entry -->
32230
32231
32232 <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
32233 <td class="entry_name
32234 " rowspan="3">
32235 android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
32236 </td>
32237 <td class="entry_type">
32238 <span class="entry_type_name">int64</span>
32239 <span class="entry_type_container">x</span>
32240
32241 <span class="entry_type_array">
32242 n
32243 </span>
Chien-Yu Chena5cfee92018-02-15 12:34:30 -080032244 <span class="entry_type_visibility"> [ndk_public]</span>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032245
32246
32247
32248
32249
32250
32251 </td> <!-- entry_type -->
32252
32253 <td class="entry_description">
32254 <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
32255 </td>
32256
32257 <td class="entry_units">
32258 nanoseconds
32259 </td>
32260
32261 <td class="entry_range">
32262 </td>
32263
32264 <td class="entry_hal_version">
32265 <p>3.<wbr/>3</p>
32266 </td>
32267
32268 <td class="entry_tags">
32269 </td>
32270
32271 </tr>
32272 <tr class="entries_header">
32273 <th class="th_details" colspan="6">Details</th>
32274 </tr>
32275 <tr class="entry_cont">
32276 <td class="entry_details" colspan="6">
32277 <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
32278timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
32279 </td>
32280 </tr>
32281
32282
32283 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32284 <!-- end of entry -->
32285
32286
32287 <tr class="entry" id="dynamic_android.statistics.oisXShifts">
32288 <td class="entry_name
32289 " rowspan="3">
32290 android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
32291 </td>
32292 <td class="entry_type">
32293 <span class="entry_type_name">float</span>
32294 <span class="entry_type_container">x</span>
32295
32296 <span class="entry_type_array">
32297 n
32298 </span>
Chien-Yu Chena5cfee92018-02-15 12:34:30 -080032299 <span class="entry_type_visibility"> [ndk_public]</span>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032300
32301
32302
32303
32304
32305
32306 </td> <!-- entry_type -->
32307
32308 <td class="entry_description">
32309 <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
32310 </td>
32311
32312 <td class="entry_units">
32313 Pixels in active array.<wbr/>
32314 </td>
32315
32316 <td class="entry_range">
32317 </td>
32318
32319 <td class="entry_hal_version">
32320 <p>3.<wbr/>3</p>
32321 </td>
32322
32323 <td class="entry_tags">
32324 </td>
32325
32326 </tr>
32327 <tr class="entries_header">
32328 <th class="th_details" colspan="6">Details</th>
32329 </tr>
32330 <tr class="entry_cont">
32331 <td class="entry_details" colspan="6">
32332 <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032333A positive value is a shift from left to right in the pre-correction active array
32334coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in pre-correction
32335active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032336<p>The number of shifts must match the number of timestamps in
32337<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032338<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
32339supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
32340since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
32341is needed.<wbr/></p>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032342 </td>
32343 </tr>
32344
32345
32346 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32347 <!-- end of entry -->
32348
32349
32350 <tr class="entry" id="dynamic_android.statistics.oisYShifts">
32351 <td class="entry_name
32352 " rowspan="3">
32353 android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
32354 </td>
32355 <td class="entry_type">
32356 <span class="entry_type_name">float</span>
32357 <span class="entry_type_container">x</span>
32358
32359 <span class="entry_type_array">
32360 n
32361 </span>
Chien-Yu Chena5cfee92018-02-15 12:34:30 -080032362 <span class="entry_type_visibility"> [ndk_public]</span>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032363
32364
32365
32366
32367
32368
32369 </td> <!-- entry_type -->
32370
32371 <td class="entry_description">
32372 <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
32373 </td>
32374
32375 <td class="entry_units">
32376 Pixels in active array.<wbr/>
32377 </td>
32378
32379 <td class="entry_range">
32380 </td>
32381
32382 <td class="entry_hal_version">
32383 <p>3.<wbr/>3</p>
32384 </td>
32385
32386 <td class="entry_tags">
32387 </td>
32388
32389 </tr>
32390 <tr class="entries_header">
32391 <th class="th_details" colspan="6">Details</th>
32392 </tr>
32393 <tr class="entry_cont">
32394 <td class="entry_details" colspan="6">
32395 <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032396A positive value is a shift from top to bottom in pre-correction active array coordinate
32397system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a
32398shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032399<p>The number of shifts must match the number of timestamps in
32400<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032401<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
32402supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
32403since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
32404is needed.<wbr/></p>
Chien-Yu Chen2560d4f2018-01-12 17:38:00 -080032405 </td>
32406 </tr>
32407
32408
32409 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32410 <!-- end of entry -->
32411
Chien-Yu Chena5cfee92018-02-15 12:34:30 -080032412
32413 <tr class="entry" id="dynamic_android.statistics.oisSamples">
32414 <td class="entry_name
32415 " rowspan="3">
32416 android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
32417 </td>
32418 <td class="entry_type">
32419 <span class="entry_type_name">float</span>
32420 <span class="entry_type_container">x</span>
32421
32422 <span class="entry_type_array">
32423 n
32424 </span>
32425 <span class="entry_type_visibility"> [java_public as oisSample]</span>
32426
32427 <span class="entry_type_synthetic">[synthetic] </span>
32428
32429
32430
32431
32432
32433 </td> <!-- entry_type -->
32434
32435 <td class="entry_description">
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032436 <p>An array of optical stabilization (OIS) position samples.<wbr/></p>
Chien-Yu Chena5cfee92018-02-15 12:34:30 -080032437 </td>
32438
32439 <td class="entry_units">
32440 </td>
32441
32442 <td class="entry_range">
32443 </td>
32444
32445 <td class="entry_hal_version">
32446 <p>3.<wbr/>3</p>
32447 </td>
32448
32449 <td class="entry_tags">
32450 </td>
32451
32452 </tr>
32453 <tr class="entries_header">
32454 <th class="th_details" colspan="6">Details</th>
32455 </tr>
32456 <tr class="entry_cont">
32457 <td class="entry_details" colspan="6">
32458 <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
32459in pixels,<wbr/> of the OIS sample.<wbr/></p>
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070032460<p>A positive value for a shift in x direction is a shift from left to right in the
32461pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is
32462(1000,<wbr/> 500) in pre-correction active array coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new
32463optical center at (1003,<wbr/> 500).<wbr/></p>
32464<p>A positive value for a shift in y direction is a shift from top to bottom in
32465pre-correction active array coordinate system.<wbr/> For example,<wbr/> if the optical center is
32466(1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at
32467(1000,<wbr/> 505).<wbr/></p>
32468<p>The OIS samples are not affected by whether lens distortion correction is enabled (on
32469supporting devices).<wbr/> They are always reported in pre-correction active array coordinates,<wbr/>
32470since the scaling of OIS shifts would depend on the specific spot on the sensor the shift
32471is needed.<wbr/></p>
Chien-Yu Chena5cfee92018-02-15 12:34:30 -080032472 </td>
32473 </tr>
32474
32475
32476 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
32477 <!-- end of entry -->
32478
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032479
32480
32481 <!-- end of kind -->
32482 </tbody>
32483
32484 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032485 <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032486
32487
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032488 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032489
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070032490 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032491 <tr>
32492 <th class="th_name">Property Name</th>
32493 <th class="th_type">Type</th>
32494 <th class="th_description">Description</th>
32495 <th class="th_units">Units</th>
32496 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032497 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032498 <th class="th_tags">Tags</th>
32499 </tr>
32500 </thead>
32501
32502 <tbody>
32503
32504
32505
32506
32507
32508
32509
32510
32511
32512
32513 <tr class="entry" id="controls_android.tonemap.curveBlue">
Igor Murashkin6c936c12014-05-13 14:51:49 -070032514 <td class="entry_name
32515 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080032516 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080032517 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032518 <td class="entry_type">
Eino-Ville Talvala76548fe2013-01-11 13:57:19 -080032519 <span class="entry_type_name">float</span>
Zhijun He704d1282013-08-19 15:26:33 -070032520 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032521
Zhijun He704d1282013-08-19 15:26:33 -070032522 <span class="entry_type_array">
32523 n x 2
32524 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070032525 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070032526
32527
Igor Murashkinca256272014-10-02 15:27:09 -070032528 <span class="entry_type_hwlevel">[full] </span>
32529
Igor Murashkin6c936c12014-05-13 14:51:49 -070032530
Igor Murashkin0b080452013-12-27 15:30:25 -080032531 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032532
32533
32534 </td> <!-- entry_type -->
32535
32536 <td class="entry_description">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032537 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
32538channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32539CONTRAST_<wbr/>CURVE.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032540 </td>
32541
32542 <td class="entry_units">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032543 </td>
32544
32545 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032546 </td>
32547
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032548 <td class="entry_hal_version">
32549 <p>3.<wbr/>2</p>
32550 </td>
32551
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032552 <td class="entry_tags">
32553 </td>
32554
32555 </tr>
32556 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032557 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032558 </tr>
32559 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032560 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032561 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032562 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032563 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080032564
32565
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032566 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032567 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032568
32569
32570 <tr class="entry" id="controls_android.tonemap.curveGreen">
Igor Murashkin6c936c12014-05-13 14:51:49 -070032571 <td class="entry_name
32572 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080032573 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080032574 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032575 <td class="entry_type">
Eino-Ville Talvala76548fe2013-01-11 13:57:19 -080032576 <span class="entry_type_name">float</span>
Zhijun He704d1282013-08-19 15:26:33 -070032577 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032578
Zhijun He704d1282013-08-19 15:26:33 -070032579 <span class="entry_type_array">
32580 n x 2
32581 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070032582 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070032583
32584
Igor Murashkinca256272014-10-02 15:27:09 -070032585 <span class="entry_type_hwlevel">[full] </span>
32586
Igor Murashkin6c936c12014-05-13 14:51:49 -070032587
Igor Murashkin0b080452013-12-27 15:30:25 -080032588 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032589
32590
32591 </td> <!-- entry_type -->
32592
32593 <td class="entry_description">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032594 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
32595channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32596CONTRAST_<wbr/>CURVE.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032597 </td>
32598
32599 <td class="entry_units">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032600 </td>
32601
32602 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032603 </td>
32604
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032605 <td class="entry_hal_version">
32606 <p>3.<wbr/>2</p>
32607 </td>
32608
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032609 <td class="entry_tags">
32610 </td>
32611
32612 </tr>
32613 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032614 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032615 </tr>
32616 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032617 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032618 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032619 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032620 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080032621
32622
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032623 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032624 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032625
32626
32627 <tr class="entry" id="controls_android.tonemap.curveRed">
Igor Murashkin6c936c12014-05-13 14:51:49 -070032628 <td class="entry_name
32629 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080032630 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080032631 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032632 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080032633 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032634 <span class="entry_type_container">x</span>
32635
32636 <span class="entry_type_array">
32637 n x 2
32638 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070032639 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070032640
32641
Igor Murashkinca256272014-10-02 15:27:09 -070032642 <span class="entry_type_hwlevel">[full] </span>
32643
Igor Murashkin6c936c12014-05-13 14:51:49 -070032644
Igor Murashkin0b080452013-12-27 15:30:25 -080032645 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032646
32647
32648 </td> <!-- entry_type -->
32649
32650 <td class="entry_description">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032651 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
32652channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32653CONTRAST_<wbr/>CURVE.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032654 </td>
32655
32656 <td class="entry_units">
32657 </td>
32658
32659 <td class="entry_range">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032660 <p>0-1 on both input and output coordinates,<wbr/> normalized
32661as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032662 </td>
32663
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032664 <td class="entry_hal_version">
32665 <p>3.<wbr/>2</p>
32666 </td>
32667
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032668 <td class="entry_tags">
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032669 </td>
32670
32671 </tr>
32672 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032673 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032674 </tr>
32675 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032676 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032677 <p>Each channel's curve is defined by an array of control points:</p>
32678<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
32679 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
326802 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070032681<p>These are sorted in order of increasing <code>Pin</code>; it is
32682required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
Igor Murashkin94e06c42014-01-13 16:51:17 -080032683define a complete mapping.<wbr/> For input values between control points,<wbr/>
32684the camera device must linearly interpolate between the control
32685points.<wbr/></p>
32686<p>Each curve can have an independent number of points,<wbr/> and the number
32687of points can be less than max (that is,<wbr/> the request doesn't have to
32688always provide a curve with number of points equivalent to
32689<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070032690<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
32691control points.<wbr/></p>
Igor Murashkin94e06c42014-01-13 16:51:17 -080032692<p>A few examples,<wbr/> and their corresponding graphical mappings; these
32693only specify the red channel and the precision is limited to 4
32694digits,<wbr/> for conciseness.<wbr/></p>
32695<p>Linear mapping:</p>
32696<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 ]
32697</code></pre>
32698<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
32699<p>Invert mapping:</p>
32700<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 ]
32701</code></pre>
32702<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
32703<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
32704<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
32705 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/>
32706 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/>
32707 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/>
32708 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 ]
32709</code></pre>
32710<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
32711<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
32712<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
32713 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/>
32714 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/>
32715 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/>
32716 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 ]
32717</code></pre>
32718<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032719 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032720 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080032721
Igor Murashkin94e06c42014-01-13 16:51:17 -080032722 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032723 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin94e06c42014-01-13 16:51:17 -080032724 </tr>
32725 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032726 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032727 <p>For good quality of mapping,<wbr/> at least 128 control points are
32728preferred.<wbr/></p>
32729<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
32730control points used as are available.<wbr/></p>
32731 </td>
32732 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080032733
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032734 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032735 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032736
32737
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032738 <tr class="entry" id="controls_android.tonemap.curve">
32739 <td class="entry_name
32740 " rowspan="5">
32741 android.<wbr/>tonemap.<wbr/>curve
32742 </td>
32743 <td class="entry_type">
32744 <span class="entry_type_name">float</span>
32745
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070032746 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032747
32748 <span class="entry_type_synthetic">[synthetic] </span>
32749
Igor Murashkinca256272014-10-02 15:27:09 -070032750 <span class="entry_type_hwlevel">[full] </span>
32751
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032752
32753
32754
32755 </td> <!-- entry_type -->
32756
32757 <td class="entry_description">
32758 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
32759is CONTRAST_<wbr/>CURVE.<wbr/></p>
32760 </td>
32761
32762 <td class="entry_units">
32763 </td>
32764
32765 <td class="entry_range">
32766 </td>
32767
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032768 <td class="entry_hal_version">
32769 <p>3.<wbr/>2</p>
32770 </td>
32771
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032772 <td class="entry_tags">
32773 </td>
32774
32775 </tr>
32776 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032777 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032778 </tr>
32779 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032780 <td class="entry_details" colspan="6">
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032781 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
32782channels respectively.<wbr/> The following example uses the red channel as an
32783example.<wbr/> The same logic applies to green and blue channel.<wbr/>
32784Each channel's curve is defined by an array of control points:</p>
32785<pre><code>curveRed =
32786 [ 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) ]
327872 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
32788<p>These are sorted in order of increasing <code>Pin</code>; it is always
32789guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
32790define a complete mapping.<wbr/> For input values between control points,<wbr/>
32791the camera device must linearly interpolate between the control
32792points.<wbr/></p>
32793<p>Each curve can have an independent number of points,<wbr/> and the number
32794of points can be less than max (that is,<wbr/> the request doesn't have to
32795always provide a curve with number of points equivalent to
32796<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070032797<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
32798control points.<wbr/></p>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032799<p>A few examples,<wbr/> and their corresponding graphical mappings; these
32800only specify the red channel and the precision is limited to 4
32801digits,<wbr/> for conciseness.<wbr/></p>
32802<p>Linear mapping:</p>
32803<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
32804</code></pre>
32805<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
32806<p>Invert mapping:</p>
32807<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
32808</code></pre>
32809<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
32810<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
32811<pre><code>curveRed = [
32812 (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/>
32813 (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/>
32814 (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/>
32815 (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) ]
32816</code></pre>
32817<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
32818<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
32819<pre><code>curveRed = [
32820 (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/>
32821 (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/>
32822 (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/>
32823 (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) ]
32824</code></pre>
32825<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
32826 </td>
32827 </tr>
32828
32829 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032830 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032831 </tr>
32832 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032833 <td class="entry_details" colspan="6">
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032834 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
32835curveBlue entries.<wbr/></p>
32836 </td>
32837 </tr>
32838
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032839 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032840 <!-- end of entry -->
32841
32842
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032843 <tr class="entry" id="controls_android.tonemap.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070032844 <td class="entry_name
32845 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080032846 android.<wbr/>tonemap.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080032847 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032848 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080032849 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032850
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070032851 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032852
Igor Murashkin6c936c12014-05-13 14:51:49 -070032853
Igor Murashkinca256272014-10-02 15:27:09 -070032854 <span class="entry_type_hwlevel">[full] </span>
32855
Igor Murashkin6c936c12014-05-13 14:51:49 -070032856
32857
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032858 <ul class="entry_type_enum">
32859 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080032860 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080032861 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032862the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
Igor Murashkin94e06c42014-01-13 16:51:17 -080032863<p>All color enhancement and tonemapping must be disabled,<wbr/> except
32864for applying the tonemapping curve specified by
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032865<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
Igor Murashkin94e06c42014-01-13 16:51:17 -080032866<p>Must not slow down frame rate relative to raw
32867sensor output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032868 </li>
32869 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080032870 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070032871 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
32872reducing frame rate compared to raw sensor output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032873 </li>
32874 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080032875 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070032876 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070032877the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032878 </li>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032879 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080032880 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070032881 <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 perform
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032882tonemapping.<wbr/></p>
32883<p>All color enhancement and tonemapping must be disabled,<wbr/> except
Yin-Chia Yeh3a52b8f2015-05-05 23:49:07 -070032884for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032885<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
32886 </li>
32887 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080032888 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032889 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070032890<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to perform tonemapping.<wbr/></p>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032891<p>All color enhancement and tonemapping must be disabled,<wbr/> except
32892for applying the tonemapping curve specified by
Yin-Chia Yeh3a52b8f2015-05-05 23:49:07 -070032893<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032894<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
32895 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032896 </ul>
32897
32898 </td> <!-- entry_type -->
32899
32900 <td class="entry_description">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032901 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032902 </td>
32903
32904 <td class="entry_units">
32905 </td>
32906
32907 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070032908 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032909 </td>
32910
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032911 <td class="entry_hal_version">
32912 <p>3.<wbr/>2</p>
32913 </td>
32914
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032915 <td class="entry_tags">
32916 </td>
32917
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032918 </tr>
Igor Murashkin94e06c42014-01-13 16:51:17 -080032919 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032920 <th class="th_details" colspan="6">Details</th>
Igor Murashkin94e06c42014-01-13 16:51:17 -080032921 </tr>
32922 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032923 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080032924 <p>When switching to an application-defined contrast curve by setting
32925<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
32926per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
32927mapping from input high-bit-depth pixel value to the output
32928low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
32929and output may change depending on the camera pipeline,<wbr/> the values
32930are specified by normalized floating-point numbers.<wbr/></p>
32931<p>More-complex color mapping operations such as 3D color look-up
32932tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
32933transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32934CONTRAST_<wbr/>CURVE.<wbr/></p>
32935<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070032936emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
Igor Murashkin94e06c42014-01-13 16:51:17 -080032937These values are always available,<wbr/> and as close as possible to the
32938actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
Zhijun He46f82f02014-05-20 18:22:18 -070032939<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
Igor Murashkin94e06c42014-01-13 16:51:17 -080032940provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
32941roughly the same.<wbr/></p>
32942 </td>
32943 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080032944
32945
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032946 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080032947 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080032948
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032949
32950 <tr class="entry" id="controls_android.tonemap.gamma">
32951 <td class="entry_name
32952 " rowspan="3">
32953 android.<wbr/>tonemap.<wbr/>gamma
32954 </td>
32955 <td class="entry_type">
32956 <span class="entry_type_name">float</span>
32957
32958 <span class="entry_type_visibility"> [public]</span>
32959
32960
32961
32962
32963
32964
32965 </td> <!-- entry_type -->
32966
32967 <td class="entry_description">
32968 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
32969GAMMA_<wbr/>VALUE</p>
32970 </td>
32971
32972 <td class="entry_units">
32973 </td>
32974
32975 <td class="entry_range">
32976 </td>
32977
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032978 <td class="entry_hal_version">
32979 <p>3.<wbr/>2</p>
32980 </td>
32981
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032982 <td class="entry_tags">
32983 </td>
32984
32985 </tr>
32986 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032987 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032988 </tr>
32989 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080032990 <td class="entry_details" colspan="6">
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070032991 <p>The tonemap curve will be defined the following formula:</p>
32992<ul>
32993<li>OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)</li>
32994</ul>
32995<p>where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080032996pow is the power function and gamma is the gamma value specified by this
32997key.<wbr/></p>
32998<p>The same curve will be applied to all color channels.<wbr/> The camera device
32999may clip the input gamma value to its supported range.<wbr/> The actual applied
33000value will be returned in capture result.<wbr/></p>
33001<p>The valid range of gamma value varies on different devices,<wbr/> but values
33002within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
33003 </td>
33004 </tr>
33005
33006
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033007 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033008 <!-- end of entry -->
33009
33010
33011 <tr class="entry" id="controls_android.tonemap.presetCurve">
33012 <td class="entry_name
33013 " rowspan="3">
33014 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
33015 </td>
33016 <td class="entry_type">
33017 <span class="entry_type_name entry_type_name_enum">byte</span>
33018
33019 <span class="entry_type_visibility"> [public]</span>
33020
33021
33022
33023
33024
33025 <ul class="entry_type_enum">
33026 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033027 <span class="entry_type_enum_name">SRGB (v3.2)</span>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033028 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
33029 </li>
33030 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033031 <span class="entry_type_enum_name">REC709 (v3.2)</span>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033032 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
33033 </li>
33034 </ul>
33035
33036 </td> <!-- entry_type -->
33037
33038 <td class="entry_description">
33039 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
33040PRESET_<wbr/>CURVE</p>
33041 </td>
33042
33043 <td class="entry_units">
33044 </td>
33045
33046 <td class="entry_range">
33047 </td>
33048
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033049 <td class="entry_hal_version">
33050 <p>3.<wbr/>2</p>
33051 </td>
33052
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033053 <td class="entry_tags">
33054 </td>
33055
33056 </tr>
33057 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033058 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033059 </tr>
33060 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033061 <td class="entry_details" colspan="6">
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033062 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
33063<p>sRGB (approximated by 16 control points):</p>
33064<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
33065<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
33066<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
33067<p>Note that above figures show a 16 control points approximation of preset
33068curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
33069 </td>
33070 </tr>
33071
33072
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033073 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033074 <!-- end of entry -->
33075
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033076
33077
33078 <!-- end of kind -->
33079 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033080 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033081
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070033082 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033083 <tr>
33084 <th class="th_name">Property Name</th>
33085 <th class="th_type">Type</th>
33086 <th class="th_description">Description</th>
33087 <th class="th_units">Units</th>
33088 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033089 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033090 <th class="th_tags">Tags</th>
33091 </tr>
33092 </thead>
33093
33094 <tbody>
33095
33096
33097
33098
33099
33100
33101
33102
33103
33104
33105 <tr class="entry" id="static_android.tonemap.maxCurvePoints">
Igor Murashkin6c936c12014-05-13 14:51:49 -070033106 <td class="entry_name
33107 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080033108 android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033109 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033110 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080033111 <span class="entry_type_name">int32</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033112
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070033113 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033114
33115
Igor Murashkinca256272014-10-02 15:27:09 -070033116 <span class="entry_type_hwlevel">[full] </span>
33117
Igor Murashkin6c936c12014-05-13 14:51:49 -070033118
33119
33120
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033121 </td> <!-- entry_type -->
33122
33123 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080033124 <p>Maximum number of supported points in the
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033125tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033126 </td>
33127
33128 <td class="entry_units">
33129 </td>
33130
33131 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033132 </td>
33133
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033134 <td class="entry_hal_version">
33135 <p>3.<wbr/>2</p>
33136 </td>
33137
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033138 <td class="entry_tags">
33139 </td>
33140
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033141 </tr>
Igor Murashkin94e06c42014-01-13 16:51:17 -080033142 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033143 <th class="th_details" colspan="6">Details</th>
Igor Murashkin94e06c42014-01-13 16:51:17 -080033144 </tr>
33145 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033146 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070033147 <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
33148less than this maximum,<wbr/> the camera device will resample the curve to its internal
33149representation,<wbr/> using linear interpolation.<wbr/></p>
Igor Murashkin94e06c42014-01-13 16:51:17 -080033150<p>The output curves in the result metadata may have a different number
33151of points than the input curves,<wbr/> and will represent the actual
33152hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
33153 </td>
33154 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033155
Igor Murashkin94e06c42014-01-13 16:51:17 -080033156 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033157 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin94e06c42014-01-13 16:51:17 -080033158 </tr>
33159 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033160 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033161 <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
33162 </td>
33163 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033164
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033165 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033166 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033167
Ruben Brunkd14f7162014-03-04 15:01:25 -080033168
33169 <tr class="entry" id="static_android.tonemap.availableToneMapModes">
Igor Murashkin6c936c12014-05-13 14:51:49 -070033170 <td class="entry_name
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070033171 " rowspan="5">
Ruben Brunkd14f7162014-03-04 15:01:25 -080033172 android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
33173 </td>
33174 <td class="entry_type">
33175 <span class="entry_type_name">byte</span>
33176 <span class="entry_type_container">x</span>
33177
33178 <span class="entry_type_array">
33179 n
33180 </span>
Eino-Ville Talvalaaebc8c22014-05-27 10:50:30 -070033181 <span class="entry_type_visibility"> [public as enumList]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070033182
33183
Igor Murashkinca256272014-10-02 15:27:09 -070033184 <span class="entry_type_hwlevel">[full] </span>
33185
Igor Murashkin6c936c12014-05-13 14:51:49 -070033186
Ruben Brunkd14f7162014-03-04 15:01:25 -080033187 <div class="entry_type_notes">list of enums</div>
33188
33189
33190 </td> <!-- entry_type -->
33191
33192 <td class="entry_description">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070033193 <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
33194device.<wbr/></p>
Ruben Brunkd14f7162014-03-04 15:01:25 -080033195 </td>
33196
33197 <td class="entry_units">
33198 </td>
33199
33200 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070033201 <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
Ruben Brunkd14f7162014-03-04 15:01:25 -080033202 </td>
33203
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033204 <td class="entry_hal_version">
33205 <p>3.<wbr/>2</p>
33206 </td>
33207
Ruben Brunkd14f7162014-03-04 15:01:25 -080033208 <td class="entry_tags">
33209 </td>
33210
33211 </tr>
33212 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033213 <th class="th_details" colspan="6">Details</th>
Ruben Brunkd14f7162014-03-04 15:01:25 -080033214 </tr>
33215 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033216 <td class="entry_details" colspan="6">
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033217 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
33218at least one of below mode combinations:</p>
33219<ul>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070033220<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
33221<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033222</ul>
33223<p>This includes all FULL level devices.<wbr/></p>
Ruben Brunkd14f7162014-03-04 15:01:25 -080033224 </td>
33225 </tr>
33226
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070033227 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033228 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070033229 </tr>
33230 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033231 <td class="entry_details" colspan="6">
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070033232 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
33233on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
33234That is,<wbr/> if the highest quality implementation on the camera device does not slow down
33235capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
33236 </td>
33237 </tr>
Ruben Brunkd14f7162014-03-04 15:01:25 -080033238
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033239 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Ruben Brunkd14f7162014-03-04 15:01:25 -080033240 <!-- end of entry -->
33241
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033242
33243
33244 <!-- end of kind -->
33245 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033246 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033247
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070033248 <thead class="entries_header">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033249 <tr>
33250 <th class="th_name">Property Name</th>
33251 <th class="th_type">Type</th>
33252 <th class="th_description">Description</th>
33253 <th class="th_units">Units</th>
33254 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033255 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033256 <th class="th_tags">Tags</th>
33257 </tr>
33258 </thead>
33259
33260 <tbody>
33261
33262
33263
33264
33265
33266
33267
33268
33269
33270
33271 <tr class="entry" id="dynamic_android.tonemap.curveBlue">
Igor Murashkin6c936c12014-05-13 14:51:49 -070033272 <td class="entry_name
33273 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080033274 android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033275 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033276 <td class="entry_type">
Eino-Ville Talvala76548fe2013-01-11 13:57:19 -080033277 <span class="entry_type_name">float</span>
Zhijun He704d1282013-08-19 15:26:33 -070033278 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033279
Zhijun He704d1282013-08-19 15:26:33 -070033280 <span class="entry_type_array">
33281 n x 2
33282 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070033283 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070033284
33285
Igor Murashkinca256272014-10-02 15:27:09 -070033286 <span class="entry_type_hwlevel">[full] </span>
33287
Igor Murashkin6c936c12014-05-13 14:51:49 -070033288
Igor Murashkin0b080452013-12-27 15:30:25 -080033289 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033290
33291
33292 </td> <!-- entry_type -->
33293
33294 <td class="entry_description">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033295 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
33296channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
33297CONTRAST_<wbr/>CURVE.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033298 </td>
33299
33300 <td class="entry_units">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033301 </td>
33302
33303 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033304 </td>
33305
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033306 <td class="entry_hal_version">
33307 <p>3.<wbr/>2</p>
33308 </td>
33309
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033310 <td class="entry_tags">
33311 </td>
33312
33313 </tr>
33314 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033315 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033316 </tr>
33317 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033318 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033319 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033320 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033321 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033322
33323
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033324 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033325 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033326
33327
33328 <tr class="entry" id="dynamic_android.tonemap.curveGreen">
Igor Murashkin6c936c12014-05-13 14:51:49 -070033329 <td class="entry_name
33330 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080033331 android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033332 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033333 <td class="entry_type">
Eino-Ville Talvala76548fe2013-01-11 13:57:19 -080033334 <span class="entry_type_name">float</span>
Zhijun He704d1282013-08-19 15:26:33 -070033335 <span class="entry_type_container">x</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033336
Zhijun He704d1282013-08-19 15:26:33 -070033337 <span class="entry_type_array">
33338 n x 2
33339 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070033340 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070033341
33342
Igor Murashkinca256272014-10-02 15:27:09 -070033343 <span class="entry_type_hwlevel">[full] </span>
33344
Igor Murashkin6c936c12014-05-13 14:51:49 -070033345
Igor Murashkin0b080452013-12-27 15:30:25 -080033346 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033347
33348
33349 </td> <!-- entry_type -->
33350
33351 <td class="entry_description">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033352 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
33353channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
33354CONTRAST_<wbr/>CURVE.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033355 </td>
33356
33357 <td class="entry_units">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033358 </td>
33359
33360 <td class="entry_range">
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033361 </td>
33362
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033363 <td class="entry_hal_version">
33364 <p>3.<wbr/>2</p>
33365 </td>
33366
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033367 <td class="entry_tags">
33368 </td>
33369
33370 </tr>
33371 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033372 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033373 </tr>
33374 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033375 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033376 <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033377 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033378 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033379
33380
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033381 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033382 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033383
33384
33385 <tr class="entry" id="dynamic_android.tonemap.curveRed">
Igor Murashkin6c936c12014-05-13 14:51:49 -070033386 <td class="entry_name
33387 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080033388 android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033389 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033390 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080033391 <span class="entry_type_name">float</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033392 <span class="entry_type_container">x</span>
33393
33394 <span class="entry_type_array">
33395 n x 2
33396 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070033397 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin6c936c12014-05-13 14:51:49 -070033398
33399
Igor Murashkinca256272014-10-02 15:27:09 -070033400 <span class="entry_type_hwlevel">[full] </span>
33401
Igor Murashkin6c936c12014-05-13 14:51:49 -070033402
Igor Murashkin0b080452013-12-27 15:30:25 -080033403 <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>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033404
33405
33406 </td> <!-- entry_type -->
33407
33408 <td class="entry_description">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033409 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
33410channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
33411CONTRAST_<wbr/>CURVE.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033412 </td>
33413
33414 <td class="entry_units">
33415 </td>
33416
33417 <td class="entry_range">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033418 <p>0-1 on both input and output coordinates,<wbr/> normalized
33419as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033420 </td>
33421
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033422 <td class="entry_hal_version">
33423 <p>3.<wbr/>2</p>
33424 </td>
33425
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033426 <td class="entry_tags">
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033427 </td>
33428
33429 </tr>
33430 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033431 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033432 </tr>
33433 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033434 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033435 <p>Each channel's curve is defined by an array of control points:</p>
33436<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
33437 [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
334382 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070033439<p>These are sorted in order of increasing <code>Pin</code>; it is
33440required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
Igor Murashkin94e06c42014-01-13 16:51:17 -080033441define a complete mapping.<wbr/> For input values between control points,<wbr/>
33442the camera device must linearly interpolate between the control
33443points.<wbr/></p>
33444<p>Each curve can have an independent number of points,<wbr/> and the number
33445of points can be less than max (that is,<wbr/> the request doesn't have to
33446always provide a curve with number of points equivalent to
33447<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070033448<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
33449control points.<wbr/></p>
Igor Murashkin94e06c42014-01-13 16:51:17 -080033450<p>A few examples,<wbr/> and their corresponding graphical mappings; these
33451only specify the red channel and the precision is limited to 4
33452digits,<wbr/> for conciseness.<wbr/></p>
33453<p>Linear mapping:</p>
33454<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 ]
33455</code></pre>
33456<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
33457<p>Invert mapping:</p>
33458<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 ]
33459</code></pre>
33460<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
33461<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
33462<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
33463 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/>
33464 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/>
33465 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/>
33466 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 ]
33467</code></pre>
33468<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
33469<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
33470<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
33471 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/>
33472 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/>
33473 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/>
33474 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 ]
33475</code></pre>
33476<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033477 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033478 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033479
Igor Murashkin94e06c42014-01-13 16:51:17 -080033480 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033481 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin94e06c42014-01-13 16:51:17 -080033482 </tr>
33483 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033484 <td class="entry_details" colspan="6">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033485 <p>For good quality of mapping,<wbr/> at least 128 control points are
33486preferred.<wbr/></p>
33487<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
33488control points used as are available.<wbr/></p>
33489 </td>
33490 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033491
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033492 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033493 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033494
33495
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033496 <tr class="entry" id="dynamic_android.tonemap.curve">
33497 <td class="entry_name
33498 " rowspan="5">
33499 android.<wbr/>tonemap.<wbr/>curve
33500 </td>
33501 <td class="entry_type">
33502 <span class="entry_type_name">float</span>
33503
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070033504 <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033505
33506 <span class="entry_type_synthetic">[synthetic] </span>
33507
Igor Murashkinca256272014-10-02 15:27:09 -070033508 <span class="entry_type_hwlevel">[full] </span>
33509
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033510
33511
33512
33513 </td> <!-- entry_type -->
33514
33515 <td class="entry_description">
33516 <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
33517is CONTRAST_<wbr/>CURVE.<wbr/></p>
33518 </td>
33519
33520 <td class="entry_units">
33521 </td>
33522
33523 <td class="entry_range">
33524 </td>
33525
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033526 <td class="entry_hal_version">
33527 <p>3.<wbr/>2</p>
33528 </td>
33529
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033530 <td class="entry_tags">
33531 </td>
33532
33533 </tr>
33534 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033535 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033536 </tr>
33537 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033538 <td class="entry_details" colspan="6">
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033539 <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
33540channels respectively.<wbr/> The following example uses the red channel as an
33541example.<wbr/> The same logic applies to green and blue channel.<wbr/>
33542Each channel's curve is defined by an array of control points:</p>
33543<pre><code>curveRed =
33544 [ 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) ]
335452 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
33546<p>These are sorted in order of increasing <code>Pin</code>; it is always
33547guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
33548define a complete mapping.<wbr/> For input values between control points,<wbr/>
33549the camera device must linearly interpolate between the control
33550points.<wbr/></p>
33551<p>Each curve can have an independent number of points,<wbr/> and the number
33552of points can be less than max (that is,<wbr/> the request doesn't have to
33553always provide a curve with number of points equivalent to
33554<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
Shuzhen Wang75273722018-10-15 12:00:13 -070033555<p>For devices with MONOCHROME capability,<wbr/> all three channels must have the same set of
33556control points.<wbr/></p>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033557<p>A few examples,<wbr/> and their corresponding graphical mappings; these
33558only specify the red channel and the precision is limited to 4
33559digits,<wbr/> for conciseness.<wbr/></p>
33560<p>Linear mapping:</p>
33561<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
33562</code></pre>
33563<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
33564<p>Invert mapping:</p>
33565<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
33566</code></pre>
33567<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
33568<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
33569<pre><code>curveRed = [
33570 (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/>
33571 (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/>
33572 (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/>
33573 (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) ]
33574</code></pre>
33575<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
33576<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
33577<pre><code>curveRed = [
33578 (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/>
33579 (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/>
33580 (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/>
33581 (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) ]
33582</code></pre>
33583<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
33584 </td>
33585 </tr>
33586
33587 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033588 <th class="th_details" colspan="6">HAL Implementation Details</th>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033589 </tr>
33590 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033591 <td class="entry_details" colspan="6">
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033592 <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
33593curveBlue entries.<wbr/></p>
33594 </td>
33595 </tr>
33596
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033597 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033598 <!-- end of entry -->
33599
33600
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033601 <tr class="entry" id="dynamic_android.tonemap.mode">
Igor Murashkin6c936c12014-05-13 14:51:49 -070033602 <td class="entry_name
33603 " rowspan="3">
Igor Murashkin0b080452013-12-27 15:30:25 -080033604 android.<wbr/>tonemap.<wbr/>mode
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033605 </td>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033606 <td class="entry_type">
Igor Murashkinb556bc42012-12-04 16:07:21 -080033607 <span class="entry_type_name entry_type_name_enum">byte</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033608
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070033609 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033610
Igor Murashkin6c936c12014-05-13 14:51:49 -070033611
Igor Murashkinca256272014-10-02 15:27:09 -070033612 <span class="entry_type_hwlevel">[full] </span>
33613
Igor Murashkin6c936c12014-05-13 14:51:49 -070033614
33615
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033616 <ul class="entry_type_enum">
33617 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033618 <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
Igor Murashkina10351a2014-01-15 17:05:22 -080033619 <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033620the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
Igor Murashkin94e06c42014-01-13 16:51:17 -080033621<p>All color enhancement and tonemapping must be disabled,<wbr/> except
33622for applying the tonemapping curve specified by
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033623<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
Igor Murashkin94e06c42014-01-13 16:51:17 -080033624<p>Must not slow down frame rate relative to raw
33625sensor output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033626 </li>
33627 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033628 <span class="entry_type_enum_name">FAST (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070033629 <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
33630reducing frame rate compared to raw sensor output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033631 </li>
33632 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033633 <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070033634 <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
Yin-Chia Yeh7bdefd32015-04-02 14:00:40 -070033635the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033636 </li>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033637 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033638 <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070033639 <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 perform
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033640tonemapping.<wbr/></p>
33641<p>All color enhancement and tonemapping must be disabled,<wbr/> except
Yin-Chia Yeh3a52b8f2015-05-05 23:49:07 -070033642for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033643<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
33644 </li>
33645 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033646 <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033647 <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070033648<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to perform tonemapping.<wbr/></p>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033649<p>All color enhancement and tonemapping must be disabled,<wbr/> except
33650for applying the tonemapping curve specified by
Yin-Chia Yeh3a52b8f2015-05-05 23:49:07 -070033651<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033652<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
33653 </li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033654 </ul>
33655
33656 </td> <!-- entry_type -->
33657
33658 <td class="entry_description">
Igor Murashkin94e06c42014-01-13 16:51:17 -080033659 <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033660 </td>
33661
33662 <td class="entry_units">
33663 </td>
33664
33665 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070033666 <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033667 </td>
33668
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033669 <td class="entry_hal_version">
33670 <p>3.<wbr/>2</p>
33671 </td>
33672
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033673 <td class="entry_tags">
33674 </td>
33675
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033676 </tr>
Igor Murashkin595f45b2014-01-17 17:27:15 -080033677 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033678 <th class="th_details" colspan="6">Details</th>
Igor Murashkin595f45b2014-01-17 17:27:15 -080033679 </tr>
33680 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033681 <td class="entry_details" colspan="6">
Igor Murashkin595f45b2014-01-17 17:27:15 -080033682 <p>When switching to an application-defined contrast curve by setting
33683<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
33684per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
33685mapping from input high-bit-depth pixel value to the output
33686low-bit-depth value.<wbr/> Since the actual pixel ranges of both input
33687and output may change depending on the camera pipeline,<wbr/> the values
33688are specified by normalized floating-point numbers.<wbr/></p>
33689<p>More-complex color mapping operations such as 3D color look-up
33690tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
33691transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
33692CONTRAST_<wbr/>CURVE.<wbr/></p>
33693<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
Yin-Chia Yeh0a5f2692014-05-27 09:48:07 -070033694emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
Igor Murashkin595f45b2014-01-17 17:27:15 -080033695These values are always available,<wbr/> and as close as possible to the
33696actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
Zhijun He46f82f02014-05-20 18:22:18 -070033697<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
Igor Murashkin595f45b2014-01-17 17:27:15 -080033698provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
33699roughly the same.<wbr/></p>
33700 </td>
33701 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033702
33703
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033704 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033705 <!-- end of entry -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033706
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033707
33708 <tr class="entry" id="dynamic_android.tonemap.gamma">
33709 <td class="entry_name
33710 " rowspan="3">
33711 android.<wbr/>tonemap.<wbr/>gamma
33712 </td>
33713 <td class="entry_type">
33714 <span class="entry_type_name">float</span>
33715
33716 <span class="entry_type_visibility"> [public]</span>
33717
33718
33719
33720
33721
33722
33723 </td> <!-- entry_type -->
33724
33725 <td class="entry_description">
33726 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
33727GAMMA_<wbr/>VALUE</p>
33728 </td>
33729
33730 <td class="entry_units">
33731 </td>
33732
33733 <td class="entry_range">
33734 </td>
33735
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033736 <td class="entry_hal_version">
33737 <p>3.<wbr/>2</p>
33738 </td>
33739
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033740 <td class="entry_tags">
33741 </td>
33742
33743 </tr>
33744 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033745 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033746 </tr>
33747 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033748 <td class="entry_details" colspan="6">
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070033749 <p>The tonemap curve will be defined the following formula:</p>
33750<ul>
33751<li>OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)</li>
33752</ul>
33753<p>where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033754pow is the power function and gamma is the gamma value specified by this
33755key.<wbr/></p>
33756<p>The same curve will be applied to all color channels.<wbr/> The camera device
33757may clip the input gamma value to its supported range.<wbr/> The actual applied
33758value will be returned in capture result.<wbr/></p>
33759<p>The valid range of gamma value varies on different devices,<wbr/> but values
33760within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
33761 </td>
33762 </tr>
33763
33764
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033765 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033766 <!-- end of entry -->
33767
33768
33769 <tr class="entry" id="dynamic_android.tonemap.presetCurve">
33770 <td class="entry_name
33771 " rowspan="3">
33772 android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
33773 </td>
33774 <td class="entry_type">
33775 <span class="entry_type_name entry_type_name_enum">byte</span>
33776
33777 <span class="entry_type_visibility"> [public]</span>
33778
33779
33780
33781
33782
33783 <ul class="entry_type_enum">
33784 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033785 <span class="entry_type_enum_name">SRGB (v3.2)</span>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033786 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
33787 </li>
33788 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033789 <span class="entry_type_enum_name">REC709 (v3.2)</span>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033790 <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
33791 </li>
33792 </ul>
33793
33794 </td> <!-- entry_type -->
33795
33796 <td class="entry_description">
33797 <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
33798PRESET_<wbr/>CURVE</p>
33799 </td>
33800
33801 <td class="entry_units">
33802 </td>
33803
33804 <td class="entry_range">
33805 </td>
33806
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033807 <td class="entry_hal_version">
33808 <p>3.<wbr/>2</p>
33809 </td>
33810
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033811 <td class="entry_tags">
33812 </td>
33813
33814 </tr>
33815 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033816 <th class="th_details" colspan="6">Details</th>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033817 </tr>
33818 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033819 <td class="entry_details" colspan="6">
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033820 <p>The tonemap curve will be defined by specified standard.<wbr/></p>
33821<p>sRGB (approximated by 16 control points):</p>
33822<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
33823<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
33824<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
33825<p>Note that above figures show a 16 control points approximation of preset
33826curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
33827 </td>
33828 </tr>
33829
33830
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033831 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Yin-Chia Yeh993d4c42015-02-05 13:19:21 -080033832 <!-- end of entry -->
33833
Igor Murashkin08b8aad2012-11-29 15:23:03 -080033834
33835
33836 <!-- end of kind -->
33837 </tbody>
33838
33839 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033840 <tr><td colspan="7" id="section_led" class="section">led</td></tr>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033841
33842
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033843 <tr><td colspan="7" class="kind">controls</td></tr>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033844
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070033845 <thead class="entries_header">
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033846 <tr>
33847 <th class="th_name">Property Name</th>
33848 <th class="th_type">Type</th>
33849 <th class="th_description">Description</th>
33850 <th class="th_units">Units</th>
33851 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033852 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033853 <th class="th_tags">Tags</th>
33854 </tr>
33855 </thead>
33856
33857 <tbody>
33858
33859
33860
33861
33862
33863
33864
33865
33866
33867
33868 <tr class="entry" id="controls_android.led.transmit">
Igor Murashkin6c936c12014-05-13 14:51:49 -070033869 <td class="entry_name
33870 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080033871 android.<wbr/>led.<wbr/>transmit
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033872 </td>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033873 <td class="entry_type">
33874 <span class="entry_type_name entry_type_name_enum">byte</span>
33875
Igor Murashkinb8dc8812013-07-17 16:29:34 -070033876 <span class="entry_type_visibility"> [hidden as boolean]</span>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033877
Igor Murashkin6c936c12014-05-13 14:51:49 -070033878
33879
33880
Igor Murashkinca256272014-10-02 15:27:09 -070033881
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033882 <ul class="entry_type_enum">
33883 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033884 <span class="entry_type_enum_name">OFF (v3.2)</span>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033885 </li>
33886 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033887 <span class="entry_type_enum_name">ON (v3.2)</span>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033888 </li>
33889 </ul>
33890
33891 </td> <!-- entry_type -->
33892
33893 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080033894 <p>This LED is nominally used to indicate to the user
Igor Murashkin8aa2a112013-12-09 12:06:17 -080033895that the camera is powered on and may be streaming images back to the
Igor Murashkin0b080452013-12-27 15:30:25 -080033896Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
Igor Murashkin8aa2a112013-12-09 12:06:17 -080033897disable this when video is processed locally and not transmitted to
Igor Murashkin0b080452013-12-27 15:30:25 -080033898any untrusted applications.<wbr/></p>
33899<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
33900transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
33901data is stored locally on the device.<wbr/></p>
Igor Murashkin8aa2a112013-12-09 12:06:17 -080033902<p>The LED <em>may</em> be off if a trusted application is using the data that
Igor Murashkin0b080452013-12-27 15:30:25 -080033903doesn't violate the above rules.<wbr/></p>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033904 </td>
33905
33906 <td class="entry_units">
33907 </td>
33908
33909 <td class="entry_range">
33910 </td>
33911
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033912 <td class="entry_hal_version">
33913 <p>3.<wbr/>2</p>
33914 </td>
33915
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033916 <td class="entry_tags">
33917 </td>
33918
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033919 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033920
33921
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033922 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080033923 <!-- end of entry -->
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033924
33925
33926
33927 <!-- end of kind -->
33928 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033929 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033930
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070033931 <thead class="entries_header">
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033932 <tr>
33933 <th class="th_name">Property Name</th>
33934 <th class="th_type">Type</th>
33935 <th class="th_description">Description</th>
33936 <th class="th_units">Units</th>
33937 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033938 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033939 <th class="th_tags">Tags</th>
33940 </tr>
33941 </thead>
33942
33943 <tbody>
33944
33945
33946
33947
33948
33949
33950
33951
33952
33953
33954 <tr class="entry" id="dynamic_android.led.transmit">
Igor Murashkin6c936c12014-05-13 14:51:49 -070033955 <td class="entry_name
33956 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080033957 android.<wbr/>led.<wbr/>transmit
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080033958 </td>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033959 <td class="entry_type">
33960 <span class="entry_type_name entry_type_name_enum">byte</span>
33961
Igor Murashkinb8dc8812013-07-17 16:29:34 -070033962 <span class="entry_type_visibility"> [hidden as boolean]</span>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033963
Igor Murashkin6c936c12014-05-13 14:51:49 -070033964
33965
33966
Igor Murashkinca256272014-10-02 15:27:09 -070033967
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033968 <ul class="entry_type_enum">
33969 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033970 <span class="entry_type_enum_name">OFF (v3.2)</span>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033971 </li>
33972 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080033973 <span class="entry_type_enum_name">ON (v3.2)</span>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033974 </li>
33975 </ul>
33976
33977 </td> <!-- entry_type -->
33978
33979 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080033980 <p>This LED is nominally used to indicate to the user
Igor Murashkin8aa2a112013-12-09 12:06:17 -080033981that the camera is powered on and may be streaming images back to the
Igor Murashkin0b080452013-12-27 15:30:25 -080033982Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
Igor Murashkin8aa2a112013-12-09 12:06:17 -080033983disable this when video is processed locally and not transmitted to
Igor Murashkin0b080452013-12-27 15:30:25 -080033984any untrusted applications.<wbr/></p>
33985<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
33986transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
33987data is stored locally on the device.<wbr/></p>
Igor Murashkin8aa2a112013-12-09 12:06:17 -080033988<p>The LED <em>may</em> be off if a trusted application is using the data that
Igor Murashkin0b080452013-12-27 15:30:25 -080033989doesn't violate the above rules.<wbr/></p>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070033990 </td>
33991
33992 <td class="entry_units">
33993 </td>
33994
33995 <td class="entry_range">
33996 </td>
33997
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080033998 <td class="entry_hal_version">
33999 <p>3.<wbr/>2</p>
34000 </td>
34001
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034002 <td class="entry_tags">
34003 </td>
34004
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034005 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034006
34007
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034008 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034009 <!-- end of entry -->
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034010
34011
34012
34013 <!-- end of kind -->
34014 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034015 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034016
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070034017 <thead class="entries_header">
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034018 <tr>
34019 <th class="th_name">Property Name</th>
34020 <th class="th_type">Type</th>
34021 <th class="th_description">Description</th>
34022 <th class="th_units">Units</th>
34023 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034024 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034025 <th class="th_tags">Tags</th>
34026 </tr>
34027 </thead>
34028
34029 <tbody>
34030
34031
34032
34033
34034
34035
34036
34037
34038
34039
34040 <tr class="entry" id="static_android.led.availableLeds">
Igor Murashkin6c936c12014-05-13 14:51:49 -070034041 <td class="entry_name
34042 " rowspan="1">
Igor Murashkin0b080452013-12-27 15:30:25 -080034043 android.<wbr/>led.<wbr/>available<wbr/>Leds
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034044 </td>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034045 <td class="entry_type">
34046 <span class="entry_type_name entry_type_name_enum">byte</span>
34047 <span class="entry_type_container">x</span>
34048
34049 <span class="entry_type_array">
34050 n
34051 </span>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070034052 <span class="entry_type_visibility"> [hidden]</span>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034053
Igor Murashkin6c936c12014-05-13 14:51:49 -070034054
34055
34056
Igor Murashkinca256272014-10-02 15:27:09 -070034057
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034058 <ul class="entry_type_enum">
34059 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034060 <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070034061 <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>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034062 </li>
34063 </ul>
34064
34065 </td> <!-- entry_type -->
34066
34067 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080034068 <p>A list of camera LEDs that are available on this system.<wbr/></p>
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034069 </td>
34070
34071 <td class="entry_units">
34072 </td>
34073
34074 <td class="entry_range">
34075 </td>
34076
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034077 <td class="entry_hal_version">
34078 <p>3.<wbr/>2</p>
34079 </td>
34080
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034081 <td class="entry_tags">
34082 </td>
34083
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034084 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034085
34086
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034087 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034088 <!-- end of entry -->
Igor Murashkinc469f7d2013-04-23 14:31:02 -070034089
34090
34091
34092 <!-- end of kind -->
34093 </tbody>
34094
34095 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034096 <tr><td colspan="7" id="section_info" class="section">info</td></tr>
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034097
34098
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034099 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034100
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070034101 <thead class="entries_header">
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034102 <tr>
34103 <th class="th_name">Property Name</th>
34104 <th class="th_type">Type</th>
34105 <th class="th_description">Description</th>
34106 <th class="th_units">Units</th>
34107 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034108 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034109 <th class="th_tags">Tags</th>
34110 </tr>
34111 </thead>
34112
34113 <tbody>
34114
34115
34116
34117
34118
34119
34120
34121
34122
34123
34124 <tr class="entry" id="static_android.info.supportedHardwareLevel">
Igor Murashkin6c936c12014-05-13 14:51:49 -070034125 <td class="entry_name
34126 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080034127 android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034128 </td>
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034129 <td class="entry_type">
34130 <span class="entry_type_name entry_type_name_enum">byte</span>
34131
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -070034132 <span class="entry_type_visibility"> [public]</span>
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034133
Igor Murashkin6c936c12014-05-13 14:51:49 -070034134
Igor Murashkinca256272014-10-02 15:27:09 -070034135 <span class="entry_type_hwlevel">[legacy] </span>
34136
Igor Murashkin6c936c12014-05-13 14:51:49 -070034137
34138
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034139 <ul class="entry_type_enum">
34140 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034141 <span class="entry_type_enum_name">LIMITED (v3.2)</span>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034142 <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
34143better.<wbr/></p>
34144<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
34145<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
34146<p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
34147support for color image capture.<wbr/> The only exception is that the device may
34148alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
34149measurements and not color images.<wbr/></p>
34150<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>
34151to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
34152capturing a high-quality still image.<wbr/></p>
34153<p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
34154required to support full-automatic operation and post-processing (<code>OFF</code> is not
34155supported 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
34156<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
34157<p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
34158can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034159 </li>
34160 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034161 <span class="entry_type_enum_name">FULL (v3.2)</span>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034162 <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
34163<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
34164<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
34165<p>A <code>FULL</code> device will support below capabilities:</p>
34166<ul>
34167<li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
34168 <code>BURST_<wbr/>CAPTURE</code>)</li>
34169<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>
34170<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>
34171<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
34172 <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
34173<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>
34174<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>
34175</ul>
34176<p>Note:
34177Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
34178(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
3417923,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
Ruben Brunk31b50c22014-07-02 00:13:46 +000034180 </li>
34181 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034182 <span class="entry_type_enum_name">LEGACY (v3.2)</span>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034183 <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034184<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>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034185<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
34186post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
34187No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
34188<code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
34189<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>
34190devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
34191as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/> This may
34192fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
34193for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
Eino-Ville Talvaladde54ae2019-04-10 17:28:26 -070034194enable the flash.<wbr/></p>
Shuzhen Wang16c73e42022-06-13 09:42:11 -070034195<p>Devices that initially shipped with Android version <a href="https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#Q">Q</a> or newer will not include any LEGACY-level devices.<wbr/></p></span>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034196 </li>
34197 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034198 <span class="entry_type_enum_name">3 (v3.2)</span>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034199 <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
34200FULL-level capabilities.<wbr/></p>
34201<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
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034202<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>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034203<p>The following additional capabilities are guaranteed to be supported:</p>
34204<ul>
34205<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
34206 <code>YUV_<wbr/>REPROCESSING</code>)</li>
34207<li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
34208 <code>RAW</code>)</li>
34209</ul></span>
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034210 </li>
Yin-Chia Yeheef39222018-01-19 11:32:19 -080034211 <li>
34212 <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
34213 <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
34214<p>The device has capability identical to a LIMITED level device,<wbr/> with the following
34215exceptions:</p>
34216<ul>
34217<li>The device may not report lens/<wbr/>sensor related information such as<ul>
34218<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
34219<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
34220<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
34221<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
34222<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
34223<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
34224<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
34225</ul>
34226</li>
34227<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
34228<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
34229 on the external camera being used.<wbr/></li>
34230</ul></span>
34231 </li>
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034232 </ul>
34233
34234 </td> <!-- entry_type -->
34235
34236 <td class="entry_description">
Igor Murashkin57d570d2014-02-06 15:35:37 -080034237 <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034238 </td>
34239
34240 <td class="entry_units">
34241 </td>
34242
34243 <td class="entry_range">
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034244 </td>
34245
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034246 <td class="entry_hal_version">
34247 <p>3.<wbr/>2</p>
34248 </td>
34249
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034250 <td class="entry_tags">
34251 </td>
34252
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034253 </tr>
Igor Murashkin57d570d2014-02-06 15:35:37 -080034254 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034255 <th class="th_details" colspan="6">Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080034256 </tr>
34257 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034258 <td class="entry_details" colspan="6">
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034259 <p>The supported hardware level is a high-level description of the camera device's
34260capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
34261features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
34262The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
34263<p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
34264numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
34265the following code snippet can be used:</p>
34266<pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
34267boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
Yin-Chia Yeh7d43c912018-07-13 11:49:10 -070034268 final int[] sortedHwLevels = {
34269 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY,<wbr/>
34270 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>EXTERNAL,<wbr/>
34271 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LIMITED,<wbr/>
34272 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>FULL,<wbr/>
34273 Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>3
34274 };
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034275 int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
Yin-Chia Yeh7d43c912018-07-13 11:49:10 -070034276 if (requiredLevel == deviceLevel) {
34277 return true;
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034278 }
Yin-Chia Yeh7d43c912018-07-13 11:49:10 -070034279
34280 for (int sortedlevel : sortedHwLevels) {
34281 if (sortedlevel == requiredLevel) {
34282 return true;
34283 } else if (sortedlevel == deviceLevel) {
34284 return false;
34285 }
34286 }
34287 return false; //<wbr/> Should never reach here
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034288}
34289</code></pre>
34290<p>At a high level,<wbr/> the levels are:</p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080034291<ul>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034292<li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
34293 Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
34294<li><code>LIMITED</code> devices represent the
34295 baseline feature set,<wbr/> and may also include additional capabilities that are
34296 subsets of <code>FULL</code>.<wbr/></li>
34297<li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
34298 post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
34299<li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
34300 with additional output stream configurations.<wbr/></li>
Yin-Chia Yeh7d43c912018-07-13 11:49:10 -070034301<li><code>EXTERNAL</code> devices are similar to <code>LIMITED</code> devices with exceptions like some sensor or
Yin-Chia Yeh60231262019-01-23 15:25:41 -080034302 lens information not reported or less stable framerates.<wbr/></li>
Igor Murashkin57d570d2014-02-06 15:35:37 -080034303</ul>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034304<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
34305<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
34306finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034307ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070034308<p>Some features are not part of any particular hardware level or capability and must be
34309queried separately.<wbr/> These include:</p>
34310<ul>
34311<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
34312<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>
34313<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>
34314<li>Optical or electrical image stabilization
34315 (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
34316 <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
34317</ul>
Igor Murashkin57d570d2014-02-06 15:35:37 -080034318 </td>
34319 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034320
Igor Murashkin57d570d2014-02-06 15:35:37 -080034321 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034322 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin57d570d2014-02-06 15:35:37 -080034323 </tr>
34324 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034325 <td class="entry_details" colspan="6">
34326 <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034327FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
34328<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
34329mode has hardware requirements roughly in line with those for a camera HAL device v1
34330implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
34331superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080034332<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080034333<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034334the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
34335implemented by the camera framework code.<wbr/></p>
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070034336<p>EXTERNAL level devices have lower performance bar in CTS since the performance might depend
Yin-Chia Yeheef39222018-01-19 11:32:19 -080034337on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
34338The ITS test suite is exempted for the same reason.<wbr/></p>
Igor Murashkin57d570d2014-02-06 15:35:37 -080034339 </td>
34340 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034341
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034342 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034343 <!-- end of entry -->
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034344
Chien-Yu Chen218925a2018-01-03 12:04:48 -080034345
34346 <tr class="entry" id="static_android.info.version">
34347 <td class="entry_name
34348 " rowspan="5">
34349 android.<wbr/>info.<wbr/>version
34350 </td>
34351 <td class="entry_type">
34352 <span class="entry_type_name">byte</span>
34353
34354 <span class="entry_type_visibility"> [public as string]</span>
34355
34356
34357
34358
34359
34360
34361 </td> <!-- entry_type -->
34362
34363 <td class="entry_description">
34364 <p>A short string for manufacturer version information about the camera device,<wbr/> such as
34365ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
34366 </td>
34367
34368 <td class="entry_units">
34369 </td>
34370
34371 <td class="entry_range">
34372 </td>
34373
34374 <td class="entry_hal_version">
34375 <p>3.<wbr/>3</p>
34376 </td>
34377
34378 <td class="entry_tags">
34379 </td>
34380
34381 </tr>
34382 <tr class="entries_header">
34383 <th class="th_details" colspan="6">Details</th>
34384 </tr>
34385 <tr class="entry_cont">
34386 <td class="entry_details" colspan="6">
34387 <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>
34388in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
34389device.<wbr/></p>
34390 </td>
34391 </tr>
34392
34393 <tr class="entries_header">
34394 <th class="th_details" colspan="6">HAL Implementation Details</th>
34395 </tr>
34396 <tr class="entry_cont">
34397 <td class="entry_details" colspan="6">
34398 <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
34399whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
34400It must not exceed 256 characters.<wbr/></p>
34401 </td>
34402 </tr>
34403
34404 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34405 <!-- end of entry -->
34406
Yin-Chia Yeh5fd38862018-09-17 11:52:08 -070034407
34408 <tr class="entry" id="static_android.info.supportedBufferManagementVersion">
34409 <td class="entry_name
34410 " rowspan="3">
34411 android.<wbr/>info.<wbr/>supported<wbr/>Buffer<wbr/>Management<wbr/>Version
34412 </td>
34413 <td class="entry_type">
34414 <span class="entry_type_name entry_type_name_enum">byte</span>
34415
34416 <span class="entry_type_visibility"> [system]</span>
34417
34418
34419
34420
34421
34422 <ul class="entry_type_enum">
34423 <li>
34424 <span class="entry_type_enum_name">HIDL_DEVICE_3_5 (v3.4)</span>
34425 <span class="entry_type_enum_notes"><p>This camera device supports and opts in to the buffer management APIs provided by
34426HIDL ICameraDevice version 3.<wbr/>5.<wbr/></p></span>
34427 </li>
34428 </ul>
34429
34430 </td> <!-- entry_type -->
34431
34432 <td class="entry_description">
34433 <p>The version of buffer management API this camera device supports and opts into.<wbr/></p>
34434 </td>
34435
34436 <td class="entry_units">
34437 </td>
34438
34439 <td class="entry_range">
34440 </td>
34441
34442 <td class="entry_hal_version">
34443 <p>3.<wbr/>4</p>
34444 </td>
34445
34446 <td class="entry_tags">
34447 </td>
34448
34449 </tr>
34450 <tr class="entries_header">
34451 <th class="th_details" colspan="6">Details</th>
34452 </tr>
34453 <tr class="entry_cont">
34454 <td class="entry_details" colspan="6">
34455 <p>When this key is not present,<wbr/> camera framework will interact with this camera device
34456without any buffer management HAL API.<wbr/> When this key is present and camera framework
34457supports the buffer management API version,<wbr/> camera framework will interact with camera
34458HAL using such version of buffer management API.<wbr/></p>
34459 </td>
34460 </tr>
34461
34462
34463 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34464 <!-- end of entry -->
34465
Emilian Peevcda90fc2021-09-24 17:45:05 -070034466
Emilian Peev9ecc6162021-10-12 13:11:27 -070034467 <tr class="entry" id="static_android.info.deviceStateSensorOrientationMap">
Emilian Peevcda90fc2021-09-24 17:45:05 -070034468 <td class="entry_name
34469 " rowspan="3">
Emilian Peev9ecc6162021-10-12 13:11:27 -070034470 android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Sensor<wbr/>Orientation<wbr/>Map
Emilian Peevcda90fc2021-09-24 17:45:05 -070034471 </td>
34472 <td class="entry_type">
34473 <span class="entry_type_name">int64</span>
34474
Emilian Peev9ecc6162021-10-12 13:11:27 -070034475 <span class="entry_type_visibility"> [java_public as deviceStateSensorOrientationMap]</span>
Emilian Peevcda90fc2021-09-24 17:45:05 -070034476
34477 <span class="entry_type_synthetic">[synthetic] </span>
34478
34479 <span class="entry_type_hwlevel">[limited] </span>
34480
34481
34482
34483
34484 </td> <!-- entry_type -->
34485
34486 <td class="entry_description">
34487 <p>This lists the mapping between a device folding state and
34488specific camera sensor orientation for logical cameras on a foldable device.<wbr/></p>
34489 </td>
34490
34491 <td class="entry_units">
34492 </td>
34493
34494 <td class="entry_range">
34495 </td>
34496
34497 <td class="entry_hal_version">
34498 <p>3.<wbr/>2</p>
34499 </td>
34500
34501 <td class="entry_tags">
34502 </td>
34503
34504 </tr>
34505 <tr class="entries_header">
34506 <th class="th_details" colspan="6">Details</th>
34507 </tr>
34508 <tr class="entry_cont">
34509 <td class="entry_details" colspan="6">
34510 <p>Logical cameras on foldable devices can support sensors with different orientation
34511values.<wbr/> The orientation value may need to change depending on the specific folding
34512state.<wbr/> Information about the mapping between the device folding state and the
34513sensor orientation can be obtained in
Emilian Peev9ecc6162021-10-12 13:11:27 -070034514<a href="https://developer.android.com/reference/android/hardware/camera2/params/DeviceStateSensorOrientationMap.html">DeviceStateSensorOrientationMap</a>.<wbr/>
Emilian Peevcda90fc2021-09-24 17:45:05 -070034515Device state orientation maps are optional and maybe present on devices that support
34516<a href="#controls_android.scaler.rotateAndCrop">android.<wbr/>scaler.<wbr/>rotate<wbr/>And<wbr/>Crop</a>.<wbr/></p>
34517 </td>
34518 </tr>
34519
34520
34521 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34522 <!-- end of entry -->
34523
34524
34525 <tr class="entry" id="static_android.info.deviceStateOrientations">
34526 <td class="entry_name
34527 " rowspan="3">
34528 android.<wbr/>info.<wbr/>device<wbr/>State<wbr/>Orientations
34529 </td>
34530 <td class="entry_type">
34531 <span class="entry_type_name">int64</span>
34532 <span class="entry_type_container">x</span>
34533
34534 <span class="entry_type_array">
34535 2 x n
34536 </span>
34537 <span class="entry_type_visibility"> [ndk_public]</span>
34538
34539
34540 <span class="entry_type_hwlevel">[limited] </span>
34541
34542
34543
34544
34545 </td> <!-- entry_type -->
34546
34547 <td class="entry_description">
34548 </td>
34549
34550 <td class="entry_units">
34551 (device fold state,<wbr/> sensor orientation) x n
34552 </td>
34553
34554 <td class="entry_range">
34555 </td>
34556
34557 <td class="entry_hal_version">
34558 <p>3.<wbr/>7</p>
34559 </td>
34560
34561 <td class="entry_tags">
34562 </td>
34563
34564 </tr>
34565 <tr class="entries_header">
34566 <th class="th_details" colspan="6">Details</th>
34567 </tr>
34568 <tr class="entry_cont">
34569 <td class="entry_details" colspan="6">
34570 <p>HAL must populate the array with
34571(hardware::camera::provider::V2_<wbr/>5::DeviceState,<wbr/> sensorOrientation) pairs for each
34572supported device state bitwise combination.<wbr/></p>
34573 </td>
34574 </tr>
34575
34576
34577 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
34578 <!-- end of entry -->
34579
Igor Murashkin38b8cae2013-05-23 16:38:59 -070034580
34581
34582 <!-- end of kind -->
34583 </tbody>
34584
34585 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034586 <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034587
34588
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034589 <tr><td colspan="7" class="kind">controls</td></tr>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034590
34591 <thead class="entries_header">
34592 <tr>
34593 <th class="th_name">Property Name</th>
34594 <th class="th_type">Type</th>
34595 <th class="th_description">Description</th>
34596 <th class="th_units">Units</th>
34597 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034598 <th class="th_hal_version">Initial HIDL HAL version</th>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034599 <th class="th_tags">Tags</th>
34600 </tr>
34601 </thead>
34602
34603 <tbody>
34604
34605
34606
34607
34608
34609
34610
34611
34612
34613
34614 <tr class="entry" id="controls_android.blackLevel.lock">
Igor Murashkin6c936c12014-05-13 14:51:49 -070034615 <td class="entry_name
34616 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080034617 android.<wbr/>black<wbr/>Level.<wbr/>lock
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034618 </td>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034619 <td class="entry_type">
34620 <span class="entry_type_name entry_type_name_enum">byte</span>
34621
Igor Murashkinb8dc8812013-07-17 16:29:34 -070034622 <span class="entry_type_visibility"> [public as boolean]</span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034623
Igor Murashkin6c936c12014-05-13 14:51:49 -070034624
Igor Murashkinca256272014-10-02 15:27:09 -070034625 <span class="entry_type_hwlevel">[full] </span>
34626
Igor Murashkin6c936c12014-05-13 14:51:49 -070034627
34628
Zhijun He69fc0ea2013-07-17 09:42:58 -070034629 <ul class="entry_type_enum">
34630 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034631 <span class="entry_type_enum_name">OFF (v3.2)</span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034632 </li>
34633 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034634 <span class="entry_type_enum_name">ON (v3.2)</span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034635 </li>
34636 </ul>
34637
34638 </td> <!-- entry_type -->
34639
34640 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080034641 <p>Whether black-level compensation is locked
34642to its current values,<wbr/> or is free to vary.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034643 </td>
34644
34645 <td class="entry_units">
34646 </td>
34647
34648 <td class="entry_range">
34649 </td>
34650
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034651 <td class="entry_hal_version">
34652 <p>3.<wbr/>2</p>
34653 </td>
34654
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034655 <td class="entry_tags">
34656 <ul class="entry_tags">
34657 <li><a href="#tag_HAL2">HAL2</a></li>
34658 </ul>
34659 </td>
34660
34661 </tr>
34662 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034663 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034664 </tr>
34665 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034666 <td class="entry_details" colspan="6">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070034667 <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034668compensation will not change until the lock is set to
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070034669<code>false</code> (OFF).<wbr/></p>
Igor Murashkin8aa2a112013-12-09 12:06:17 -080034670<p>Since changes to certain capture parameters (such as
34671exposure time) may require resetting of black level
Igor Murashkin0b080452013-12-27 15:30:25 -080034672compensation,<wbr/> the camera device must report whether setting
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034673the black level lock was successful in the output result
Igor Murashkin0b080452013-12-27 15:30:25 -080034674metadata.<wbr/></p>
34675<p>For example,<wbr/> if a sequence of requests is as follows:</p>
Igor Murashkin8aa2a112013-12-09 12:06:17 -080034676<ul>
Igor Murashkin0b080452013-12-27 15:30:25 -080034677<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
34678<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
34679<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
34680<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
34681<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
34682<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
Igor Murashkin8aa2a112013-12-09 12:06:17 -080034683</ul>
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034684<p>And the exposure change in Request 4 requires the camera
Igor Murashkin0b080452013-12-27 15:30:25 -080034685device to reset the black level offsets,<wbr/> then the output
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034686result metadata is expected to be:</p>
Igor Murashkin8aa2a112013-12-09 12:06:17 -080034687<ul>
Igor Murashkin0b080452013-12-27 15:30:25 -080034688<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
34689<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
34690<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
34691<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
34692<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
34693<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
Igor Murashkin8aa2a112013-12-09 12:06:17 -080034694</ul>
Igor Murashkin0b080452013-12-27 15:30:25 -080034695<p>This indicates to the application that on frame 4,<wbr/> black
34696levels were reset due to exposure value changes,<wbr/> and pixel
34697values may not be consistent across captures.<wbr/></p>
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034698<p>The camera device will maintain the lock to the extent
Igor Murashkin0b080452013-12-27 15:30:25 -080034699possible,<wbr/> only overriding the lock to OFF when changes to
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034700other request parameters require a black level recalculation
Igor Murashkin0b080452013-12-27 15:30:25 -080034701or reset.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034702 </td>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034703 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034704
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034705 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034706 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034707 </tr>
34708 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034709 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080034710 <p>If for some reason black level locking is no longer possible
34711(for example,<wbr/> the analog gain has changed,<wbr/> which forces
34712black level offsets to be recalculated),<wbr/> then the HAL must
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034713override this request (and it must report 'OFF' when this
34714does happen) until the next capture for which locking is
Igor Murashkin0b080452013-12-27 15:30:25 -080034715possible again.<wbr/></p>
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034716 </td>
34717 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034718
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034719 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034720 <!-- end of entry -->
Zhijun He69fc0ea2013-07-17 09:42:58 -070034721
34722
34723
34724 <!-- end of kind -->
34725 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034726 <tr><td colspan="7" class="kind">dynamic</td></tr>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034727
34728 <thead class="entries_header">
34729 <tr>
34730 <th class="th_name">Property Name</th>
34731 <th class="th_type">Type</th>
34732 <th class="th_description">Description</th>
34733 <th class="th_units">Units</th>
34734 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034735 <th class="th_hal_version">Initial HIDL HAL version</th>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034736 <th class="th_tags">Tags</th>
34737 </tr>
34738 </thead>
34739
34740 <tbody>
34741
34742
34743
34744
34745
34746
34747
34748
34749
34750
34751 <tr class="entry" id="dynamic_android.blackLevel.lock">
Igor Murashkin6c936c12014-05-13 14:51:49 -070034752 <td class="entry_name
34753 " rowspan="5">
Igor Murashkin0b080452013-12-27 15:30:25 -080034754 android.<wbr/>black<wbr/>Level.<wbr/>lock
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034755 </td>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034756 <td class="entry_type">
34757 <span class="entry_type_name entry_type_name_enum">byte</span>
34758
Igor Murashkinb8dc8812013-07-17 16:29:34 -070034759 <span class="entry_type_visibility"> [public as boolean]</span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034760
Igor Murashkin6c936c12014-05-13 14:51:49 -070034761
Igor Murashkinca256272014-10-02 15:27:09 -070034762 <span class="entry_type_hwlevel">[full] </span>
34763
Igor Murashkin6c936c12014-05-13 14:51:49 -070034764
34765
Zhijun He69fc0ea2013-07-17 09:42:58 -070034766 <ul class="entry_type_enum">
34767 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034768 <span class="entry_type_enum_name">OFF (v3.2)</span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034769 </li>
34770 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034771 <span class="entry_type_enum_name">ON (v3.2)</span>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034772 </li>
34773 </ul>
34774
34775 </td> <!-- entry_type -->
34776
34777 <td class="entry_description">
Igor Murashkin0b080452013-12-27 15:30:25 -080034778 <p>Whether black-level compensation is locked
34779to its current values,<wbr/> or is free to vary.<wbr/></p>
Zhijun He69fc0ea2013-07-17 09:42:58 -070034780 </td>
34781
34782 <td class="entry_units">
34783 </td>
34784
34785 <td class="entry_range">
34786 </td>
34787
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034788 <td class="entry_hal_version">
34789 <p>3.<wbr/>2</p>
34790 </td>
34791
Zhijun He69fc0ea2013-07-17 09:42:58 -070034792 <td class="entry_tags">
34793 <ul class="entry_tags">
34794 <li><a href="#tag_HAL2">HAL2</a></li>
34795 </ul>
34796 </td>
34797
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034798 </tr>
34799 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034800 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034801 </tr>
34802 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034803 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080034804 <p>Whether the black level offset was locked for this frame.<wbr/> Should be
Eino-Ville Talvala63c0fb22014-01-02 16:11:44 -080034805ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034806a change in other capture settings forced the camera device to
Igor Murashkin0b080452013-12-27 15:30:25 -080034807perform a black level reset.<wbr/></p>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034808 </td>
34809 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034810
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034811 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034812 <th class="th_details" colspan="6">HAL Implementation Details</th>
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034813 </tr>
34814 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034815 <td class="entry_details" colspan="6">
Igor Murashkin0b080452013-12-27 15:30:25 -080034816 <p>If for some reason black level locking is no longer possible
34817(for example,<wbr/> the analog gain has changed,<wbr/> which forces
34818black level offsets to be recalculated),<wbr/> then the HAL must
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034819override this request (and it must report 'OFF' when this
34820does happen) until the next capture for which locking is
Igor Murashkin0b080452013-12-27 15:30:25 -080034821possible again.<wbr/></p>
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -080034822 </td>
34823 </tr>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -080034824
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034825 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8eb70052013-12-26 12:06:13 -080034826 <!-- end of entry -->
Zhijun He69fc0ea2013-07-17 09:42:58 -070034827
34828
34829
34830 <!-- end of kind -->
34831 </tbody>
34832
34833 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034834 <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034835
34836
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034837 <tr><td colspan="7" class="kind">dynamic</td></tr>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034838
34839 <thead class="entries_header">
34840 <tr>
34841 <th class="th_name">Property Name</th>
34842 <th class="th_type">Type</th>
34843 <th class="th_description">Description</th>
34844 <th class="th_units">Units</th>
34845 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034846 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034847 <th class="th_tags">Tags</th>
34848 </tr>
34849 </thead>
34850
34851 <tbody>
34852
34853
34854
34855
34856
34857
34858
34859
34860
34861
34862 <tr class="entry" id="dynamic_android.sync.frameNumber">
Igor Murashkin6c936c12014-05-13 14:51:49 -070034863 <td class="entry_name
34864 " rowspan="5">
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034865 android.<wbr/>sync.<wbr/>frame<wbr/>Number
34866 </td>
34867 <td class="entry_type">
34868 <span class="entry_type_name entry_type_name_enum">int64</span>
34869
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070034870 <span class="entry_type_visibility"> [ndk_public]</span>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034871
Igor Murashkin6c936c12014-05-13 14:51:49 -070034872
Igor Murashkinca256272014-10-02 15:27:09 -070034873 <span class="entry_type_hwlevel">[legacy] </span>
34874
Igor Murashkin6c936c12014-05-13 14:51:49 -070034875
34876
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034877 <ul class="entry_type_enum">
34878 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034879 <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034880 <span class="entry_type_enum_value">-1</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070034881 <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
34882<p>Synchronization is in progress,<wbr/> and reading metadata from this
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034883result may include a mix of data that have taken effect since the
34884last synchronization time.<wbr/></p>
34885<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
34886this value will update to the actual frame number frame number
34887the result is guaranteed to be synchronized to (as long as the
34888request settings remain constant).<wbr/></p></span>
34889 </li>
34890 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080034891 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034892 <span class="entry_type_enum_value">-2</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070034893 <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
34894<p>The result may have already converged,<wbr/> or it may be in
34895progress.<wbr/> Reading from this result may include some mix
34896of settings from past requests.<wbr/></p>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034897<p>After a settings change,<wbr/> the new settings will eventually all
34898take effect for the output buffers and results.<wbr/> However,<wbr/> this
34899value will not change when that happens.<wbr/> Altering settings
34900rapidly may provide outcomes using mixes of settings from recent
34901requests.<wbr/></p>
34902<p>This value is intended primarily for backwards compatibility with
34903the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
34904 </li>
34905 </ul>
34906
34907 </td> <!-- entry_type -->
34908
34909 <td class="entry_description">
34910 <p>The frame number corresponding to the last request
34911with which the output result (metadata + buffers) has been fully
34912synchronized.<wbr/></p>
34913 </td>
34914
34915 <td class="entry_units">
34916 </td>
34917
34918 <td class="entry_range">
34919 <p>Either a non-negative value corresponding to a
34920<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
34921 </td>
34922
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034923 <td class="entry_hal_version">
34924 <p>3.<wbr/>2</p>
34925 </td>
34926
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034927 <td class="entry_tags">
34928 <ul class="entry_tags">
Zhijun He5fb671c2014-05-21 17:51:05 -070034929 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034930 </ul>
34931 </td>
34932
34933 </tr>
34934 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034935 <th class="th_details" colspan="6">Details</th>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034936 </tr>
34937 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034938 <td class="entry_details" colspan="6">
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034939 <p>When a request is submitted to the camera device,<wbr/> there is usually a
34940delay of several frames before the controls get applied.<wbr/> A camera
34941device may either choose to account for this delay by implementing a
34942pipeline and carefully submit well-timed atomic control updates,<wbr/> or
34943it may start streaming control changes that span over several frame
34944boundaries.<wbr/></p>
34945<p>In the latter case,<wbr/> whenever a request's settings change relative to
34946the previous submitted request,<wbr/> the full set of changes may take
34947multiple frame durations to fully take effect.<wbr/> Some settings may
34948take effect sooner (in less frame durations) than others.<wbr/></p>
34949<p>While a set of control changes are being propagated,<wbr/> this value
34950will be CONVERGING.<wbr/></p>
34951<p>Once it is fully known that a set of control changes have been
34952finished propagating,<wbr/> and the resulting updated control settings
34953have been read back by the camera device,<wbr/> this value will be set
34954to a non-negative frame number (corresponding to the request to
34955which the results have synchronized to).<wbr/></p>
34956<p>Older camera device implementations may not have a way to detect
34957when all camera controls have been applied,<wbr/> and will always set this
34958value to UNKNOWN.<wbr/></p>
34959<p>FULL capability devices will always have this value set to the
34960frame number of the request corresponding to this result.<wbr/></p>
34961<p><em>Further details</em>:</p>
34962<ul>
34963<li>Whenever a request differs from the last request,<wbr/> any future
34964results not yet returned may have this value set to CONVERGING (this
34965could include any in-progress captures not yet returned by the camera
34966device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
34967<li>Submitting a series of multiple requests that differ from the
34968previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
34969moves the new synchronization frame to the last non-repeating
34970request (using the smallest frame number from the contiguous list of
34971repeating requests).<wbr/></li>
34972<li>Submitting the same request repeatedly will not change this value
34973to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
34974<li>When this value changes to non-negative,<wbr/> that means that all of the
34975metadata controls from the request have been applied,<wbr/> all of the
34976metadata controls from the camera device have been read to the
34977updated values (into the result),<wbr/> and all of the graphics buffers
34978corresponding to this result are also synchronized to the request.<wbr/></li>
34979</ul>
34980<p><em>Pipeline considerations</em>:</p>
34981<p>Submitting a request with updated controls relative to the previously
34982submitted requests may also invalidate the synchronization state
34983of all the results corresponding to currently in-flight requests.<wbr/></p>
34984<p>In other words,<wbr/> results for this current request and up to
34985<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
34986<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
34987 </td>
34988 </tr>
34989
34990 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034991 <th class="th_details" colspan="6">HAL Implementation Details</th>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034992 </tr>
34993 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080034994 <td class="entry_details" colspan="6">
Eino-Ville Talvala7fabc1e2014-02-10 12:39:35 -080034995 <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080034996is also UNKNOWN.<wbr/></p>
34997<p>FULL capability devices should simply set this value to the
34998<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
34999 </td>
35000 </tr>
35001
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035002 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035003 <!-- end of entry -->
35004
35005
35006
35007 <!-- end of kind -->
35008 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035009 <tr><td colspan="7" class="kind">static</td></tr>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035010
35011 <thead class="entries_header">
35012 <tr>
35013 <th class="th_name">Property Name</th>
35014 <th class="th_type">Type</th>
35015 <th class="th_description">Description</th>
35016 <th class="th_units">Units</th>
35017 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035018 <th class="th_hal_version">Initial HIDL HAL version</th>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035019 <th class="th_tags">Tags</th>
35020 </tr>
35021 </thead>
35022
35023 <tbody>
35024
35025
35026
35027
35028
35029
35030
35031
35032
35033
35034 <tr class="entry" id="static_android.sync.maxLatency">
Igor Murashkin6c936c12014-05-13 14:51:49 -070035035 <td class="entry_name
35036 " rowspan="5">
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035037 android.<wbr/>sync.<wbr/>max<wbr/>Latency
35038 </td>
35039 <td class="entry_type">
35040 <span class="entry_type_name entry_type_name_enum">int32</span>
35041
35042 <span class="entry_type_visibility"> [public]</span>
35043
Igor Murashkin6c936c12014-05-13 14:51:49 -070035044
Igor Murashkinca256272014-10-02 15:27:09 -070035045 <span class="entry_type_hwlevel">[legacy] </span>
35046
Igor Murashkin6c936c12014-05-13 14:51:49 -070035047
35048
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035049 <ul class="entry_type_enum">
35050 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080035051 <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035052 <span class="entry_type_enum_value">0</span>
Eino-Ville Talvalab4329162014-06-09 14:23:02 -070035053 <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035054<p>Changing controls over multiple requests one after another will
35055produce results that have those controls applied atomically
35056each frame.<wbr/></p>
35057<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
35058 </li>
35059 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080035060 <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035061 <span class="entry_type_enum_value">-1</span>
35062 <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
35063of the past requests applied to the camera settings.<wbr/></p>
35064<p>By submitting a series of identical requests,<wbr/> the camera device
35065will eventually have the camera settings applied,<wbr/> but it is
Igor Murashkin757ec242014-07-25 16:55:18 -070035066unknown when that exact point will be.<wbr/></p>
35067<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035068 </li>
35069 </ul>
35070
35071 </td> <!-- entry_type -->
35072
35073 <td class="entry_description">
35074 <p>The maximum number of frames that can occur after a request
35075(different than the previous) has been submitted,<wbr/> and before the
Chien-Yu Chen5f568ff2015-06-26 11:25:45 -070035076result's state becomes synchronized.<wbr/></p>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035077 </td>
35078
35079 <td class="entry_units">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070035080 Frame counts
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035081 </td>
35082
35083 <td class="entry_range">
Eino-Ville Talvala567167a2014-10-02 18:27:34 -070035084 <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035085 </td>
35086
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035087 <td class="entry_hal_version">
35088 <p>3.<wbr/>2</p>
35089 </td>
35090
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035091 <td class="entry_tags">
35092 <ul class="entry_tags">
Zhijun He5fb671c2014-05-21 17:51:05 -070035093 <li><a href="#tag_V1">V1</a></li>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035094 </ul>
35095 </td>
35096
35097 </tr>
35098 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035099 <th class="th_details" colspan="6">Details</th>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035100 </tr>
35101 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035102 <td class="entry_details" colspan="6">
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035103 <p>This defines the maximum distance (in number of metadata results),<wbr/>
Chien-Yu Chen5f568ff2015-06-26 11:25:45 -070035104between the frame number of the request that has new controls to apply
35105and the frame number of the result that has all the controls applied.<wbr/></p>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035106<p>In other words this acts as an upper boundary for how many frames
35107must occur before the camera device knows for a fact that the new
35108submitted camera settings have been applied in outgoing frames.<wbr/></p>
Chien-Yu Chen5f568ff2015-06-26 11:25:45 -070035109 </td>
35110 </tr>
35111
35112 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035113 <th class="th_details" colspan="6">HAL Implementation Details</th>
Chien-Yu Chen5f568ff2015-06-26 11:25:45 -070035114 </tr>
35115 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035116 <td class="entry_details" colspan="6">
Chien-Yu Chen5f568ff2015-06-26 11:25:45 -070035117 <p>For example if maxLatency was 2,<wbr/></p>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035118<pre><code>initial request = X (repeating)
35119request1 = X
35120request2 = Y
35121request3 = Y
35122request4 = Y
35123
35124where requestN has frameNumber N,<wbr/> and the first of the repeating
35125initial request's has frameNumber F (and F &lt; 1).<wbr/>
35126
35127initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
35128result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
35129result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
35130result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
35131result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
35132
35133where resultN has frameNumber N.<wbr/>
35134</code></pre>
35135<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
35136<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
35137<code>4 - 2 = 2</code>.<wbr/></p>
Chien-Yu Chen5f568ff2015-06-26 11:25:45 -070035138<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070035139<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
Eino-Ville Talvalaea3b2682016-01-21 12:23:56 -080035140<code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035141<p>LIMITED devices are strongly encouraged to use a non-negative
35142value.<wbr/> If UNKNOWN is used here then app developers do not have a way
35143to know when sensor settings have been applied.<wbr/></p>
35144 </td>
35145 </tr>
35146
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035147 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080035148 <!-- end of entry -->
35149
35150
35151
35152 <!-- end of kind -->
35153 </tbody>
35154
35155 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035156 <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
Zhijun He41d6f042015-01-15 18:17:24 -080035157
35158
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035159 <tr><td colspan="7" class="kind">controls</td></tr>
Zhijun He41d6f042015-01-15 18:17:24 -080035160
35161 <thead class="entries_header">
35162 <tr>
35163 <th class="th_name">Property Name</th>
35164 <th class="th_type">Type</th>
35165 <th class="th_description">Description</th>
35166 <th class="th_units">Units</th>
35167 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035168 <th class="th_hal_version">Initial HIDL HAL version</th>
Zhijun He41d6f042015-01-15 18:17:24 -080035169 <th class="th_tags">Tags</th>
35170 </tr>
35171 </thead>
35172
35173 <tbody>
35174
35175
35176
35177
35178
35179
35180
35181
35182
35183
35184 <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
35185 <td class="entry_name
35186 " rowspan="3">
35187 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
35188 </td>
35189 <td class="entry_type">
35190 <span class="entry_type_name">float</span>
35191
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070035192 <span class="entry_type_visibility"> [java_public]</span>
Zhijun He41d6f042015-01-15 18:17:24 -080035193
35194
Zhijun He51379152015-04-24 17:59:50 -070035195 <span class="entry_type_hwlevel">[limited] </span>
Zhijun He41d6f042015-01-15 18:17:24 -080035196
35197
35198
35199
35200 </td> <!-- entry_type -->
35201
35202 <td class="entry_description">
35203 <p>The amount of exposure time increase factor applied to the original output
35204frame by the application processing before sending for reprocessing.<wbr/></p>
35205 </td>
35206
35207 <td class="entry_units">
35208 Relative exposure time increase factor.<wbr/>
35209 </td>
35210
35211 <td class="entry_range">
35212 <p>&gt;= 1.<wbr/>0</p>
35213 </td>
35214
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035215 <td class="entry_hal_version">
35216 <p>3.<wbr/>2</p>
35217 </td>
35218
Zhijun He41d6f042015-01-15 18:17:24 -080035219 <td class="entry_tags">
35220 <ul class="entry_tags">
Zhijun He51379152015-04-24 17:59:50 -070035221 <li><a href="#tag_REPROC">REPROC</a></li>
Zhijun He41d6f042015-01-15 18:17:24 -080035222 </ul>
35223 </td>
35224
35225 </tr>
35226 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035227 <th class="th_details" colspan="6">Details</th>
Zhijun He41d6f042015-01-15 18:17:24 -080035228 </tr>
35229 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035230 <td class="entry_details" colspan="6">
Zhijun He41d6f042015-01-15 18:17:24 -080035231 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
35232capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
35233<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
35234output frames to effectively reduce the noise to the same level as a frame that was
35235captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
35236images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
35237the camera device is that the amount of noise in the image would be approximately what
35238would be expected if the original capture parameters had been a sensitivity of
35239S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
35240than S and T respectively.<wbr/> If the captured images were processed by the application
35241before being sent for reprocessing,<wbr/> then the application may have used image processing
35242algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
35243application-processed images (input images).<wbr/> By using the effectiveExposureFactor
35244control,<wbr/> the application can communicate to the camera device the actual noise level
35245improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
35246device can select appropriate noise reduction and edge enhancement parameters to avoid
35247excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
35248enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
35249<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
35250multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
35251fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
35252square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
35253adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
35254produce the best quality images.<wbr/></p>
35255<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
35256buffer in a way that affects its effective exposure time.<wbr/></p>
35257<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
35258reduction 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/>
35259Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
35260<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
35261 </td>
35262 </tr>
35263
35264
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035265 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He41d6f042015-01-15 18:17:24 -080035266 <!-- end of entry -->
35267
35268
35269
35270 <!-- end of kind -->
35271 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035272 <tr><td colspan="7" class="kind">dynamic</td></tr>
Zhijun He41d6f042015-01-15 18:17:24 -080035273
35274 <thead class="entries_header">
35275 <tr>
35276 <th class="th_name">Property Name</th>
35277 <th class="th_type">Type</th>
35278 <th class="th_description">Description</th>
35279 <th class="th_units">Units</th>
35280 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035281 <th class="th_hal_version">Initial HIDL HAL version</th>
Zhijun He41d6f042015-01-15 18:17:24 -080035282 <th class="th_tags">Tags</th>
35283 </tr>
35284 </thead>
35285
35286 <tbody>
35287
35288
35289
35290
35291
35292
35293
35294
35295
35296
35297 <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
35298 <td class="entry_name
35299 " rowspan="3">
35300 android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
35301 </td>
35302 <td class="entry_type">
35303 <span class="entry_type_name">float</span>
35304
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070035305 <span class="entry_type_visibility"> [java_public]</span>
Zhijun He41d6f042015-01-15 18:17:24 -080035306
35307
Zhijun He51379152015-04-24 17:59:50 -070035308 <span class="entry_type_hwlevel">[limited] </span>
Zhijun He41d6f042015-01-15 18:17:24 -080035309
35310
35311
35312
35313 </td> <!-- entry_type -->
35314
35315 <td class="entry_description">
35316 <p>The amount of exposure time increase factor applied to the original output
35317frame by the application processing before sending for reprocessing.<wbr/></p>
35318 </td>
35319
35320 <td class="entry_units">
35321 Relative exposure time increase factor.<wbr/>
35322 </td>
35323
35324 <td class="entry_range">
35325 <p>&gt;= 1.<wbr/>0</p>
35326 </td>
35327
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035328 <td class="entry_hal_version">
35329 <p>3.<wbr/>2</p>
35330 </td>
35331
Zhijun He41d6f042015-01-15 18:17:24 -080035332 <td class="entry_tags">
35333 <ul class="entry_tags">
Zhijun He51379152015-04-24 17:59:50 -070035334 <li><a href="#tag_REPROC">REPROC</a></li>
Zhijun He41d6f042015-01-15 18:17:24 -080035335 </ul>
35336 </td>
35337
35338 </tr>
35339 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035340 <th class="th_details" colspan="6">Details</th>
Zhijun He41d6f042015-01-15 18:17:24 -080035341 </tr>
35342 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035343 <td class="entry_details" colspan="6">
Zhijun He41d6f042015-01-15 18:17:24 -080035344 <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
35345capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
35346<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
35347output frames to effectively reduce the noise to the same level as a frame that was
35348captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
35349images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
35350the camera device is that the amount of noise in the image would be approximately what
35351would be expected if the original capture parameters had been a sensitivity of
35352S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
35353than S and T respectively.<wbr/> If the captured images were processed by the application
35354before being sent for reprocessing,<wbr/> then the application may have used image processing
35355algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
35356application-processed images (input images).<wbr/> By using the effectiveExposureFactor
35357control,<wbr/> the application can communicate to the camera device the actual noise level
35358improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
35359device can select appropriate noise reduction and edge enhancement parameters to avoid
35360excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
35361enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
35362<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
35363multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
35364fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
35365square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
35366adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
35367produce the best quality images.<wbr/></p>
35368<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
35369buffer in a way that affects its effective exposure time.<wbr/></p>
35370<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
35371reduction 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/>
35372Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
35373<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
35374 </td>
35375 </tr>
35376
35377
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035378 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He41d6f042015-01-15 18:17:24 -080035379 <!-- end of entry -->
35380
35381
35382
35383 <!-- end of kind -->
35384 </tbody>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035385 <tr><td colspan="7" class="kind">static</td></tr>
Zhijun He51379152015-04-24 17:59:50 -070035386
35387 <thead class="entries_header">
35388 <tr>
35389 <th class="th_name">Property Name</th>
35390 <th class="th_type">Type</th>
35391 <th class="th_description">Description</th>
35392 <th class="th_units">Units</th>
35393 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035394 <th class="th_hal_version">Initial HIDL HAL version</th>
Zhijun He51379152015-04-24 17:59:50 -070035395 <th class="th_tags">Tags</th>
35396 </tr>
35397 </thead>
35398
35399 <tbody>
35400
35401
35402
35403
35404
35405
35406
35407
35408
35409
35410 <tr class="entry" id="static_android.reprocess.maxCaptureStall">
35411 <td class="entry_name
35412 " rowspan="3">
35413 android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
35414 </td>
35415 <td class="entry_type">
35416 <span class="entry_type_name">int32</span>
35417
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070035418 <span class="entry_type_visibility"> [java_public]</span>
Zhijun He51379152015-04-24 17:59:50 -070035419
35420
35421 <span class="entry_type_hwlevel">[limited] </span>
35422
35423
35424
35425
35426 </td> <!-- entry_type -->
35427
35428 <td class="entry_description">
35429 <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
35430reprocess capture request.<wbr/></p>
35431 </td>
35432
35433 <td class="entry_units">
35434 Number of frames.<wbr/>
35435 </td>
35436
35437 <td class="entry_range">
35438 <p>&lt;= 4</p>
35439 </td>
35440
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035441 <td class="entry_hal_version">
35442 <p>3.<wbr/>2</p>
35443 </td>
35444
Zhijun He51379152015-04-24 17:59:50 -070035445 <td class="entry_tags">
35446 <ul class="entry_tags">
35447 <li><a href="#tag_REPROC">REPROC</a></li>
35448 </ul>
35449 </td>
35450
35451 </tr>
35452 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035453 <th class="th_details" colspan="6">Details</th>
Zhijun He51379152015-04-24 17:59:50 -070035454 </tr>
35455 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035456 <td class="entry_details" colspan="6">
Zhijun He51379152015-04-24 17:59:50 -070035457 <p>The key describes the maximal interference that one reprocess (input) request
35458can introduce to the camera simultaneous streaming of regular (output) capture
35459requests,<wbr/> including repeating requests.<wbr/></p>
35460<p>When a reprocessing capture request is submitted while a camera output repeating request
35461(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
35462pipeline for at least one frame duration so that the camera device is unable to process
35463the following capture request in time for the next sensor start of exposure boundary.<wbr/>
35464When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
35465duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
35466glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
35467the worst-case number of frame stall introduced by one reprocess request with any kind of
35468formats/<wbr/>sizes combination.<wbr/></p>
35469<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
35470ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070035471<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
35472i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
Zhijun He51379152015-04-24 17:59:50 -070035473YUV_<wbr/>REPROCESSING).<wbr/></p>
35474 </td>
35475 </tr>
35476
35477
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035478 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Zhijun He51379152015-04-24 17:59:50 -070035479 <!-- end of entry -->
35480
35481
35482
35483 <!-- end of kind -->
35484 </tbody>
Zhijun He41d6f042015-01-15 18:17:24 -080035485
35486 <!-- end of section -->
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035487 <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035488
35489
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035490 <tr><td colspan="7" class="kind">static</td></tr>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035491
35492 <thead class="entries_header">
35493 <tr>
35494 <th class="th_name">Property Name</th>
35495 <th class="th_type">Type</th>
35496 <th class="th_description">Description</th>
35497 <th class="th_units">Units</th>
35498 <th class="th_range">Range</th>
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035499 <th class="th_hal_version">Initial HIDL HAL version</th>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035500 <th class="th_tags">Tags</th>
35501 </tr>
35502 </thead>
35503
35504 <tbody>
35505
35506
35507
35508
35509
35510
35511
35512
35513
35514
35515 <tr class="entry" id="static_android.depth.maxDepthSamples">
35516 <td class="entry_name
35517 " rowspan="3">
35518 android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
35519 </td>
35520 <td class="entry_type">
35521 <span class="entry_type_name">int32</span>
35522
35523 <span class="entry_type_visibility"> [system]</span>
35524
35525
35526 <span class="entry_type_hwlevel">[limited] </span>
35527
35528
35529
35530
35531 </td> <!-- entry_type -->
35532
35533 <td class="entry_description">
35534 <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
35535 </td>
35536
35537 <td class="entry_units">
35538 </td>
35539
35540 <td class="entry_range">
35541 </td>
35542
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035543 <td class="entry_hal_version">
35544 <p>3.<wbr/>2</p>
35545 </td>
35546
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035547 <td class="entry_tags">
35548 <ul class="entry_tags">
35549 <li><a href="#tag_DEPTH">DEPTH</a></li>
35550 </ul>
35551 </td>
35552
35553 </tr>
35554 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035555 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035556 </tr>
35557 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035558 <td class="entry_details" colspan="6">
Eino-Ville Talvaladdda2bb2015-04-16 13:49:52 -070035559 <p>If a camera device supports outputting depth range data in the form of a depth point
35560cloud (<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
35561number of points an output buffer may contain.<wbr/></p>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035562<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
35563If output in the depth point cloud format is not supported,<wbr/> this entry will
35564not be defined.<wbr/></p>
35565 </td>
35566 </tr>
35567
35568
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035569 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035570 <!-- end of entry -->
35571
35572
35573 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
35574 <td class="entry_name
35575 " rowspan="3">
35576 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
35577 </td>
35578 <td class="entry_type">
35579 <span class="entry_type_name entry_type_name_enum">int32</span>
35580 <span class="entry_type_container">x</span>
35581
35582 <span class="entry_type_array">
35583 n x 4
35584 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070035585 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035586
35587
35588 <span class="entry_type_hwlevel">[limited] </span>
35589
35590
35591
35592 <ul class="entry_type_enum">
35593 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080035594 <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035595 </li>
35596 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080035597 <span class="entry_type_enum_name">INPUT (v3.2)</span>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035598 </li>
35599 </ul>
35600
35601 </td> <!-- entry_type -->
35602
35603 <td class="entry_description">
35604 <p>The available depth dataspace stream
35605configurations that this camera device supports
35606(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
35607 </td>
35608
35609 <td class="entry_units">
35610 </td>
35611
35612 <td class="entry_range">
35613 </td>
35614
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035615 <td class="entry_hal_version">
35616 <p>3.<wbr/>2</p>
35617 </td>
35618
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035619 <td class="entry_tags">
35620 <ul class="entry_tags">
35621 <li><a href="#tag_DEPTH">DEPTH</a></li>
35622 </ul>
35623 </td>
35624
35625 </tr>
35626 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035627 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035628 </tr>
35629 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035630 <td class="entry_details" colspan="6">
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035631 <p>These are output stream configurations for use with
35632dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
35633listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
35634<p>Only devices that support depth output for at least
35635the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
35636this entry.<wbr/></p>
35637<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
35638sparse depth point cloud must report a single entry for
35639the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
35640<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
35641the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
35642 </td>
35643 </tr>
35644
35645
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035646 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035647 <!-- end of entry -->
35648
35649
35650 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
35651 <td class="entry_name
35652 " rowspan="3">
35653 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
35654 </td>
35655 <td class="entry_type">
35656 <span class="entry_type_name">int64</span>
35657 <span class="entry_type_container">x</span>
35658
35659 <span class="entry_type_array">
35660 4 x n
35661 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070035662 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035663
35664
35665 <span class="entry_type_hwlevel">[limited] </span>
35666
35667
35668
35669
35670 </td> <!-- entry_type -->
35671
35672 <td class="entry_description">
35673 <p>This lists the minimum frame duration for each
35674format/<wbr/>size combination for depth output formats.<wbr/></p>
35675 </td>
35676
35677 <td class="entry_units">
35678 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
35679 </td>
35680
35681 <td class="entry_range">
35682 </td>
35683
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035684 <td class="entry_hal_version">
35685 <p>3.<wbr/>2</p>
35686 </td>
35687
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035688 <td class="entry_tags">
35689 <ul class="entry_tags">
35690 <li><a href="#tag_DEPTH">DEPTH</a></li>
35691 </ul>
35692 </td>
35693
35694 </tr>
35695 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035696 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035697 </tr>
35698 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035699 <td class="entry_details" colspan="6">
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035700 <p>This should correspond to the frame duration when only that
35701stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
35702set to either OFF or FAST.<wbr/></p>
35703<p>When multiple streams are used in a request,<wbr/> the minimum frame
35704duration will be max(individual stream min durations).<wbr/></p>
35705<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
35706is the same regardless of whether the stream is input or output.<wbr/></p>
35707<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
35708<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
35709calculating the max frame rate.<wbr/></p>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035710 </td>
35711 </tr>
35712
35713
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035714 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035715 <!-- end of entry -->
35716
35717
35718 <tr class="entry" id="static_android.depth.availableDepthStallDurations">
35719 <td class="entry_name
35720 " rowspan="3">
35721 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
35722 </td>
35723 <td class="entry_type">
35724 <span class="entry_type_name">int64</span>
35725 <span class="entry_type_container">x</span>
35726
35727 <span class="entry_type_array">
35728 4 x n
35729 </span>
Yin-Chia Yehc6c24162016-04-02 16:30:30 -070035730 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035731
35732
35733 <span class="entry_type_hwlevel">[limited] </span>
35734
35735
35736
35737
35738 </td> <!-- entry_type -->
35739
35740 <td class="entry_description">
35741 <p>This lists the maximum stall duration for each
Zhijun He51379152015-04-24 17:59:50 -070035742output format/<wbr/>size combination for depth streams.<wbr/></p>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035743 </td>
35744
35745 <td class="entry_units">
35746 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
35747 </td>
35748
35749 <td class="entry_range">
35750 </td>
35751
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035752 <td class="entry_hal_version">
35753 <p>3.<wbr/>2</p>
35754 </td>
35755
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035756 <td class="entry_tags">
35757 <ul class="entry_tags">
35758 <li><a href="#tag_DEPTH">DEPTH</a></li>
35759 </ul>
35760 </td>
35761
35762 </tr>
35763 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035764 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035765 </tr>
35766 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035767 <td class="entry_details" colspan="6">
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035768 <p>A stall duration is how much extra time would get added
35769to the normal minimum frame duration for a repeating request
35770that has streams with non-zero stall.<wbr/></p>
35771<p>This functions similarly to
35772<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
35773streams.<wbr/></p>
35774<p>All depth output stream formats may have a nonzero stall
35775duration.<wbr/></p>
35776 </td>
35777 </tr>
35778
35779
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035780 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080035781 <!-- end of entry -->
35782
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070035783
35784 <tr class="entry" id="static_android.depth.depthIsExclusive">
35785 <td class="entry_name
35786 " rowspan="3">
35787 android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
35788 </td>
35789 <td class="entry_type">
35790 <span class="entry_type_name entry_type_name_enum">byte</span>
35791
35792 <span class="entry_type_visibility"> [public as boolean]</span>
35793
35794
35795 <span class="entry_type_hwlevel">[limited] </span>
35796
35797
35798
35799 <ul class="entry_type_enum">
35800 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080035801 <span class="entry_type_enum_name">FALSE (v3.2)</span>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070035802 </li>
35803 <li>
Eino-Ville Talvala63674ff2017-12-07 13:06:05 -080035804 <span class="entry_type_enum_name">TRUE (v3.2)</span>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070035805 </li>
35806 </ul>
35807
35808 </td> <!-- entry_type -->
35809
35810 <td class="entry_description">
35811 <p>Indicates whether a capture request may target both a
35812DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
35813YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
35814 </td>
35815
35816 <td class="entry_units">
35817 </td>
35818
35819 <td class="entry_range">
35820 </td>
35821
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035822 <td class="entry_hal_version">
35823 <p>3.<wbr/>2</p>
35824 </td>
35825
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070035826 <td class="entry_tags">
35827 </td>
35828
35829 </tr>
35830 <tr class="entries_header">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035831 <th class="th_details" colspan="6">Details</th>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070035832 </tr>
35833 <tr class="entry_cont">
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035834 <td class="entry_details" colspan="6">
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070035835 <p>If TRUE,<wbr/> including both depth and color outputs in a single
35836capture request is not supported.<wbr/> An application must interleave color
35837and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
35838of output.<wbr/></p>
35839<p>Typically,<wbr/> this restriction exists on camera devices that
35840need to emit a specific pattern or wavelength of light to
35841measure depth values,<wbr/> which causes the color image to be
35842corrupted during depth measurement.<wbr/></p>
35843 </td>
35844 </tr>
35845
35846
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080035847 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
Eino-Ville Talvala8f0d2d12015-04-13 17:28:29 -070035848 <!-- end of entry -->
35849
Emilian Peev9c7b5d32018-09-18 14:01:55 +010035850
35851 <tr class="entry" id="static_android.depth.availableRecommendedDepthStreamConfigurations">
35852 <td class="entry_name
35853 " rowspan="5">
35854 android.<wbr/>depth.<wbr/>available<wbr/>Recommended<wbr/>Depth<wbr/>Stream<wbr/>Configurations
35855 </td>
35856 <td class="entry_type">
35857 <span class="entry_type_name">int32</span>
35858 <span class="entry_type_container">x</span>
35859
35860 <span class="entry_type_array">
35861 n x 5
35862 </span>
35863 <span class="entry_type_visibility"> [ndk_public as recommendedStreamConfiguration]</span>
35864
35865
35866
35867
35868
35869
35870 </td> <!-- entry_type -->
35871
35872 <td class="entry_description">
35873 <p>Recommended depth stream configurations for common client use cases.<wbr/></p>
35874 </td>
35875
35876 <td class="entry_units">
35877 </td>
35878
35879 <td class="entry_range">
35880 </td>
35881
35882 <td class="entry_hal_version">
35883 <p>3.<wbr/>4</p>
35884 </td>
35885
35886 <td class="entry_tags">
35887 </td>
35888
35889 </tr>
35890 <tr class="entries_header">
35891 <th class="th_details" colspan="6">Details</th>
35892 </tr>
35893 <tr class="entry_cont">
35894 <td class="entry_details" colspan="6">
35895 <p>Optional subset of the <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a> that
35896contains similar tuples listed as
35897(i.<wbr/>e.<wbr/> width,<wbr/> height,<wbr/> format,<wbr/> output/<wbr/>input stream,<wbr/> usecase bit field).<wbr/>
35898Camera devices will be able to suggest particular depth stream configurations which are
35899power and performance efficient for specific use cases.<wbr/> For more information about
35900retrieving the suggestions see
35901<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getRecommendedStreamConfigurationMap">CameraCharacteristics#getRecommendedStreamConfigurationMap</a>.<wbr/></p>
35902 </td>
35903 </tr>
35904
35905 <tr class="entries_header">
35906 <th class="th_details" colspan="6">HAL Implementation Details</th>
35907 </tr>
35908 <tr class="entry_cont">
35909 <td class="entry_details" colspan="6">
35910 <p>Recommended depth configurations are expected to be declared with SNAPSHOT and/<wbr/>or
35911ZSL if supported by the device.<wbr/>
35912For additional details on how to declare recommended stream configurations,<wbr/> check
35913<a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Recommended<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
35914For additional requirements on depth streams please consider
35915<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p>
35916 </td>
35917 </tr>
35918
35919 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
35920 <!-- end of entry -->
35921
Emilian Peev65860e42019-01-04 17:49:37 +000035922
35923 <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurations">
35924 <td class="entry_name
35925 " rowspan="5">
35926 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations
35927 </td>
35928 <td class="entry_type">
35929 <span class="entry_type_name entry_type_name_enum">int32</span>
35930 <span class="entry_type_container">x</span>
35931
35932 <span class="entry_type_array">
35933 n x 4
35934 </span>
35935 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
35936
35937
35938
35939
35940
35941 <ul class="entry_type_enum">
35942 <li>
35943 <span class="entry_type_enum_name">OUTPUT (v3.4)</span>
35944 </li>
35945 <li>
35946 <span class="entry_type_enum_name">INPUT (v3.4)</span>
35947 </li>
35948 </ul>
35949
35950 </td> <!-- entry_type -->
35951
35952 <td class="entry_description">
35953 <p>The available dynamic depth dataspace stream
35954configurations that this camera device supports
35955(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
35956 </td>
35957
35958 <td class="entry_units">
35959 </td>
35960
35961 <td class="entry_range">
35962 </td>
35963
35964 <td class="entry_hal_version">
35965 <p>3.<wbr/>4</p>
35966 </td>
35967
35968 <td class="entry_tags">
35969 <ul class="entry_tags">
35970 <li><a href="#tag_DEPTH">DEPTH</a></li>
35971 </ul>
35972 </td>
35973
35974 </tr>
35975 <tr class="entries_header">
35976 <th class="th_details" colspan="6">Details</th>
35977 </tr>
35978 <tr class="entry_cont">
35979 <td class="entry_details" colspan="6">
35980 <p>These are output stream configurations for use with
35981dataSpace DYNAMIC_<wbr/>DEPTH.<wbr/> The configurations are
35982listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
35983<p>Only devices that support depth output for at least
35984the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map along with
35985HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB with the same size or size with
35986the same aspect ratio can have dynamic depth dataspace
35987stream configuration.<wbr/> <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> also
35988needs to be set to FALSE.<wbr/></p>
35989 </td>
35990 </tr>
35991
35992 <tr class="entries_header">
35993 <th class="th_details" colspan="6">HAL Implementation Details</th>
35994 </tr>
35995 <tr class="entry_cont">
35996 <td class="entry_details" colspan="6">
35997 <p>Do not set this property directly.<wbr/>
35998It is populated by camera framework and must not be set
35999at the HAL layer.<wbr/></p>
36000 </td>
36001 </tr>
36002
36003 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36004 <!-- end of entry -->
36005
36006
36007 <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurations">
36008 <td class="entry_name
36009 " rowspan="5">
36010 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
36011 </td>
36012 <td class="entry_type">
36013 <span class="entry_type_name">int64</span>
36014 <span class="entry_type_container">x</span>
36015
36016 <span class="entry_type_array">
36017 4 x n
36018 </span>
36019 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36020
36021
36022
36023
36024
36025
36026 </td> <!-- entry_type -->
36027
36028 <td class="entry_description">
36029 <p>This lists the minimum frame duration for each
36030format/<wbr/>size combination for dynamic depth output streams.<wbr/></p>
36031 </td>
36032
36033 <td class="entry_units">
36034 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36035 </td>
36036
36037 <td class="entry_range">
36038 </td>
36039
36040 <td class="entry_hal_version">
36041 <p>3.<wbr/>4</p>
36042 </td>
36043
36044 <td class="entry_tags">
36045 <ul class="entry_tags">
36046 <li><a href="#tag_DEPTH">DEPTH</a></li>
36047 </ul>
36048 </td>
36049
36050 </tr>
36051 <tr class="entries_header">
36052 <th class="th_details" colspan="6">Details</th>
36053 </tr>
36054 <tr class="entry_cont">
36055 <td class="entry_details" colspan="6">
36056 <p>This should correspond to the frame duration when only that
36057stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
36058set to either OFF or FAST.<wbr/></p>
36059<p>When multiple streams are used in a request,<wbr/> the minimum frame
36060duration will be max(individual stream min durations).<wbr/></p>
36061<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
36062is the same regardless of whether the stream is input or output.<wbr/></p>
36063 </td>
36064 </tr>
36065
36066 <tr class="entries_header">
36067 <th class="th_details" colspan="6">HAL Implementation Details</th>
36068 </tr>
36069 <tr class="entry_cont">
36070 <td class="entry_details" colspan="6">
36071 <p>Do not set this property directly.<wbr/>
36072It is populated by camera framework and must not be set
36073at the HAL layer.<wbr/></p>
36074 </td>
36075 </tr>
36076
36077 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36078 <!-- end of entry -->
36079
36080
36081 <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurations">
36082 <td class="entry_name
36083 " rowspan="5">
36084 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations
36085 </td>
36086 <td class="entry_type">
36087 <span class="entry_type_name">int64</span>
36088 <span class="entry_type_container">x</span>
36089
36090 <span class="entry_type_array">
36091 4 x n
36092 </span>
36093 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36094
36095
36096
36097
36098
36099
36100 </td> <!-- entry_type -->
36101
36102 <td class="entry_description">
36103 <p>This lists the maximum stall duration for each
36104output format/<wbr/>size combination for dynamic depth streams.<wbr/></p>
36105 </td>
36106
36107 <td class="entry_units">
36108 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36109 </td>
36110
36111 <td class="entry_range">
36112 </td>
36113
36114 <td class="entry_hal_version">
36115 <p>3.<wbr/>4</p>
36116 </td>
36117
36118 <td class="entry_tags">
36119 <ul class="entry_tags">
36120 <li><a href="#tag_DEPTH">DEPTH</a></li>
36121 </ul>
36122 </td>
36123
36124 </tr>
36125 <tr class="entries_header">
36126 <th class="th_details" colspan="6">Details</th>
36127 </tr>
36128 <tr class="entry_cont">
36129 <td class="entry_details" colspan="6">
36130 <p>A stall duration is how much extra time would get added
36131to the normal minimum frame duration for a repeating request
36132that has streams with non-zero stall.<wbr/></p>
36133<p>All dynamic depth output streams may have a nonzero stall
36134duration.<wbr/></p>
36135 </td>
36136 </tr>
36137
36138 <tr class="entries_header">
36139 <th class="th_details" colspan="6">HAL Implementation Details</th>
36140 </tr>
36141 <tr class="entry_cont">
36142 <td class="entry_details" colspan="6">
36143 <p>Do not set this property directly.<wbr/>
36144It is populated by camera framework and must not be set
36145at the HAL layer.<wbr/></p>
36146 </td>
36147 </tr>
36148
36149 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36150 <!-- end of entry -->
36151
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080036152
36153 <tr class="entry" id="static_android.depth.availableDepthStreamConfigurationsMaximumResolution">
36154 <td class="entry_name
36155 " rowspan="3">
36156 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
36157 </td>
36158 <td class="entry_type">
36159 <span class="entry_type_name entry_type_name_enum">int32</span>
36160 <span class="entry_type_container">x</span>
36161
36162 <span class="entry_type_array">
36163 n x 4
36164 </span>
36165 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
36166
36167
36168
36169
36170
36171 <ul class="entry_type_enum">
36172 <li>
36173 <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
36174 </li>
36175 <li>
36176 <span class="entry_type_enum_name">INPUT (v3.6)</span>
36177 </li>
36178 </ul>
36179
36180 </td> <!-- entry_type -->
36181
36182 <td class="entry_description">
36183 <p>The available depth dataspace stream
36184configurations that this camera device supports
36185(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream) when a CaptureRequest is submitted with
36186<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
36187<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36188 </td>
36189
36190 <td class="entry_units">
36191 </td>
36192
36193 <td class="entry_range">
36194 </td>
36195
36196 <td class="entry_hal_version">
36197 <p>3.<wbr/>6</p>
36198 </td>
36199
36200 <td class="entry_tags">
36201 <ul class="entry_tags">
36202 <li><a href="#tag_DEPTH">DEPTH</a></li>
36203 </ul>
36204 </td>
36205
36206 </tr>
36207 <tr class="entries_header">
36208 <th class="th_details" colspan="6">Details</th>
36209 </tr>
36210 <tr class="entry_cont">
36211 <td class="entry_details" colspan="6">
36212 <p>Analogous to <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations which
36213are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36214<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36215 </td>
36216 </tr>
36217
36218
36219 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36220 <!-- end of entry -->
36221
36222
36223 <tr class="entry" id="static_android.depth.availableDepthMinFrameDurationsMaximumResolution">
36224 <td class="entry_name
36225 " rowspan="3">
36226 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
36227 </td>
36228 <td class="entry_type">
36229 <span class="entry_type_name">int64</span>
36230 <span class="entry_type_container">x</span>
36231
36232 <span class="entry_type_array">
36233 4 x n
36234 </span>
36235 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36236
36237
36238
36239
36240
36241
36242 </td> <!-- entry_type -->
36243
36244 <td class="entry_description">
36245 <p>This lists the minimum frame duration for each
36246format/<wbr/>size combination for depth output formats when a CaptureRequest is submitted with
36247<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> set to
36248<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36249 </td>
36250
36251 <td class="entry_units">
36252 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36253 </td>
36254
36255 <td class="entry_range">
36256 </td>
36257
36258 <td class="entry_hal_version">
36259 <p>3.<wbr/>6</p>
36260 </td>
36261
36262 <td class="entry_tags">
36263 <ul class="entry_tags">
36264 <li><a href="#tag_DEPTH">DEPTH</a></li>
36265 </ul>
36266 </td>
36267
36268 </tr>
36269 <tr class="entries_header">
36270 <th class="th_details" colspan="6">Details</th>
36271 </tr>
36272 <tr class="entry_cont">
36273 <td class="entry_details" colspan="6">
36274 <p>Analogous to <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations which
36275are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36276<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36277<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
36278<a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution</a> for more details about
36279calculating the max frame rate.<wbr/></p>
36280 </td>
36281 </tr>
36282
36283
36284 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36285 <!-- end of entry -->
36286
36287
36288 <tr class="entry" id="static_android.depth.availableDepthStallDurationsMaximumResolution">
36289 <td class="entry_name
36290 " rowspan="3">
36291 android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
36292 </td>
36293 <td class="entry_type">
36294 <span class="entry_type_name">int64</span>
36295 <span class="entry_type_container">x</span>
36296
36297 <span class="entry_type_array">
36298 4 x n
36299 </span>
36300 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36301
36302
36303
36304
36305
36306
36307 </td> <!-- entry_type -->
36308
36309 <td class="entry_description">
36310 <p>This lists the maximum stall duration for each
36311output format/<wbr/>size combination for depth streams for CaptureRequests where
36312<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36313<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36314 </td>
36315
36316 <td class="entry_units">
36317 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36318 </td>
36319
36320 <td class="entry_range">
36321 </td>
36322
36323 <td class="entry_hal_version">
36324 <p>3.<wbr/>6</p>
36325 </td>
36326
36327 <td class="entry_tags">
36328 <ul class="entry_tags">
36329 <li><a href="#tag_DEPTH">DEPTH</a></li>
36330 </ul>
36331 </td>
36332
36333 </tr>
36334 <tr class="entries_header">
36335 <th class="th_details" colspan="6">Details</th>
36336 </tr>
36337 <tr class="entry_cont">
36338 <td class="entry_details" colspan="6">
36339 <p>Analogous to <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a>,<wbr/> for configurations which
36340are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36341<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36342 </td>
36343 </tr>
36344
36345
36346 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36347 <!-- end of entry -->
36348
36349
36350 <tr class="entry" id="static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">
36351 <td class="entry_name
36352 " rowspan="5">
36353 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
36354 </td>
36355 <td class="entry_type">
36356 <span class="entry_type_name entry_type_name_enum">int32</span>
36357 <span class="entry_type_container">x</span>
36358
36359 <span class="entry_type_array">
36360 n x 4
36361 </span>
36362 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
36363
36364
36365
36366
36367
36368 <ul class="entry_type_enum">
36369 <li>
36370 <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
36371 </li>
36372 <li>
36373 <span class="entry_type_enum_name">INPUT (v3.6)</span>
36374 </li>
36375 </ul>
36376
36377 </td> <!-- entry_type -->
36378
36379 <td class="entry_description">
36380 <p>The available dynamic depth dataspace stream
36381configurations that this camera device supports (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/>
36382output/<wbr/>input stream) for CaptureRequests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36383<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36384 </td>
36385
36386 <td class="entry_units">
36387 </td>
36388
36389 <td class="entry_range">
36390 </td>
36391
36392 <td class="entry_hal_version">
36393 <p>3.<wbr/>6</p>
36394 </td>
36395
36396 <td class="entry_tags">
36397 <ul class="entry_tags">
36398 <li><a href="#tag_DEPTH">DEPTH</a></li>
36399 </ul>
36400 </td>
36401
36402 </tr>
36403 <tr class="entries_header">
36404 <th class="th_details" colspan="6">Details</th>
36405 </tr>
36406 <tr class="entry_cont">
36407 <td class="entry_details" colspan="6">
36408 <p>Analogous to <a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/> for configurations
36409which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36410<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36411 </td>
36412 </tr>
36413
36414 <tr class="entries_header">
36415 <th class="th_details" colspan="6">HAL Implementation Details</th>
36416 </tr>
36417 <tr class="entry_cont">
36418 <td class="entry_details" colspan="6">
36419 <p>Do not set this property directly.<wbr/>
36420It is populated by camera framework and must not be set
36421at the HAL layer.<wbr/></p>
36422 </td>
36423 </tr>
36424
36425 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36426 <!-- end of entry -->
36427
36428
36429 <tr class="entry" id="static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">
36430 <td class="entry_name
36431 " rowspan="5">
36432 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
36433 </td>
36434 <td class="entry_type">
36435 <span class="entry_type_name">int64</span>
36436 <span class="entry_type_container">x</span>
36437
36438 <span class="entry_type_array">
36439 4 x n
36440 </span>
36441 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36442
36443
36444
36445
36446
36447
36448 </td> <!-- entry_type -->
36449
36450 <td class="entry_description">
36451 <p>This lists the minimum frame duration for each
36452format/<wbr/>size combination for dynamic depth output streams for CaptureRequests where
36453<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36454<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36455 </td>
36456
36457 <td class="entry_units">
36458 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36459 </td>
36460
36461 <td class="entry_range">
36462 </td>
36463
36464 <td class="entry_hal_version">
36465 <p>3.<wbr/>6</p>
36466 </td>
36467
36468 <td class="entry_tags">
36469 <ul class="entry_tags">
36470 <li><a href="#tag_DEPTH">DEPTH</a></li>
36471 </ul>
36472 </td>
36473
36474 </tr>
36475 <tr class="entries_header">
36476 <th class="th_details" colspan="6">Details</th>
36477 </tr>
36478 <tr class="entry_cont">
36479 <td class="entry_details" colspan="6">
36480 <p>Analogous to <a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/> for configurations
36481which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36482<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36483 </td>
36484 </tr>
36485
36486 <tr class="entries_header">
36487 <th class="th_details" colspan="6">HAL Implementation Details</th>
36488 </tr>
36489 <tr class="entry_cont">
36490 <td class="entry_details" colspan="6">
36491 <p>Do not set this property directly.<wbr/>
36492It is populated by camera framework and must not be set
36493at the HAL layer.<wbr/></p>
36494 </td>
36495 </tr>
36496
36497 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36498 <!-- end of entry -->
36499
36500
36501 <tr class="entry" id="static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">
36502 <td class="entry_name
36503 " rowspan="5">
36504 android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
36505 </td>
36506 <td class="entry_type">
36507 <span class="entry_type_name">int64</span>
36508 <span class="entry_type_container">x</span>
36509
36510 <span class="entry_type_array">
36511 4 x n
36512 </span>
36513 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
36514
36515
36516
36517
36518
36519
36520 </td> <!-- entry_type -->
36521
36522 <td class="entry_description">
36523 <p>This lists the maximum stall duration for each
36524output format/<wbr/>size combination for dynamic depth streams for CaptureRequests where
36525<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36526<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36527 </td>
36528
36529 <td class="entry_units">
36530 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
36531 </td>
36532
36533 <td class="entry_range">
36534 </td>
36535
36536 <td class="entry_hal_version">
36537 <p>3.<wbr/>6</p>
36538 </td>
36539
36540 <td class="entry_tags">
36541 <ul class="entry_tags">
36542 <li><a href="#tag_DEPTH">DEPTH</a></li>
36543 </ul>
36544 </td>
36545
36546 </tr>
36547 <tr class="entries_header">
36548 <th class="th_details" colspan="6">Details</th>
36549 </tr>
36550 <tr class="entry_cont">
36551 <td class="entry_details" colspan="6">
36552 <p>Analogous to <a href="#static_android.depth.availableDynamicDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Dynamic<wbr/>Depth<wbr/>Stall<wbr/>Durations</a>,<wbr/> for configurations
36553which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
36554<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
36555 </td>
36556 </tr>
36557
36558 <tr class="entries_header">
36559 <th class="th_details" colspan="6">HAL Implementation Details</th>
36560 </tr>
36561 <tr class="entry_cont">
36562 <td class="entry_details" colspan="6">
36563 <p>Do not set this property directly.<wbr/>
36564It is populated by camera framework and must not be set
36565at the HAL layer.<wbr/></p>
36566 </td>
36567 </tr>
36568
36569 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36570 <!-- end of entry -->
36571
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080036572
36573
36574 <!-- end of kind -->
36575 </tbody>
36576
36577 <!-- end of section -->
Shuzhen Wang0144f582017-11-30 12:03:37 -080036578 <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
36579
36580
36581 <tr><td colspan="7" class="kind">static</td></tr>
36582
36583 <thead class="entries_header">
36584 <tr>
36585 <th class="th_name">Property Name</th>
36586 <th class="th_type">Type</th>
36587 <th class="th_description">Description</th>
36588 <th class="th_units">Units</th>
36589 <th class="th_range">Range</th>
36590 <th class="th_hal_version">Initial HIDL HAL version</th>
36591 <th class="th_tags">Tags</th>
36592 </tr>
36593 </thead>
36594
36595 <tbody>
36596
36597
36598
36599
36600
36601
36602
36603
36604
36605
36606 <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
36607 <td class="entry_name
36608 " rowspan="3">
36609 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
36610 </td>
36611 <td class="entry_type">
36612 <span class="entry_type_name">byte</span>
36613 <span class="entry_type_container">x</span>
36614
36615 <span class="entry_type_array">
36616 n
36617 </span>
Shuzhen Wang284ccc92018-12-07 17:50:58 -080036618 <span class="entry_type_visibility"> [ndk_public]</span>
Shuzhen Wang0144f582017-11-30 12:03:37 -080036619
36620
36621 <span class="entry_type_hwlevel">[limited] </span>
36622
36623
36624
36625
36626 </td> <!-- entry_type -->
36627
36628 <td class="entry_description">
36629 <p>String containing the ids of the underlying physical cameras.<wbr/></p>
36630 </td>
36631
36632 <td class="entry_units">
36633 UTF-8 null-terminated string
36634 </td>
36635
36636 <td class="entry_range">
36637 </td>
36638
36639 <td class="entry_hal_version">
36640 <p>3.<wbr/>3</p>
36641 </td>
36642
36643 <td class="entry_tags">
36644 <ul class="entry_tags">
36645 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
36646 </ul>
36647 </td>
36648
36649 </tr>
36650 <tr class="entries_header">
36651 <th class="th_details" colspan="6">Details</th>
36652 </tr>
36653 <tr class="entry_cont">
36654 <td class="entry_details" colspan="6">
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080036655 <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera IDs.<wbr/>
36656The null terminator for physical camera ID must be preserved so that the whole string
36657can be tokenized using '\0' to generate list of physical camera IDs.<wbr/></p>
36658<p>For example,<wbr/> if the physical camera IDs of the logical camera are "2" and "3",<wbr/> the
Shuzhen Wang0144f582017-11-30 12:03:37 -080036659value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080036660<p>The number of physical camera IDs must be no less than 2.<wbr/></p>
Shuzhen Wang0144f582017-11-30 12:03:37 -080036661 </td>
36662 </tr>
36663
36664
36665 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36666 <!-- end of entry -->
36667
36668
36669 <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
36670 <td class="entry_name
36671 " rowspan="3">
36672 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
36673 </td>
36674 <td class="entry_type">
36675 <span class="entry_type_name entry_type_name_enum">byte</span>
36676
36677 <span class="entry_type_visibility"> [public]</span>
36678
36679
36680 <span class="entry_type_hwlevel">[limited] </span>
36681
36682
36683
36684 <ul class="entry_type_enum">
36685 <li>
36686 <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
36687 <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
36688the timestamp of an image from a physical stream is only an approximation of the
36689image sensor start-of-exposure time.<wbr/></p></span>
36690 </li>
36691 <li>
36692 <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
36693 <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
36694and the timestamp of a physical stream image accurately reflects its
36695start-of-exposure time.<wbr/></p></span>
36696 </li>
36697 </ul>
36698
36699 </td> <!-- entry_type -->
36700
36701 <td class="entry_description">
36702 <p>The accuracy of frame timestamp synchronization between physical cameras</p>
36703 </td>
36704
36705 <td class="entry_units">
36706 </td>
36707
36708 <td class="entry_range">
36709 </td>
36710
36711 <td class="entry_hal_version">
36712 <p>3.<wbr/>3</p>
36713 </td>
36714
36715 <td class="entry_tags">
36716 <ul class="entry_tags">
36717 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
36718 </ul>
36719 </td>
36720
36721 </tr>
36722 <tr class="entries_header">
36723 <th class="th_details" colspan="6">Details</th>
36724 </tr>
36725 <tr class="entry_cont">
36726 <td class="entry_details" colspan="6">
36727 <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
Eino-Ville Talvala54960fa2020-06-19 13:50:40 -070036728ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/> the
36729physical camera sensors usually run in leader/<wbr/>follower mode where one sensor generates a
36730timing signal for the other,<wbr/> so that their shutter time is synchronized.<wbr/> For APPROXIMATE
36731sensorSyncType,<wbr/> the camera sensors usually run in leader/<wbr/>leader mode,<wbr/> where both sensors
36732use their own timing generator,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
Shuzhen Wang0144f582017-11-30 12:03:37 -080036733<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
36734timestamps,<wbr/> so that they can be used to look up the matching frame number and
36735onCaptureStarted callback.<wbr/></p>
Shuzhen Wang648774d2019-03-07 08:38:51 -080036736<p>This tag is only applicable if the logical camera device supports concurrent physical
36737streams from different physical cameras.<wbr/></p>
Shuzhen Wang0144f582017-11-30 12:03:37 -080036738 </td>
36739 </tr>
36740
36741
36742 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36743 <!-- end of entry -->
36744
36745
36746
36747 <!-- end of kind -->
36748 </tbody>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080036749 <tr><td colspan="7" class="kind">dynamic</td></tr>
36750
36751 <thead class="entries_header">
36752 <tr>
36753 <th class="th_name">Property Name</th>
36754 <th class="th_type">Type</th>
36755 <th class="th_description">Description</th>
36756 <th class="th_units">Units</th>
36757 <th class="th_range">Range</th>
36758 <th class="th_hal_version">Initial HIDL HAL version</th>
36759 <th class="th_tags">Tags</th>
36760 </tr>
36761 </thead>
36762
36763 <tbody>
36764
36765
36766
36767
36768
36769
36770
36771
36772
36773
36774 <tr class="entry" id="dynamic_android.logicalMultiCamera.activePhysicalId">
36775 <td class="entry_name
36776 " rowspan="5">
36777 android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>active<wbr/>Physical<wbr/>Id
36778 </td>
36779 <td class="entry_type">
36780 <span class="entry_type_name">byte</span>
36781
36782 <span class="entry_type_visibility"> [public as string]</span>
36783
36784
36785
36786
36787
36788
36789 </td> <!-- entry_type -->
36790
36791 <td class="entry_description">
36792 <p>String containing the ID of the underlying active physical camera.<wbr/></p>
36793 </td>
36794
36795 <td class="entry_units">
36796 UTF-8 null-terminated string
36797 </td>
36798
36799 <td class="entry_range">
36800 </td>
36801
36802 <td class="entry_hal_version">
36803 <p>3.<wbr/>4</p>
36804 </td>
36805
36806 <td class="entry_tags">
36807 <ul class="entry_tags">
36808 <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
36809 </ul>
36810 </td>
36811
36812 </tr>
36813 <tr class="entries_header">
36814 <th class="th_details" colspan="6">Details</th>
36815 </tr>
36816 <tr class="entry_cont">
36817 <td class="entry_details" colspan="6">
36818 <p>The ID of the active physical camera that's backing the logical camera.<wbr/> All camera
36819streams and metadata that are not physical camera specific will be originating from this
Shuzhen Wangdcdd74b2019-02-27 08:25:42 -080036820physical camera.<wbr/></p>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080036821<p>For a logical camera made up of physical cameras where each camera's lenses have
36822different characteristics,<wbr/> the camera device may choose to switch between the physical
36823cameras when application changes FOCAL_<wbr/>LENGTH or SCALER_<wbr/>CROP_<wbr/>REGION.<wbr/>
36824At the time of lens switch,<wbr/> this result metadata reflects the new active physical camera
36825ID.<wbr/></p>
Shuzhen Wangdcdd74b2019-02-27 08:25:42 -080036826<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/>
36827When available,<wbr/> this must be one of valid physical IDs backing this logical multi-camera.<wbr/>
36828If this key is not available for a logical multi-camera,<wbr/> the camera device implementation
36829may still switch between different active physical cameras based on use case,<wbr/> but the
36830current active physical camera information won't be available to the application.<wbr/></p>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080036831 </td>
36832 </tr>
36833
36834 <tr class="entries_header">
36835 <th class="th_details" colspan="6">HAL Implementation Details</th>
36836 </tr>
36837 <tr class="entry_cont">
36838 <td class="entry_details" colspan="6">
36839 <p>Staring from HIDL ICameraDevice version 3.<wbr/>5,<wbr/> the tag must be available in the capture
36840result metadata to indicate current active physical camera ID.<wbr/></p>
36841 </td>
36842 </tr>
36843
36844 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36845 <!-- end of entry -->
36846
36847
36848
36849 <!-- end of kind -->
36850 </tbody>
Shuzhen Wang0144f582017-11-30 12:03:37 -080036851
36852 <!-- end of section -->
Eino-Ville Talvalad4c0fe32018-03-13 19:46:57 -070036853 <tr><td colspan="7" id="section_distortionCorrection" class="section">distortionCorrection</td></tr>
36854
36855
36856 <tr><td colspan="7" class="kind">controls</td></tr>
36857
36858 <thead class="entries_header">
36859 <tr>
36860 <th class="th_name">Property Name</th>
36861 <th class="th_type">Type</th>
36862 <th class="th_description">Description</th>
36863 <th class="th_units">Units</th>
36864 <th class="th_range">Range</th>
36865 <th class="th_hal_version">Initial HIDL HAL version</th>
36866 <th class="th_tags">Tags</th>
36867 </tr>
36868 </thead>
36869
36870 <tbody>
36871
36872
36873
36874
36875
36876
36877
36878
36879
36880
36881 <tr class="entry" id="controls_android.distortionCorrection.mode">
36882 <td class="entry_name
36883 " rowspan="3">
36884 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
36885 </td>
36886 <td class="entry_type">
36887 <span class="entry_type_name entry_type_name_enum">byte</span>
36888
36889 <span class="entry_type_visibility"> [public]</span>
36890
36891
36892
36893
36894
36895 <ul class="entry_type_enum">
36896 <li>
36897 <span class="entry_type_enum_name">OFF (v3.3)</span>
36898 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
36899 </li>
36900 <li>
36901 <span class="entry_type_enum_name">FAST (v3.3)</span>
36902 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
36903relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
36904reduce frame rate relative to sensor.<wbr/></p></span>
36905 </li>
36906 <li>
36907 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
36908 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
36909possibly reduced frame rate relative to sensor output.<wbr/></p></span>
36910 </li>
36911 </ul>
36912
36913 </td> <!-- entry_type -->
36914
36915 <td class="entry_description">
36916 <p>Mode of operation for the lens distortion correction block.<wbr/></p>
36917 </td>
36918
36919 <td class="entry_units">
36920 </td>
36921
36922 <td class="entry_range">
36923 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
36924 </td>
36925
36926 <td class="entry_hal_version">
36927 <p>3.<wbr/>3</p>
36928 </td>
36929
36930 <td class="entry_tags">
36931 </td>
36932
36933 </tr>
36934 <tr class="entries_header">
36935 <th class="th_details" colspan="6">Details</th>
36936 </tr>
36937 <tr class="entry_cont">
36938 <td class="entry_details" colspan="6">
36939 <p>The lens distortion correction block attempts to improve image quality by fixing
36940radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If
36941available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
36942<p>OFF means no distortion correction is done.<wbr/></p>
36943<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
36944applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
36945correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
36946will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
36947any correction at all would slow down capture rate.<wbr/> Every output stream will have a
36948similar amount of enhancement applied.<wbr/></p>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070036949<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is
36950not applied to any RAW output.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070036951<p>This control will be on by default on devices that support this control.<wbr/> Applications
36952disabling distortion correction need to pay extra attention with the coordinate system of
36953metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/>
36954metadata coordinates follow the coordinate system of
36955<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> When distortion is not OFF,<wbr/> metadata
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070036956coordinates follow the coordinate system of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> The
36957camera device will map these metadata fields to match the corrected image produced by the
36958camera device,<wbr/> for both capture requests and results.<wbr/> However,<wbr/> this mapping is not very
36959precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/> Only linear
36960scaling between the active array and precorrection active array coordinates is
36961performed.<wbr/> Applications that require precise correction of metadata need to undo that
36962linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's
36963own requirements.<wbr/></p>
36964<p>The full list of metadata that is affected in this way by distortion correction is:</p>
36965<ul>
36966<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
36967<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
36968<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
36969<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
36970<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
36971</ul>
Eino-Ville Talvalad4c0fe32018-03-13 19:46:57 -070036972 </td>
36973 </tr>
36974
36975
36976 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
36977 <!-- end of entry -->
36978
36979
36980
36981 <!-- end of kind -->
36982 </tbody>
36983 <tr><td colspan="7" class="kind">static</td></tr>
36984
36985 <thead class="entries_header">
36986 <tr>
36987 <th class="th_name">Property Name</th>
36988 <th class="th_type">Type</th>
36989 <th class="th_description">Description</th>
36990 <th class="th_units">Units</th>
36991 <th class="th_range">Range</th>
36992 <th class="th_hal_version">Initial HIDL HAL version</th>
36993 <th class="th_tags">Tags</th>
36994 </tr>
36995 </thead>
36996
36997 <tbody>
36998
36999
37000
37001
37002
37003
37004
37005
37006
37007
37008 <tr class="entry" id="static_android.distortionCorrection.availableModes">
37009 <td class="entry_name
37010 " rowspan="5">
37011 android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes
37012 </td>
37013 <td class="entry_type">
37014 <span class="entry_type_name">byte</span>
37015 <span class="entry_type_container">x</span>
37016
37017 <span class="entry_type_array">
37018 n
37019 </span>
37020 <span class="entry_type_visibility"> [public as enumList]</span>
37021
37022
37023
37024
37025 <div class="entry_type_notes">list of enums</div>
37026
37027
37028 </td> <!-- entry_type -->
37029
37030 <td class="entry_description">
37031 <p>List of distortion correction modes for <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> that are
37032supported by this camera device.<wbr/></p>
37033 </td>
37034
37035 <td class="entry_units">
37036 </td>
37037
37038 <td class="entry_range">
37039 <p>Any value listed in <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a></p>
37040 </td>
37041
37042 <td class="entry_hal_version">
37043 <p>3.<wbr/>3</p>
37044 </td>
37045
37046 <td class="entry_tags">
37047 <ul class="entry_tags">
37048 <li><a href="#tag_V1">V1</a></li>
37049 <li><a href="#tag_REPROC">REPROC</a></li>
37050 </ul>
37051 </td>
37052
37053 </tr>
37054 <tr class="entries_header">
37055 <th class="th_details" colspan="6">Details</th>
37056 </tr>
37057 <tr class="entry_cont">
37058 <td class="entry_details" colspan="6">
37059 <p>No device is required to support this API; such devices will always list only 'OFF'.<wbr/>
37060All devices that support this API will list both FAST and HIGH_<wbr/>QUALITY.<wbr/></p>
37061 </td>
37062 </tr>
37063
37064 <tr class="entries_header">
37065 <th class="th_details" colspan="6">HAL Implementation Details</th>
37066 </tr>
37067 <tr class="entry_cont">
37068 <td class="entry_details" colspan="6">
37069 <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if distortion correction is available
37070on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
37071That is,<wbr/> if the highest quality implementation on the camera device does not slow down
37072capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
37073 </td>
37074 </tr>
37075
37076 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37077 <!-- end of entry -->
37078
37079
37080
37081 <!-- end of kind -->
37082 </tbody>
37083 <tr><td colspan="7" class="kind">dynamic</td></tr>
37084
37085 <thead class="entries_header">
37086 <tr>
37087 <th class="th_name">Property Name</th>
37088 <th class="th_type">Type</th>
37089 <th class="th_description">Description</th>
37090 <th class="th_units">Units</th>
37091 <th class="th_range">Range</th>
37092 <th class="th_hal_version">Initial HIDL HAL version</th>
37093 <th class="th_tags">Tags</th>
37094 </tr>
37095 </thead>
37096
37097 <tbody>
37098
37099
37100
37101
37102
37103
37104
37105
37106
37107
37108 <tr class="entry" id="dynamic_android.distortionCorrection.mode">
37109 <td class="entry_name
37110 " rowspan="3">
37111 android.<wbr/>distortion<wbr/>Correction.<wbr/>mode
37112 </td>
37113 <td class="entry_type">
37114 <span class="entry_type_name entry_type_name_enum">byte</span>
37115
37116 <span class="entry_type_visibility"> [public]</span>
37117
37118
37119
37120
37121
37122 <ul class="entry_type_enum">
37123 <li>
37124 <span class="entry_type_enum_name">OFF (v3.3)</span>
37125 <span class="entry_type_enum_notes"><p>No distortion correction is applied.<wbr/></p></span>
37126 </li>
37127 <li>
37128 <span class="entry_type_enum_name">FAST (v3.3)</span>
37129 <span class="entry_type_enum_notes"><p>Lens distortion correction is applied without reducing frame rate
37130relative to sensor output.<wbr/> It may be the same as OFF if distortion correction would
37131reduce frame rate relative to sensor.<wbr/></p></span>
37132 </li>
37133 <li>
37134 <span class="entry_type_enum_name">HIGH_QUALITY (v3.3)</span>
37135 <span class="entry_type_enum_notes"><p>High-quality distortion correction is applied,<wbr/> at the cost of
37136possibly reduced frame rate relative to sensor output.<wbr/></p></span>
37137 </li>
37138 </ul>
37139
37140 </td> <!-- entry_type -->
37141
37142 <td class="entry_description">
37143 <p>Mode of operation for the lens distortion correction block.<wbr/></p>
37144 </td>
37145
37146 <td class="entry_units">
37147 </td>
37148
37149 <td class="entry_range">
37150 <p><a href="#static_android.distortionCorrection.availableModes">android.<wbr/>distortion<wbr/>Correction.<wbr/>available<wbr/>Modes</a></p>
37151 </td>
37152
37153 <td class="entry_hal_version">
37154 <p>3.<wbr/>3</p>
37155 </td>
37156
37157 <td class="entry_tags">
37158 </td>
37159
37160 </tr>
37161 <tr class="entries_header">
37162 <th class="th_details" colspan="6">Details</th>
37163 </tr>
37164 <tr class="entry_cont">
37165 <td class="entry_details" colspan="6">
37166 <p>The lens distortion correction block attempts to improve image quality by fixing
37167radial,<wbr/> tangential,<wbr/> or other geometric aberrations in the camera device's optics.<wbr/> If
37168available,<wbr/> the <a href="#static_android.lens.distortion">android.<wbr/>lens.<wbr/>distortion</a> field documents the lens's distortion parameters.<wbr/></p>
37169<p>OFF means no distortion correction is done.<wbr/></p>
37170<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined distortion correction will be
37171applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will use the highest-quality
37172correction algorithms,<wbr/> even if it slows down capture rate.<wbr/> FAST means the camera device
37173will not slow down capture rate when applying correction.<wbr/> FAST may be the same as OFF if
37174any correction at all would slow down capture rate.<wbr/> Every output stream will have a
37175similar amount of enhancement applied.<wbr/></p>
Shuzhen Wangd594fba2018-09-27 15:50:01 -070037176<p>The correction only applies to processed outputs such as YUV,<wbr/> Y8,<wbr/> JPEG,<wbr/> or DEPTH16; it is
37177not applied to any RAW output.<wbr/></p>
Yin-Chia Yeh69bce262018-06-15 15:35:05 -070037178<p>This control will be on by default on devices that support this control.<wbr/> Applications
37179disabling distortion correction need to pay extra attention with the coordinate system of
37180metering regions,<wbr/> crop region,<wbr/> and face rectangles.<wbr/> When distortion correction is OFF,<wbr/>
37181metadata coordinates follow the coordinate system of
37182<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/> When distortion is not OFF,<wbr/> metadata
Eino-Ville Talvalad9721662018-08-01 15:26:26 -070037183coordinates follow the coordinate system of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/> The
37184camera device will map these metadata fields to match the corrected image produced by the
37185camera device,<wbr/> for both capture requests and results.<wbr/> However,<wbr/> this mapping is not very
37186precise,<wbr/> since rectangles do not generally map to rectangles when corrected.<wbr/> Only linear
37187scaling between the active array and precorrection active array coordinates is
37188performed.<wbr/> Applications that require precise correction of metadata need to undo that
37189linear scaling,<wbr/> and apply a more complete correction that takes into the account the app's
37190own requirements.<wbr/></p>
37191<p>The full list of metadata that is affected in this way by distortion correction is:</p>
37192<ul>
37193<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
37194<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
37195<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
37196<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
37197<li><a href="#dynamic_android.statistics.faces">android.<wbr/>statistics.<wbr/>faces</a></li>
37198</ul>
Eino-Ville Talvalad4c0fe32018-03-13 19:46:57 -070037199 </td>
37200 </tr>
37201
37202
37203 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37204 <!-- end of entry -->
37205
37206
37207
37208 <!-- end of kind -->
37209 </tbody>
37210
37211 <!-- end of section -->
Shuzhen Wanga44fd452018-12-28 18:50:53 -080037212 <tr><td colspan="7" id="section_heic" class="section">heic</td></tr>
37213
37214
37215 <tr><td colspan="7" class="kind">static</td></tr>
37216
37217 <thead class="entries_header">
37218 <tr>
37219 <th class="th_name">Property Name</th>
37220 <th class="th_type">Type</th>
37221 <th class="th_description">Description</th>
37222 <th class="th_units">Units</th>
37223 <th class="th_range">Range</th>
37224 <th class="th_hal_version">Initial HIDL HAL version</th>
37225 <th class="th_tags">Tags</th>
37226 </tr>
37227 </thead>
37228
37229 <tbody>
37230
37231
37232
37233
37234
37235
37236
37237
37238
37239
37240
37241
37242 <tr class="entry" id="static_android.heic.info.supported">
37243 <td class="entry_name
37244 " rowspan="3">
37245 android.<wbr/>heic.<wbr/>info.<wbr/>supported
37246 </td>
37247 <td class="entry_type">
37248 <span class="entry_type_name entry_type_name_enum">byte</span>
37249
37250 <span class="entry_type_visibility"> [system as boolean]</span>
37251
37252
37253 <span class="entry_type_hwlevel">[limited] </span>
37254
37255
37256
37257 <ul class="entry_type_enum">
37258 <li>
37259 <span class="entry_type_enum_name">FALSE (v3.4)</span>
37260 </li>
37261 <li>
37262 <span class="entry_type_enum_name">TRUE (v3.4)</span>
37263 </li>
37264 </ul>
37265
37266 </td> <!-- entry_type -->
37267
37268 <td class="entry_description">
37269 <p>Whether this camera device can support identical set of stream combinations
37270involving HEIC image format,<wbr/> compared to the
37271<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">table of combinations</a>
37272involving JPEG image format required for the device's hardware level and capabilities.<wbr/></p>
37273 </td>
37274
37275 <td class="entry_units">
37276 </td>
37277
37278 <td class="entry_range">
37279 </td>
37280
37281 <td class="entry_hal_version">
37282 <p>3.<wbr/>4</p>
37283 </td>
37284
37285 <td class="entry_tags">
37286 <ul class="entry_tags">
37287 <li><a href="#tag_HEIC">HEIC</a></li>
37288 </ul>
37289 </td>
37290
37291 </tr>
37292 <tr class="entries_header">
37293 <th class="th_details" colspan="6">Details</th>
37294 </tr>
37295 <tr class="entry_cont">
37296 <td class="entry_details" colspan="6">
37297 <p>All the static,<wbr/> control and dynamic metadata tags related to JPEG apply to HEIC formats
37298as well.<wbr/> For example,<wbr/> the same <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> and <a href="#controls_android.jpeg.quality">android.<wbr/>jpeg.<wbr/>quality</a> are
37299used to control the orientation and quality of the HEIC image.<wbr/> Configuring JPEG and
37300HEIC streams at the same time is not supported.<wbr/></p>
37301<p>If a camera device supports HEIC format (ISO/<wbr/>IEC 23008-12),<wbr/> not only does it
37302support the existing mandatory stream
37303<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">combinations</a>
37304required for the device's hardware level and capabilities,<wbr/> it also supports swapping
37305each JPEG stream with HEIC stream in all guaranteed combinations.<wbr/></p>
37306<p>For every HEIC stream configured by the application,<wbr/> the camera framework sets up 2
37307internal streams with camera HAL:</p>
37308<ul>
37309<li>A YUV_<wbr/>420_<wbr/>888 or IMPLEMENTATION_<wbr/>DEFINED HAL stream as input to HEIC or HEVC encoder.<wbr/></li>
37310<li>A BLOB stream with JPEG_<wbr/>APPS_<wbr/>SEGMENTS dataspace to extract application markers
37311including EXIF and thumbnail to be saved in HEIF container.<wbr/></li>
37312</ul>
37313<p>A camera device can output HEIC format to the application if and only if:</p>
37314<ul>
37315<li>The system contains a HEIC or HEVC encoder with constant quality mode,<wbr/> and</li>
37316<li>This tag is set to TRUE,<wbr/> meaning that camera HAL supports replacing JPEG streams in
37317all mandatory stream combinations with a [YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED stream +
37318JPEG_<wbr/>APPS_<wbr/>SEGMENT BLOB stream] combo.<wbr/></li>
37319</ul>
37320<p>As an example,<wbr/> if the camera device's hardware level is LIMITED,<wbr/> and it supports HEIC,<wbr/>
37321in addition to the required stream combinations,<wbr/> HAL must support below stream
37322combinations as well:</p>
37323<ul>
37324<li>IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
37325<li>PRIV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
37326<li>YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM + JPEG_<wbr/>SEGMENTS_<wbr/>BLOB,<wbr/></li>
37327<li>PRIV PREVIEW + YUV PREVIEW + IMPLEMENTATION_<wbr/>DEFINED/<wbr/>YUV_<wbr/>420_<wbr/>888 MAXIMUM +
37328JPEG_<wbr/>SEGMENTS_<wbr/>BLOB</li>
37329</ul>
37330<p>The selection logic between YUV_<wbr/>420_<wbr/>888 and IMPLEMENTATION_<wbr/>DEFINED for HAL internal
37331stream is as follows:</p>
37332<pre><code>if (HEIC encoder exists and supports the size) {
37333 use IMPLEMENTATION_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>IMAGE_<wbr/>ENCODER usage flag;
37334} else {
37335 //<wbr/> HVC encoder exists
37336 if (size is less than framework predefined tile size) {
37337 use IMPLEMENTATINO_<wbr/>DEFINED with GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>VIDEO_<wbr/>ENCODER usage flag;
37338 } else {
37339 use YUV_<wbr/>420_<wbr/>888;
37340 }
37341}
37342</code></pre>
37343 </td>
37344 </tr>
37345
37346
37347 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37348 <!-- end of entry -->
37349
37350
37351 <tr class="entry" id="static_android.heic.info.maxJpegAppSegmentsCount">
37352 <td class="entry_name
37353 " rowspan="3">
37354 android.<wbr/>heic.<wbr/>info.<wbr/>max<wbr/>Jpeg<wbr/>App<wbr/>Segments<wbr/>Count
37355 </td>
37356 <td class="entry_type">
37357 <span class="entry_type_name">byte</span>
37358
37359 <span class="entry_type_visibility"> [system]</span>
37360
37361
37362 <span class="entry_type_hwlevel">[limited] </span>
37363
37364
37365
37366
37367 </td> <!-- entry_type -->
37368
37369 <td class="entry_description">
37370 <p>The maximum number of Jpeg APP segments supported by the camera HAL device.<wbr/></p>
37371 </td>
37372
37373 <td class="entry_units">
37374 </td>
37375
37376 <td class="entry_range">
37377 </td>
37378
37379 <td class="entry_hal_version">
37380 <p>3.<wbr/>4</p>
37381 </td>
37382
37383 <td class="entry_tags">
37384 <ul class="entry_tags">
37385 <li><a href="#tag_HEIC">HEIC</a></li>
37386 </ul>
37387 </td>
37388
37389 </tr>
37390 <tr class="entries_header">
37391 <th class="th_details" colspan="6">Details</th>
37392 </tr>
37393 <tr class="entry_cont">
37394 <td class="entry_details" colspan="6">
37395 <p>The camera framework will use this value to derive the size of the BLOB buffer with
37396JPEG_<wbr/>APP_<wbr/>SEGMENTS dataspace,<wbr/> with each APP segment occupying at most 64K bytes.<wbr/> If the
37397value of this tag is n,<wbr/> the size of the framework allocated buffer will be:</p>
37398<pre><code>n * (2 + 0xFFFF) + sizeof(struct CameraBlob)
37399</code></pre>
37400<p>where 2 is number of bytes for APP marker,<wbr/> 0xFFFF is the maximum size per APP segment
37401(including segment size).<wbr/></p>
37402<p>The value of this tag must be at least 1,<wbr/> and APP1 marker (0xFFE1) segment must be the
37403first segment stored in the JPEG_<wbr/>APPS_<wbr/>SEGMENTS BLOB buffer.<wbr/> APP1 segment stores EXIF and
37404thumbnail.<wbr/></p>
37405<p>Since media encoder embeds the orientation in the metadata of the output image,<wbr/> to be
37406consistent between main image and thumbnail,<wbr/> camera HAL must not rotate the thumbnail
37407image data based on <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a>.<wbr/> The framework will write the orientation
37408into EXIF and HEIC container.<wbr/></p>
37409<p>APP1 segment is followed immediately by one or multiple APP2 segments,<wbr/> and APPn
37410segments.<wbr/> After the HAL fills and returns the JPEG_<wbr/>APP_<wbr/>SEGMENTS buffer,<wbr/> the camera
37411framework modifies the APP1 segment by filling in the EXIF tags that are related to
37412main image bitstream and the tags that can be derived from capture result metadata,<wbr/>
37413before saving them into the HEIC container.<wbr/></p>
37414<p>The value of this tag must not be more than 16.<wbr/></p>
37415 </td>
37416 </tr>
37417
37418
37419 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37420 <!-- end of entry -->
37421
37422
37423
37424
37425
37426 <tr class="entry" id="static_android.heic.availableHeicStreamConfigurations">
37427 <td class="entry_name
37428 " rowspan="5">
37429 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations
37430 </td>
37431 <td class="entry_type">
37432 <span class="entry_type_name entry_type_name_enum">int32</span>
37433 <span class="entry_type_container">x</span>
37434
37435 <span class="entry_type_array">
37436 n x 4
37437 </span>
37438 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
37439
37440
37441 <span class="entry_type_hwlevel">[limited] </span>
37442
37443
37444
37445 <ul class="entry_type_enum">
37446 <li>
37447 <span class="entry_type_enum_name">OUTPUT (v3.4)</span>
37448 </li>
37449 <li>
37450 <span class="entry_type_enum_name">INPUT (v3.4)</span>
37451 </li>
37452 </ul>
37453
37454 </td> <!-- entry_type -->
37455
37456 <td class="entry_description">
37457 <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream
37458configurations that this camera device supports
37459(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
37460 </td>
37461
37462 <td class="entry_units">
37463 </td>
37464
37465 <td class="entry_range">
37466 </td>
37467
37468 <td class="entry_hal_version">
37469 <p>3.<wbr/>4</p>
37470 </td>
37471
37472 <td class="entry_tags">
37473 <ul class="entry_tags">
37474 <li><a href="#tag_HEIC">HEIC</a></li>
37475 </ul>
37476 </td>
37477
37478 </tr>
37479 <tr class="entries_header">
37480 <th class="th_details" colspan="6">Details</th>
37481 </tr>
37482 <tr class="entry_cont">
37483 <td class="entry_details" colspan="6">
37484 <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
37485<p>If the camera device supports HEIC image format,<wbr/> it will support identical set of stream
37486combinations involving HEIC image format,<wbr/> compared to the combinations involving JPEG
37487image format as required by the device's hardware level and capabilities.<wbr/></p>
37488<p>All the static,<wbr/> control,<wbr/> and dynamic metadata tags related to JPEG apply to HEIC formats.<wbr/>
37489Configuring JPEG and HEIC streams at the same time is not supported.<wbr/></p>
37490 </td>
37491 </tr>
37492
37493 <tr class="entries_header">
37494 <th class="th_details" colspan="6">HAL Implementation Details</th>
37495 </tr>
37496 <tr class="entry_cont">
37497 <td class="entry_details" colspan="6">
37498 <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p>
37499<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
37500set by the HAL layer.<wbr/></p>
37501 </td>
37502 </tr>
37503
37504 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37505 <!-- end of entry -->
37506
37507
37508 <tr class="entry" id="static_android.heic.availableHeicMinFrameDurations">
37509 <td class="entry_name
37510 " rowspan="5">
37511 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations
37512 </td>
37513 <td class="entry_type">
37514 <span class="entry_type_name">int64</span>
37515 <span class="entry_type_container">x</span>
37516
37517 <span class="entry_type_array">
37518 4 x n
37519 </span>
37520 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
37521
37522
37523 <span class="entry_type_hwlevel">[limited] </span>
37524
37525
37526
37527
37528 </td> <!-- entry_type -->
37529
37530 <td class="entry_description">
37531 <p>This lists the minimum frame duration for each
37532format/<wbr/>size combination for HEIC output formats.<wbr/></p>
37533 </td>
37534
37535 <td class="entry_units">
37536 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
37537 </td>
37538
37539 <td class="entry_range">
37540 </td>
37541
37542 <td class="entry_hal_version">
37543 <p>3.<wbr/>4</p>
37544 </td>
37545
37546 <td class="entry_tags">
37547 <ul class="entry_tags">
37548 <li><a href="#tag_HEIC">HEIC</a></li>
37549 </ul>
37550 </td>
37551
37552 </tr>
37553 <tr class="entries_header">
37554 <th class="th_details" colspan="6">Details</th>
37555 </tr>
37556 <tr class="entry_cont">
37557 <td class="entry_details" colspan="6">
37558 <p>This should correspond to the frame duration when only that
37559stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
37560set to either OFF or FAST.<wbr/></p>
37561<p>When multiple streams are used in a request,<wbr/> the minimum frame
37562duration will be max(individual stream min durations).<wbr/></p>
37563<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
37564<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
37565calculating the max frame rate.<wbr/></p>
37566 </td>
37567 </tr>
37568
37569 <tr class="entries_header">
37570 <th class="th_details" colspan="6">HAL Implementation Details</th>
37571 </tr>
37572 <tr class="entry_cont">
37573 <td class="entry_details" colspan="6">
37574 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
37575set by the HAL layer.<wbr/></p>
37576 </td>
37577 </tr>
37578
37579 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37580 <!-- end of entry -->
37581
37582
37583 <tr class="entry" id="static_android.heic.availableHeicStallDurations">
37584 <td class="entry_name
37585 " rowspan="5">
37586 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations
37587 </td>
37588 <td class="entry_type">
37589 <span class="entry_type_name">int64</span>
37590 <span class="entry_type_container">x</span>
37591
37592 <span class="entry_type_array">
37593 4 x n
37594 </span>
37595 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
37596
37597
37598 <span class="entry_type_hwlevel">[limited] </span>
37599
37600
37601
37602
37603 </td> <!-- entry_type -->
37604
37605 <td class="entry_description">
37606 <p>This lists the maximum stall duration for each
37607output format/<wbr/>size combination for HEIC streams.<wbr/></p>
37608 </td>
37609
37610 <td class="entry_units">
37611 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
37612 </td>
37613
37614 <td class="entry_range">
37615 </td>
37616
37617 <td class="entry_hal_version">
37618 <p>3.<wbr/>4</p>
37619 </td>
37620
37621 <td class="entry_tags">
37622 <ul class="entry_tags">
37623 <li><a href="#tag_HEIC">HEIC</a></li>
37624 </ul>
37625 </td>
37626
37627 </tr>
37628 <tr class="entries_header">
37629 <th class="th_details" colspan="6">Details</th>
37630 </tr>
37631 <tr class="entry_cont">
37632 <td class="entry_details" colspan="6">
37633 <p>A stall duration is how much extra time would get added
37634to the normal minimum frame duration for a repeating request
37635that has streams with non-zero stall.<wbr/></p>
37636<p>This functions similarly to
37637<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for HEIC
37638streams.<wbr/></p>
37639<p>All HEIC output stream formats may have a nonzero stall
37640duration.<wbr/></p>
37641 </td>
37642 </tr>
37643
37644 <tr class="entries_header">
37645 <th class="th_details" colspan="6">HAL Implementation Details</th>
37646 </tr>
37647 <tr class="entry_cont">
37648 <td class="entry_details" colspan="6">
37649 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
37650set by the HAL layer.<wbr/></p>
37651 </td>
37652 </tr>
37653
37654 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37655 <!-- end of entry -->
37656
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080037657
37658 <tr class="entry" id="static_android.heic.availableHeicStreamConfigurationsMaximumResolution">
37659 <td class="entry_name
37660 " rowspan="5">
37661 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution
37662 </td>
37663 <td class="entry_type">
37664 <span class="entry_type_name entry_type_name_enum">int32</span>
37665 <span class="entry_type_container">x</span>
37666
37667 <span class="entry_type_array">
37668 n x 4
37669 </span>
37670 <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
37671
37672
37673
37674
37675
37676 <ul class="entry_type_enum">
37677 <li>
37678 <span class="entry_type_enum_name">OUTPUT (v3.6)</span>
37679 </li>
37680 <li>
37681 <span class="entry_type_enum_name">INPUT (v3.6)</span>
37682 </li>
37683 </ul>
37684
37685 </td> <!-- entry_type -->
37686
37687 <td class="entry_description">
37688 <p>The available HEIC (ISO/<wbr/>IEC 23008-12) stream
37689configurations that this camera device supports
37690(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
37691 </td>
37692
37693 <td class="entry_units">
37694 </td>
37695
37696 <td class="entry_range">
37697 </td>
37698
37699 <td class="entry_hal_version">
37700 <p>3.<wbr/>6</p>
37701 </td>
37702
37703 <td class="entry_tags">
37704 <ul class="entry_tags">
37705 <li><a href="#tag_HEIC">HEIC</a></li>
37706 </ul>
37707 </td>
37708
37709 </tr>
37710 <tr class="entries_header">
37711 <th class="th_details" colspan="6">Details</th>
37712 </tr>
37713 <tr class="entry_cont">
37714 <td class="entry_details" colspan="6">
37715 <p>Refer to <a href="#static_android.heic.availableHeicStreamConfigurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stream<wbr/>Configurations</a> for details.<wbr/></p>
37716 </td>
37717 </tr>
37718
37719 <tr class="entries_header">
37720 <th class="th_details" colspan="6">HAL Implementation Details</th>
37721 </tr>
37722 <tr class="entry_cont">
37723 <td class="entry_details" colspan="6">
37724 <p>These are output stream configurations for use with dataSpace HAL_<wbr/>DATASPACE_<wbr/>HEIF.<wbr/></p>
37725<p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
37726set by the HAL layer.<wbr/></p>
37727 </td>
37728 </tr>
37729
37730 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37731 <!-- end of entry -->
37732
37733
37734 <tr class="entry" id="static_android.heic.availableHeicMinFrameDurationsMaximumResolution">
37735 <td class="entry_name
37736 " rowspan="5">
37737 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
37738 </td>
37739 <td class="entry_type">
37740 <span class="entry_type_name">int64</span>
37741 <span class="entry_type_container">x</span>
37742
37743 <span class="entry_type_array">
37744 4 x n
37745 </span>
37746 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
37747
37748
37749
37750
37751
37752
37753 </td> <!-- entry_type -->
37754
37755 <td class="entry_description">
37756 <p>This lists the minimum frame duration for each
37757format/<wbr/>size combination for HEIC output formats for CaptureRequests where
37758<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
37759<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
37760 </td>
37761
37762 <td class="entry_units">
37763 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
37764 </td>
37765
37766 <td class="entry_range">
37767 </td>
37768
37769 <td class="entry_hal_version">
37770 <p>3.<wbr/>6</p>
37771 </td>
37772
37773 <td class="entry_tags">
37774 <ul class="entry_tags">
37775 <li><a href="#tag_HEIC">HEIC</a></li>
37776 </ul>
37777 </td>
37778
37779 </tr>
37780 <tr class="entries_header">
37781 <th class="th_details" colspan="6">Details</th>
37782 </tr>
37783 <tr class="entry_cont">
37784 <td class="entry_details" colspan="6">
37785 <p>Refer to <a href="#static_android.heic.availableHeicMinFrameDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Min<wbr/>Frame<wbr/>Durations</a> for details.<wbr/></p>
37786 </td>
37787 </tr>
37788
37789 <tr class="entries_header">
37790 <th class="th_details" colspan="6">HAL Implementation Details</th>
37791 </tr>
37792 <tr class="entry_cont">
37793 <td class="entry_details" colspan="6">
37794 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
37795set by the HAL layer.<wbr/></p>
37796 </td>
37797 </tr>
37798
37799 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37800 <!-- end of entry -->
37801
37802
37803 <tr class="entry" id="static_android.heic.availableHeicStallDurationsMaximumResolution">
37804 <td class="entry_name
37805 " rowspan="5">
37806 android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations<wbr/>Maximum<wbr/>Resolution
37807 </td>
37808 <td class="entry_type">
37809 <span class="entry_type_name">int64</span>
37810 <span class="entry_type_container">x</span>
37811
37812 <span class="entry_type_array">
37813 4 x n
37814 </span>
37815 <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
37816
37817
37818
37819
37820
37821
37822 </td> <!-- entry_type -->
37823
37824 <td class="entry_description">
37825 <p>This lists the maximum stall duration for each
37826output format/<wbr/>size combination for HEIC streams for CaptureRequests where
37827<a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to
37828<a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p>
37829 </td>
37830
37831 <td class="entry_units">
37832 (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
37833 </td>
37834
37835 <td class="entry_range">
37836 </td>
37837
37838 <td class="entry_hal_version">
37839 <p>3.<wbr/>6</p>
37840 </td>
37841
37842 <td class="entry_tags">
37843 <ul class="entry_tags">
37844 <li><a href="#tag_HEIC">HEIC</a></li>
37845 </ul>
37846 </td>
37847
37848 </tr>
37849 <tr class="entries_header">
37850 <th class="th_details" colspan="6">Details</th>
37851 </tr>
37852 <tr class="entry_cont">
37853 <td class="entry_details" colspan="6">
37854 <p>Refer to <a href="#static_android.heic.availableHeicStallDurations">android.<wbr/>heic.<wbr/>available<wbr/>Heic<wbr/>Stall<wbr/>Durations</a> for details.<wbr/></p>
37855 </td>
37856 </tr>
37857
37858 <tr class="entries_header">
37859 <th class="th_details" colspan="6">HAL Implementation Details</th>
37860 </tr>
37861 <tr class="entry_cont">
37862 <td class="entry_details" colspan="6">
37863 <p>Do not set this property directly.<wbr/> It is populated by camera framework and must not be
37864set by the HAL layer.<wbr/></p>
37865 </td>
37866 </tr>
37867
37868 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
37869 <!-- end of entry -->
37870
Shuzhen Wanga44fd452018-12-28 18:50:53 -080037871
37872
37873 <!-- end of kind -->
37874 </tbody>
37875
37876 <!-- end of section -->
Changyeon Jo5a59d932022-01-19 13:51:47 -080037877 <tr><td colspan="7" id="section_automotive" class="section">automotive</td></tr>
37878
37879
37880 <tr><td colspan="7" class="kind">static</td></tr>
37881
37882 <thead class="entries_header">
37883 <tr>
37884 <th class="th_name">Property Name</th>
37885 <th class="th_type">Type</th>
37886 <th class="th_description">Description</th>
37887 <th class="th_units">Units</th>
37888 <th class="th_range">Range</th>
37889 <th class="th_hal_version">Initial HIDL HAL version</th>
37890 <th class="th_tags">Tags</th>
37891 </tr>
37892 </thead>
37893
37894 <tbody>
37895
37896
37897
37898
37899
37900
37901
37902
37903
37904
37905
37906
37907 <tr class="entry" id="static_android.automotive.lens.facing">
37908 <td class="entry_name
37909 " rowspan="3">
37910 android.<wbr/>automotive.<wbr/>lens.<wbr/>facing
37911 </td>
37912 <td class="entry_type">
37913 <span class="entry_type_name entry_type_name_enum">byte</span>
37914 <span class="entry_type_container">x</span>
37915
37916 <span class="entry_type_array">
37917 n
37918 </span>
37919 <span class="entry_type_visibility"> [public]</span>
37920
37921
37922
37923
37924
37925 <ul class="entry_type_enum">
37926 <li>
37927 <span class="entry_type_enum_name">EXTERIOR_OTHER (v3.8)</span>
37928 <span class="entry_type_enum_notes"><p>The camera device faces the outside of the vehicle body frame but not exactly
37929one of the exterior sides defined by this enum.<wbr/> Applications should determine
37930the exact facing direction from <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
37931<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span>
37932 </li>
37933 <li>
37934 <span class="entry_type_enum_name">EXTERIOR_FRONT (v3.8)</span>
37935 <span class="entry_type_enum_notes"><p>The camera device faces the front of the vehicle body frame.<wbr/></p></span>
37936 </li>
37937 <li>
37938 <span class="entry_type_enum_name">EXTERIOR_REAR (v3.8)</span>
37939 <span class="entry_type_enum_notes"><p>The camera device faces the rear of the vehicle body frame.<wbr/></p></span>
37940 </li>
37941 <li>
37942 <span class="entry_type_enum_name">EXTERIOR_LEFT (v3.8)</span>
37943 <span class="entry_type_enum_notes"><p>The camera device faces the left side of the vehicle body frame.<wbr/></p></span>
37944 </li>
37945 <li>
37946 <span class="entry_type_enum_name">EXTERIOR_RIGHT (v3.8)</span>
37947 <span class="entry_type_enum_notes"><p>The camera device faces the right side of the vehicle body frame.<wbr/></p></span>
37948 </li>
37949 <li>
37950 <span class="entry_type_enum_name">INTERIOR_OTHER (v3.8)</span>
37951 <span class="entry_type_enum_notes"><p>The camera device faces the inside of the vehicle body frame but not exactly
37952one of seats described by this enum.<wbr/> Applications should determine the exact
37953facing direction from <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span>
37954 </li>
37955 <li>
37956 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_1_LEFT (v3.8)</span>
37957 <span class="entry_type_enum_notes"><p>The camera device faces the left side seat of the first row.<wbr/></p></span>
37958 </li>
37959 <li>
37960 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_1_CENTER (v3.8)</span>
37961 <span class="entry_type_enum_notes"><p>The camera device faces the center seat of the first row.<wbr/></p></span>
37962 </li>
37963 <li>
37964 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_1_RIGHT (v3.8)</span>
37965 <span class="entry_type_enum_notes"><p>The camera device faces the right seat of the first row.<wbr/></p></span>
37966 </li>
37967 <li>
37968 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_2_LEFT (v3.8)</span>
37969 <span class="entry_type_enum_notes"><p>The camera device faces the left side seat of the second row.<wbr/></p></span>
37970 </li>
37971 <li>
37972 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_2_CENTER (v3.8)</span>
37973 <span class="entry_type_enum_notes"><p>The camera device faces the center seat of the second row.<wbr/></p></span>
37974 </li>
37975 <li>
37976 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_2_RIGHT (v3.8)</span>
37977 <span class="entry_type_enum_notes"><p>The camera device faces the right side seat of the second row.<wbr/></p></span>
37978 </li>
37979 <li>
37980 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_3_LEFT (v3.8)</span>
37981 <span class="entry_type_enum_notes"><p>The camera device faces the left side seat of the third row.<wbr/></p></span>
37982 </li>
37983 <li>
37984 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_3_CENTER (v3.8)</span>
37985 <span class="entry_type_enum_notes"><p>The camera device faces the center seat of the third row.<wbr/></p></span>
37986 </li>
37987 <li>
37988 <span class="entry_type_enum_name">INTERIOR_SEAT_ROW_3_RIGHT (v3.8)</span>
37989 <span class="entry_type_enum_notes"><p>The camera device faces the right seat of the third row.<wbr/></p></span>
37990 </li>
37991 </ul>
37992
37993 </td> <!-- entry_type -->
37994
37995 <td class="entry_description">
37996 <p>The direction of the camera faces relative to the vehicle body frame and the
37997passenger seats.<wbr/></p>
37998 </td>
37999
38000 <td class="entry_units">
38001 </td>
38002
38003 <td class="entry_range">
38004 </td>
38005
38006 <td class="entry_hal_version">
38007 <p>3.<wbr/>8</p>
38008 </td>
38009
38010 <td class="entry_tags">
38011 </td>
38012
38013 </tr>
38014 <tr class="entries_header">
38015 <th class="th_details" colspan="6">Details</th>
38016 </tr>
38017 <tr class="entry_cont">
38018 <td class="entry_details" colspan="6">
38019 <p>This enum defines the lens facing characteristic of the cameras on the automotive
38020devices with locations <a href="#static_android.automotive.location">android.<wbr/>automotive.<wbr/>location</a> defines.<wbr/> If the system has
38021FEATURE_<wbr/>AUTOMOTIVE,<wbr/> the camera will have this entry in its static metadata.<wbr/></p>
38022<p>When <a href="#static_android.automotive.location">android.<wbr/>automotive.<wbr/>location</a> is INTERIOR,<wbr/> this has one or more INTERIOR_<wbr/>*
38023values or a single EXTERIOR_<wbr/>* value.<wbr/> When this has more than one INTERIOR_<wbr/>*,<wbr/>
38024the first value must be the one for the seat closest to the optical axis.<wbr/> If this
38025contains INTERIOR_<wbr/>OTHER,<wbr/> all other values will be ineffective.<wbr/></p>
38026<p>When <a href="#static_android.automotive.location">android.<wbr/>automotive.<wbr/>location</a> is EXTERIOR_<wbr/>* or EXTRA,<wbr/> this has a single
38027EXTERIOR_<wbr/>* value.<wbr/></p>
38028<p>If a camera has INTERIOR_<wbr/>OTHER or EXTERIOR_<wbr/>OTHER,<wbr/> or more than one camera is at the
38029same location and facing the same direction,<wbr/> their static metadata will list the
Shuzhen Wanga3e89fa2022-05-03 11:01:26 -070038030following entries,<wbr/> so that applications can determine their lenses' exact facing
Changyeon Jo5a59d932022-01-19 13:51:47 -080038031directions:</p>
38032<ul>
38033<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
38034<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
38035<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
38036</ul>
38037 </td>
38038 </tr>
38039
38040
38041 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38042 <!-- end of entry -->
38043
38044
38045
38046
38047
38048 <tr class="entry" id="static_android.automotive.location">
38049 <td class="entry_name
38050 " rowspan="3">
38051 android.<wbr/>automotive.<wbr/>location
38052 </td>
38053 <td class="entry_type">
38054 <span class="entry_type_name entry_type_name_enum">byte</span>
38055
38056 <span class="entry_type_visibility"> [public]</span>
38057
38058
38059
38060
38061
38062 <ul class="entry_type_enum">
38063 <li>
38064 <span class="entry_type_enum_name">INTERIOR (v3.8)</span>
38065 <span class="entry_type_enum_notes"><p>The camera device exists inside of the vehicle cabin.<wbr/></p></span>
38066 </li>
38067 <li>
38068 <span class="entry_type_enum_name">EXTERIOR_OTHER (v3.8)</span>
38069 <span class="entry_type_enum_notes"><p>The camera exists outside of the vehicle body frame but not exactly on one of the
38070exterior locations this enum defines.<wbr/> The applications should determine the exact
38071location from <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span>
38072 </li>
38073 <li>
38074 <span class="entry_type_enum_name">EXTERIOR_FRONT (v3.8)</span>
38075 <span class="entry_type_enum_notes"><p>The camera device exists outside of the vehicle body frame and on its front side.<wbr/></p></span>
38076 </li>
38077 <li>
38078 <span class="entry_type_enum_name">EXTERIOR_REAR (v3.8)</span>
38079 <span class="entry_type_enum_notes"><p>The camera device exists outside of the vehicle body frame and on its rear side.<wbr/></p></span>
38080 </li>
38081 <li>
38082 <span class="entry_type_enum_name">EXTERIOR_LEFT (v3.8)</span>
38083 <span class="entry_type_enum_notes"><p>The camera device exists outside and on left side of the vehicle body frame.<wbr/></p></span>
38084 </li>
38085 <li>
38086 <span class="entry_type_enum_name">EXTERIOR_RIGHT (v3.8)</span>
38087 <span class="entry_type_enum_notes"><p>The camera device exists outside and on right side of the vehicle body frame.<wbr/></p></span>
38088 </li>
38089 <li>
38090 <span class="entry_type_enum_name">EXTRA_OTHER (v3.8)</span>
38091 <span class="entry_type_enum_notes"><p>The camera device exists on an extra vehicle,<wbr/> such as the trailer,<wbr/> but not exactly
38092on one of front,<wbr/> rear,<wbr/> left,<wbr/> or right side.<wbr/> Applications should determine the exact
38093location from <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p></span>
38094 </li>
38095 <li>
38096 <span class="entry_type_enum_name">EXTRA_FRONT (v3.8)</span>
38097 <span class="entry_type_enum_notes"><p>The camera device exists outside of the extra vehicle's body frame and on its front
38098side.<wbr/></p></span>
38099 </li>
38100 <li>
38101 <span class="entry_type_enum_name">EXTRA_REAR (v3.8)</span>
38102 <span class="entry_type_enum_notes"><p>The camera device exists outside of the extra vehicle's body frame and on its rear
38103side.<wbr/></p></span>
38104 </li>
38105 <li>
38106 <span class="entry_type_enum_name">EXTRA_LEFT (v3.8)</span>
38107 <span class="entry_type_enum_notes"><p>The camera device exists outside and on left side of the extra vehicle body.<wbr/></p></span>
38108 </li>
38109 <li>
38110 <span class="entry_type_enum_name">EXTRA_RIGHT (v3.8)</span>
38111 <span class="entry_type_enum_notes"><p>The camera device exists outside and on right side of the extra vehicle body.<wbr/></p></span>
38112 </li>
38113 </ul>
38114
38115 </td> <!-- entry_type -->
38116
38117 <td class="entry_description">
38118 <p>Location of the cameras on the automotive devices.<wbr/></p>
38119 </td>
38120
38121 <td class="entry_units">
38122 </td>
38123
38124 <td class="entry_range">
38125 </td>
38126
38127 <td class="entry_hal_version">
38128 <p>3.<wbr/>8</p>
38129 </td>
38130
38131 <td class="entry_tags">
38132 </td>
38133
38134 </tr>
38135 <tr class="entries_header">
38136 <th class="th_details" colspan="6">Details</th>
38137 </tr>
38138 <tr class="entry_cont">
38139 <td class="entry_details" colspan="6">
38140 <p>This enum defines the locations of the cameras relative to the vehicle body frame on
38141<a href="https://source.android.com/devices/sensors/sensor-types#auto_axes">the automotive sensor coordinate system</a>.<wbr/>
38142If the system has FEATURE_<wbr/>AUTOMOTIVE,<wbr/> the camera will have this entry in its static
38143metadata.<wbr/></p>
38144<ul>
38145<li>INTERIOR is the inside of the vehicle body frame (or the passenger cabin).<wbr/></li>
38146<li>EXTERIOR is the outside of the vehicle body frame.<wbr/></li>
38147<li>EXTRA is the extra vehicle such as a trailer.<wbr/></li>
38148</ul>
38149<p>Each side of the vehicle body frame on this coordinate system is defined as below:</p>
38150<ul>
38151<li>FRONT is where the Y-axis increases toward.<wbr/></li>
38152<li>REAR is where the Y-axis decreases toward.<wbr/></li>
38153<li>LEFT is where the X-axis decreases toward.<wbr/></li>
38154<li>RIGHT is where the X-axis increases toward.<wbr/></li>
38155</ul>
38156<p>If the camera has either EXTERIOR_<wbr/>OTHER or EXTRA_<wbr/>OTHER,<wbr/> its static metadata will list
38157the following entries,<wbr/> so that applications can determine the camera's exact location:</p>
38158<ul>
38159<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
38160<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
38161<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
38162</ul>
38163 </td>
38164 </tr>
38165
38166
38167 <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
38168 <!-- end of entry -->
38169
38170
38171
38172 <!-- end of kind -->
38173 </tbody>
38174
38175 <!-- end of section -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038176<!-- </namespace> -->
38177 </table>
38178
38179 <div class="tags" id="tag_index">
38180 <h2>Tags</h2>
38181 <ul>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038182 <li id="tag_BC">BC -
38183 Needed for backwards compatibility with old Java API
38184
38185 <ul class="tags_entries">
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -080038186 <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038187 <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
38188 <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
38189 <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
38190 <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
38191 <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -070038192 <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038193 <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
38194 <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -070038195 <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038196 <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
38197 <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
38198 <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
38199 <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
38200 <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
38201 <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
38202 <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
38203 <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
Zhijun He5fb671c2014-05-21 17:51:05 -070038204 <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -080038205 <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
Zhijun He5fb671c2014-05-21 17:51:05 -070038206 <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038207 <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
38208 <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
38209 <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
38210 <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
38211 <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
38212 <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
38213 <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
38214 <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
38215 <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
Yin-Chia Yeh3417b292015-02-20 15:34:14 -080038216 <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
38217 <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038218 <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
38219 <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
38220 <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
38221 <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
38222 <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
38223 <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
38224 <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
38225 <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
38226 <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
38227 <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
38228 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
38229 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038230 <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
38231 <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
38232 <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
38233 <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
38234 <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
38235 <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
Igor Murashkinf11a4df2013-05-07 10:00:46 -070038236 <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038237 <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
38238 <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
38239 <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
Zhijun He69fc0ea2013-07-17 09:42:58 -070038240 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038241 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
38242 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
38243 <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
38244 <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
38245 <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
Zhijun He66e62a42014-05-23 11:02:34 -070038246 <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038247 <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
38248 <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
38249 <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
38250 <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
38251 <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
38252 <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
38253 </ul>
38254 </li> <!-- tag_BC -->
38255 <li id="tag_V1">V1 -
38256 New features for first camera 2 release (API1)
38257
38258 <ul class="tags_entries">
Zhijun He33776412014-08-18 10:55:33 -070038259 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
Zhijun He17f2d2c2014-06-10 18:21:34 -070038260 <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080038261 <li><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a> (static)</li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080038262 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080038263 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038264 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080038265 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038266 <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
38267 <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
38268 <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
38269 <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
38270 <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
38271 <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
38272 <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
38273 <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
38274 <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038275 <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
38276 <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
Zhijun Hef92c76a2014-02-06 01:40:35 -080038277 <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038278 <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
38279 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080038280 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038281 <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
Zhijun He5fb671c2014-05-21 17:51:05 -070038282 <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
38283 <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038284 <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
38285 <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
38286 <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
Zhijun He69fc0ea2013-07-17 09:42:58 -070038287 <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038288 <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
38289 <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
38290 <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
Eino-Ville Talvala122906c2014-07-28 12:49:25 -070038291 <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038292 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
Zhijun Hecc5cfdc2014-06-11 10:44:53 -070038293 <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080038294 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
38295 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080038296 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
Zhijun He5fb671c2014-05-21 17:51:05 -070038297 <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
38298 <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
Eino-Ville Talvalad4c0fe32018-03-13 19:46:57 -070038299 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080038300 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038301 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
38302 <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
38303 <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
38304 <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
Ruben Brunkd14f7162014-03-04 15:01:25 -080038305 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038306 </ul>
38307 </li> <!-- tag_V1 -->
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070038308 <li id="tag_RAW">RAW -
38309 Needed for useful RAW image processing and DNG file support
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038310
38311 <ul class="tags_entries">
Ruben Brunk9d4a5e02014-02-18 11:27:07 -080038312 <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080038313 <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038314 <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
38315 <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
38316 <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
38317 <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
Ruben Brunk93192942015-07-01 11:32:39 -070038318 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080038319 <li><a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a> (static)</li>
38320 <li><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a> (static)</li>
38321 <li><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a> (static)</li>
Ruben Brunk7db06e22014-04-15 17:43:56 -070038322 <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
38323 <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
38324 <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
38325 <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
38326 <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
38327 <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
38328 <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
38329 <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038330 <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
Ruben Brunk2bebe312014-02-06 13:04:38 -080038331 <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -080038332 <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
Ruben Brunk6a424ff2014-07-23 15:13:16 -070038333 <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
Ruben Brunk2bebe312014-02-06 13:04:38 -080038334 <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
38335 <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
Ruben Brunk6a5fd112014-02-11 17:55:32 -080038336 <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
Zhijun Hed363a122015-11-12 17:27:27 -080038337 <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
38338 <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
Ruben Brunk49e4f912014-03-04 14:09:44 -080038339 <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
38340 <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
38341 <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
Igor Murashkinca256272014-10-02 15:27:09 -070038342 <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
Ruben Brunk9d4a5e02014-02-18 11:27:07 -080038343 <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038344 </ul>
Eino-Ville Talvala9a7f3d82014-07-15 10:43:01 -070038345 </li> <!-- tag_RAW -->
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070038346 <li id="tag_HAL2">HAL2 -
Eino-Ville Talvala0d404952017-11-10 15:13:04 -080038347 Entry is only used by camera device legacy HAL 2.x
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070038348
38349 <ul class="tags_entries">
38350 <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
38351 <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
38352 <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
Zhijun He12744b22014-01-22 15:58:57 -080038353 <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
Zhijun He69fc0ea2013-07-17 09:42:58 -070038354 <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070038355 </ul>
38356 </li> <!-- tag_HAL2 -->
Alex Rayef40ad62013-10-01 17:52:33 -070038357 <li id="tag_FULL">FULL -
38358 Entry is required for full hardware level devices, and optional for other hardware levels
38359
38360 <ul class="tags_entries">
Alex Rayef40ad62013-10-01 17:52:33 -070038361 <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
Alex Rayef40ad62013-10-01 17:52:33 -070038362 </ul>
38363 </li> <!-- tag_FULL -->
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080038364 <li id="tag_DEPTH">DEPTH -
38365 Entry is required for the depth capability.
38366
38367 <ul class="tags_entries">
Eino-Ville Talvala489e58c2015-02-09 15:47:27 -080038368 <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
38369 <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
38370 <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
38371 <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
Eino-Ville Talvala245e2792018-03-13 19:10:23 -070038372 <li><a href="#static_android.lens.distortion">android.lens.distortion</a> (static)</li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080038373 <li><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a> (static)</li>
38374 <li><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</a> (static)</li>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080038375 <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
38376 <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
38377 <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
38378 <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
Emilian Peev65860e42019-01-04 17:49:37 +000038379 <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a> (static)</li>
38380 <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a> (static)</li>
38381 <li><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a> (static)</li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080038382 <li><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a> (static)</li>
38383 <li><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a> (static)</li>
38384 <li><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a> (static)</li>
38385 <li><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a> (static)</li>
38386 <li><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a> (static)</li>
38387 <li><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</a> (static)</li>
Eino-Ville Talvalaa166f502015-02-23 15:51:58 -080038388 </ul>
38389 </li> <!-- tag_DEPTH -->
Zhijun He51379152015-04-24 17:59:50 -070038390 <li id="tag_REPROC">REPROC -
Chien-Yu Chenf8581f62015-05-12 15:13:00 -070038391 Entry is required for the YUV or PRIVATE reprocessing capability.
Zhijun He51379152015-04-24 17:59:50 -070038392
38393 <ul class="tags_entries">
38394 <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
38395 <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
38396 <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
38397 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
38398 <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
38399 <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
Emilian Peev9c7b5d32018-09-18 14:01:55 +010038400 <li><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a> (static)</li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080038401 <li><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a> (static)</li>
Zhijun He51379152015-04-24 17:59:50 -070038402 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
38403 <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
Eino-Ville Talvalad4c0fe32018-03-13 19:46:57 -070038404 <li><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a> (static)</li>
Zhijun He51379152015-04-24 17:59:50 -070038405 <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
38406 <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
38407 </ul>
38408 </li> <!-- tag_REPROC -->
Shuzhen Wang0144f582017-11-30 12:03:37 -080038409 <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
38410 Entry is required for logical multi-camera capability.
38411
38412 <ul class="tags_entries">
38413 <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
38414 <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
Shuzhen Wangd7a23bf2018-11-19 12:15:18 -080038415 <li><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a> (dynamic)</li>
Shuzhen Wang0144f582017-11-30 12:03:37 -080038416 </ul>
38417 </li> <!-- tag_LOGICALCAMERA -->
Shuzhen Wanga44fd452018-12-28 18:50:53 -080038418 <li id="tag_HEIC">HEIC -
38419 Entry is required for devices with HEIC (High Efficiency Image Format) support.
38420
38421 <ul class="tags_entries">
38422 <li><a href="#static_android.heic.info.supported">android.heic.info.supported</a> (static)</li>
38423 <li><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a> (static)</li>
38424 <li><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a> (static)</li>
38425 <li><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a> (static)</li>
38426 <li><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</a> (static)</li>
Jayant Chowdhary5bd20bd2020-11-09 09:08:31 -080038427 <li><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a> (static)</li>
38428 <li><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a> (static)</li>
38429 <li><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a> (static)</li>
Shuzhen Wanga44fd452018-12-28 18:50:53 -080038430 </ul>
38431 </li> <!-- tag_HEIC -->
Zhijun He66e62a42014-05-23 11:02:34 -070038432 <li id="tag_FUTURE">FUTURE -
38433 Entry is under-specified and is not required for now. This is for book-keeping purpose,
38434 do not implement or use it, it may be revised for future.
38435
38436 <ul class="tags_entries">
38437 <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
38438 <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
38439 <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
38440 <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
38441 <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
38442 <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
38443 <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
38444 <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
Zhijun He66e62a42014-05-23 11:02:34 -070038445 <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
38446 <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
38447 <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
38448 <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
38449 <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
38450 <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
38451 <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
38452 <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
38453 <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
38454 <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
38455 <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
38456 <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
38457 <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
38458 </ul>
38459 </li> <!-- tag_FUTURE -->
Igor Murashkin08b8aad2012-11-29 15:23:03 -080038460 </ul>
38461 </div>
38462
38463 [ <a href="#">top</a> ]
38464
38465</body>
38466</html>