blob: 3b4051e12c30083f17345691058850601e321686 [file] [log] [blame]
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001<?xml version="1.0" encoding="utf-8"?>
2<!-- Copyright (C) 2012 The Android Open Source Project
3
4 Licensed under the Apache License, Version 2.0 (the "License");
5 you may not use this file except in compliance with the License.
6 You may obtain a copy of the License at
7
8 http://www.apache.org/licenses/LICENSE-2.0
9
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
15-->
16<metadata xmlns="http://schemas.android.com/service/camera/metadata/"
17xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
18xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata_properties.xsd">
19
20 <tags>
21 <tag id="AWB">
Igor Murashkin6ad61d42012-11-21 09:44:05 -080022 Needed for auto white balance
Igor Murashkin77b63ca2012-11-09 16:15:02 -080023 </tag>
24 <tag id="BC">
Igor Murashkin6ad61d42012-11-21 09:44:05 -080025 Needed for backwards compatibility with old Java API
Igor Murashkin77b63ca2012-11-09 16:15:02 -080026 </tag>
27 <tag id="V1">
Igor Murashkin6ad61d42012-11-21 09:44:05 -080028 New features for first camera 2 release (API1)
Igor Murashkin77b63ca2012-11-09 16:15:02 -080029 </tag>
30 <tag id="ADV">
31 <!-- TODO: fill the tag description -->
32 </tag>
33 <tag id="DNG">
Igor Murashkin6ad61d42012-11-21 09:44:05 -080034 Needed for DNG file support
Igor Murashkin77b63ca2012-11-09 16:15:02 -080035 </tag>
36 <tag id="EXIF">
37 <!-- TODO: fill the tag description -->
38 </tag>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070039 <tag id="HAL2">
Alex Rayef40ad62013-10-01 17:52:33 -070040 Entry is only used by camera device HAL 2.x
41 </tag>
42 <tag id="FULL">
43 Entry is required for full hardware level devices, and optional for other hardware levels
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070044 </tag>
Igor Murashkin5c1fc682014-01-16 17:51:36 -080045 <tag id="LIMITED">
46 Entry assists with LIMITED device implementation. LIMITED devices
47 must implement all entries with this tag. Optional for FULL devices.
48 </tag>
Igor Murashkin77b63ca2012-11-09 16:15:02 -080049 </tags>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070050
51 <types>
52 <typedef name="rectangle">
53 <language name="java">android.graphics.Rect</language>
54 </typedef>
55 <typedef name="size">
Eino-Ville Talvala47aa24d2013-07-25 17:10:11 -070056 <language name="java">android.hardware.camera2.Size</language>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070057 </typedef>
58 <typedef name="string">
59 <language name="java">String</language>
60 </typedef>
61 <typedef name="boolean">
62 <language name="java">boolean</language>
63 </typedef>
Eino-Ville Talvalad4e240a2013-08-08 12:56:37 -070064 <typedef name="imageFormat">
65 <language name="java">int</language>
66 </typedef>
Igor Murashkinb8dc8812013-07-17 16:29:34 -070067 </types>
68
Igor Murashkin77b63ca2012-11-09 16:15:02 -080069 <namespace name="android">
70 <section name="colorCorrection">
71 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -070072 <entry name="mode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -080073 <enum>
74 <value>TRANSFORM_MATRIX
Igor Murashkin6ad61d42012-11-21 09:44:05 -080075 <notes>Use the android.colorCorrection.transform matrix
Igor Murashkin43817ad2014-01-10 15:58:35 -080076 and android.colorCorrection.gains to do color conversion.
77
78 All advanced white balance adjustments (not specified
79 by our white balance pipeline) must be disabled.
80
81 If AWB is enabled with `android.control.awbMode != OFF`, then
82 TRANSFORM_MATRIX is ignored. The camera device will override
83 this value to either FAST or HIGH_QUALITY.
84 </notes>
Igor Murashkin6ad61d42012-11-21 09:44:05 -080085 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -080086 <value>FAST
Igor Murashkin43817ad2014-01-10 15:58:35 -080087 <notes>Must not slow down capture rate relative to sensor raw
88 output.
89
90 Advanced white balance adjustments above and beyond
91 the specified white balance pipeline may be applied.
92
93 If AWB is enabled with `android.control.awbMode != OFF`, then
94 the camera device uses the last frame's AWB values
95 (or defaults if AWB has never been run).
96 </notes>
Igor Murashkin6ad61d42012-11-21 09:44:05 -080097 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -080098 <value>HIGH_QUALITY
Igor Murashkin43817ad2014-01-10 15:58:35 -080099 <notes>Capture rate (relative to sensor raw output)
100 may be reduced by high quality.
101
102 Advanced white balance adjustments above and beyond
103 the specified white balance pipeline may be applied.
104
105 If AWB is enabled with `android.control.awbMode != OFF`, then
106 the camera device uses the last frame's AWB values
107 (or defaults if AWB has never been run).
108 </notes>
Igor Murashkin6ad61d42012-11-21 09:44:05 -0800109 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800110 </enum>
Igor Murashkin656aa5a2013-08-13 14:23:39 -0700111
Igor Murashkin43817ad2014-01-10 15:58:35 -0800112 <description>
113 The mode control selects how the image data is converted from the
114 sensor's native color into linear sRGB color.
115 </description>
116 <details>
117 When auto-white balance is enabled with android.control.awbMode, this
118 control is overridden by the AWB routine. When AWB is disabled, the
119 application controls how the color mapping is performed.
120
121 We define the expected processing pipeline below. For consistency
122 across devices, this is always the case with TRANSFORM_MATRIX.
123
124 When either FULL or HIGH_QUALITY is used, the camera device may
125 do additional processing but android.colorCorrection.gains and
126 android.colorCorrection.transform will still be provided by the
127 camera device (in the results) and be roughly correct.
128
129 Switching to TRANSFORM_MATRIX and using the data provided from
130 FAST or HIGH_QUALITY will yield a picture with the same white point
131 as what was produced by the camera device in the earlier frame.
132
133 The expected processing pipeline is as follows:
134
135 ![White balance processing pipeline](android.colorCorrection.mode/processing_pipeline.png)
136
137 The white balance is encoded by two values, a 4-channel white-balance
138 gain vector (applied in the Bayer domain), and a 3x3 color transform
139 matrix (applied after demosaic).
140
141 The 4-channel white-balance gains are defined as:
142
143 android.colorCorrection.gains = [ R G_even G_odd B ]
144
145 where `G_even` is the gain for green pixels on even rows of the
146 output, and `G_odd` is the gain for green pixels on the odd rows.
147 These may be identical for a given camera device implementation; if
148 the camera device does not support a separate gain for even/odd green
149 channels, it will use the `G_even` value, and write `G_odd` equal to
150 `G_even` in the output result metadata.
151
152 The matrices for color transforms are defined as a 9-entry vector:
153
154 android.colorCorrection.transform = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
155
156 which define a transform from input sensor colors, `P_in = [ r g b ]`,
157 to output linear sRGB, `P_out = [ r' g' b' ]`,
158
159 with colors as follows:
160
161 r' = I0r + I1g + I2b
162 g' = I3r + I4g + I5b
163 b' = I6r + I7g + I8b
164
165 Both the input and output value ranges must match. Overflow/underflow
166 values are clipped to fit within the range.
167 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800168 </entry>
Zhijun He69fc0ea2013-07-17 09:42:58 -0700169 <entry name="transform" type="rational" visibility="public"
170 type_notes="3x3 rational matrix in row-major order"
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700171 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800172 <array>
Igor Murashkin6ad61d42012-11-21 09:44:05 -0800173 <size>3</size>
174 <size>3</size>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800175 </array>
Zhijun He69fc0ea2013-07-17 09:42:58 -0700176 <description>A color transform matrix to use to transform
177 from sensor RGB color space to output linear sRGB color space
178 </description>
Zhijun He44d0b3d2014-02-04 16:42:46 -0800179 <details>This matrix is either set by the camera device when the request
Zhijun He69fc0ea2013-07-17 09:42:58 -0700180 android.colorCorrection.mode is not TRANSFORM_MATRIX, or
181 directly by the application in the request when the
Igor Murashkin656aa5a2013-08-13 14:23:39 -0700182 android.colorCorrection.mode is TRANSFORM_MATRIX.
183
Zhijun He44d0b3d2014-02-04 16:42:46 -0800184 In the latter case, the camera device may round the matrix to account
185 for precision issues; the final rounded matrix should be reported back
186 in this matrix result metadata. The transform should keep the magnitude
187 of the output color values within `[0, 1.0]` (assuming input color
188 values is within the normalized range `[0, 1.0]`), or clipping may occur.
189 </details>
Zhijun He69fc0ea2013-07-17 09:42:58 -0700190 </entry>
191 <entry name="gains" type="float" visibility="public"
192 type_notes="A 1D array of floats for 4 color channel gains"
193 container="array">
194 <array>
195 <size>4</size>
196 </array>
Igor Murashkin43817ad2014-01-10 15:58:35 -0800197 <description>Gains applying to Bayer raw color channels for
Zhijun He69fc0ea2013-07-17 09:42:58 -0700198 white-balance</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800199 <details>The 4-channel white-balance gains are defined in
Igor Murashkin43817ad2014-01-10 15:58:35 -0800200 the order of `[R G_even G_odd B]`, where `G_even` is the gain
201 for green pixels on even rows of the output, and `G_odd`
202 is the gain for green pixels on the odd rows. if a HAL
Zhijun He69fc0ea2013-07-17 09:42:58 -0700203 does not support a separate gain for even/odd green channels,
Igor Murashkin43817ad2014-01-10 15:58:35 -0800204 it should use the `G_even` value, and write `G_odd` equal to
205 `G_even` in the output result metadata.
Zhijun He69fc0ea2013-07-17 09:42:58 -0700206
Igor Murashkin656aa5a2013-08-13 14:23:39 -0700207 This array is either set by HAL when the request
208 android.colorCorrection.mode is not TRANSFORM_MATRIX, or
209 directly by the application in the request when the
210 android.colorCorrection.mode is TRANSFORM_MATRIX.
211
Igor Murashkin43817ad2014-01-10 15:58:35 -0800212 The output should be the gains actually applied by the HAL to
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800213 the current frame.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800214 </entry>
215 </controls>
216 <dynamic>
Zhijun He69fc0ea2013-07-17 09:42:58 -0700217 <clone entry="android.colorCorrection.transform" kind="controls">
218 </clone>
219 <clone entry="android.colorCorrection.gains" kind="controls">
220 </clone>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800221 </dynamic>
222 </section>
223 <section name="control">
224 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700225 <entry name="aeAntibandingMode" type="byte" visibility="public"
226 enum="true" >
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800227 <enum>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -0800228 <value>OFF
229 <notes>
230 The camera device will not adjust exposure duration to
231 avoid banding problems.
232 </notes>
233 </value>
234 <value>50HZ
235 <notes>
236 The camera device will adjust exposure duration to
237 avoid banding problems with 50Hz illumination sources.
238 </notes>
239 </value>
240 <value>60HZ
241 <notes>
242 The camera device will adjust exposure duration to
243 avoid banding problems with 60Hz illumination
244 sources.
245 </notes>
246 </value>
247 <value>AUTO
248 <notes>
249 The camera device will automatically adapt its
250 antibanding routine to the current illumination
251 conditions. This is the default.
252 </notes>
253 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800254 </enum>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -0800255 <description>
256 The desired setting for the camera device's auto-exposure
257 algorithm's antibanding compensation.
258 </description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800259 <range>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -0800260 android.control.aeAvailableAntibandingModes
261 </range>
262 <details>
263 Some kinds of lighting fixtures, such as some fluorescent
264 lights, flicker at the rate of the power supply frequency
265 (60Hz or 50Hz, depending on country). While this is
266 typically not noticeable to a person, it can be visible to
267 a camera device. If a camera sets its exposure time to the
268 wrong value, the flicker may become visible in the
269 viewfinder as flicker or in a final captured image, as a
270 set of variable-brightness bands across the image.
271
272 Therefore, the auto-exposure routines of camera devices
273 include antibanding routines that ensure that the chosen
274 exposure value will not cause such banding. The choice of
275 exposure time depends on the rate of flicker, which the
276 camera device can detect automatically, or the expected
277 rate can be selected by the application using this
278 control.
279
280 A given camera device may not support all of the possible
281 options for the antibanding mode. The
282 android.control.aeAvailableAntibandingModes key contains
283 the available modes for a given camera device.
284
285 The default mode is AUTO, which must be supported by all
286 camera devices.
287
288 If manual exposure control is enabled (by setting
289 android.control.aeMode or android.control.mode to OFF),
290 then this setting has no effect, and the application must
291 ensure it selects exposure times that do not cause banding
292 issues. The android.statistics.sceneFlicker key can assist
293 the application in this.
294 </details>
295 <hal_details>
296 For all capture request templates, this field must be set
297 to AUTO. AUTO is the only mode that must supported;
298 OFF, 50HZ, 60HZ are all optional.
299
300 If manual exposure control is enabled (by setting
301 android.control.aeMode or android.control.mode to OFF),
302 then the exposure values provided by the application must not be
303 adjusted for antibanding.
304 </hal_details>
305 <tag id="BC" />
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800306 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700307 <entry name="aeExposureCompensation" type="int32" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800308 <description>Adjustment to AE target image
309 brightness</description>
310 <units>count of positive/negative EV steps</units>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800311 <details>For example, if EV step is 0.333, '6' will mean an
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800312 exposure compensation of +2 EV; -3 will mean an exposure
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800313 compensation of -1</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800314 <tag id="BC" />
315 </entry>
Igor Murashkinb8dc8812013-07-17 16:29:34 -0700316 <entry name="aeLock" type="byte" visibility="public" enum="true"
317 typedef="boolean">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800318 <enum>
Eino-Ville Talvala76548fe2013-01-11 13:57:19 -0800319 <value>OFF
320 <notes>Autoexposure lock is disabled; the AE algorithm
321 is free to update its parameters.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800322 <value>ON
323 <notes>Autoexposure lock is enabled; the AE algorithm
324 must not update the exposure and sensitivity parameters
325 while the lock is active</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800326 </enum>
327 <description>Whether AE is currently locked to its latest
Zhijun He44d0b3d2014-02-04 16:42:46 -0800328 calculated values.</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800329 <details>Note that even when AE is locked, the flash may be
Zhijun He44d0b3d2014-02-04 16:42:46 -0800330 fired if the android.control.aeMode is ON_AUTO_FLASH / ON_ALWAYS_FLASH /
331 ON_AUTO_FLASH_REDEYE.
332
333 If AE precapture is triggered (see android.control.aePrecaptureTrigger)
334 when AE is already locked, the camera device will not change the exposure time
335 (android.sensor.exposureTime) and sensitivity (android.sensor.sensitivity)
336 parameters. The flash may be fired if the android.control.aeMode
337 is ON_AUTO_FLASH/ON_AUTO_FLASH_REDEYE and the scene is too dark. If the
338 android.control.aeMode is ON_ALWAYS_FLASH, the scene may become overexposed.
339
340 See android.control.aeState for AE lock related state transition details.
341 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800342 <tag id="BC" />
343 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700344 <entry name="aeMode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800345 <enum>
346 <value>OFF
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -0800347 <notes>
348 The camera device's autoexposure routine is disabled;
349 the application-selected android.sensor.exposureTime,
350 android.sensor.sensitivity and
351 android.sensor.frameDuration are used by the camera
352 device, along with android.flash.* fields, if there's
353 a flash unit for this camera device.
354 </notes>
Igor Murashkin6ad61d42012-11-21 09:44:05 -0800355 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800356 <value>ON
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -0800357 <notes>
358 The camera device's autoexposure routine is active,
359 with no flash control. The application's values for
360 android.sensor.exposureTime,
361 android.sensor.sensitivity, and
362 android.sensor.frameDuration are ignored. The
363 application has control over the various
364 android.flash.* fields.
365 </notes>
Igor Murashkin6ad61d42012-11-21 09:44:05 -0800366 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800367 <value>ON_AUTO_FLASH
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -0800368 <notes>
369 Like ON, except that the camera device also controls
370 the camera's flash unit, firing it in low-light
371 conditions. The flash may be fired during a
372 precapture sequence (triggered by
373 android.control.aePrecaptureTrigger) and may be fired
374 for captures for which the
375 android.control.captureIntent field is set to
376 STILL_CAPTURE
377 </notes>
378 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800379 <value>ON_ALWAYS_FLASH
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -0800380 <notes>
381 Like ON, except that the camera device also controls
382 the camera's flash unit, always firing it for still
383 captures. The flash may be fired during a precapture
384 sequence (triggered by
385 android.control.aePrecaptureTrigger) and will always
386 be fired for captures for which the
387 android.control.captureIntent field is set to
388 STILL_CAPTURE
389 </notes>
390 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800391 <value>ON_AUTO_FLASH_REDEYE
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -0800392 <notes>
393 Like ON_AUTO_FLASH, but with automatic red eye
394 reduction. If deemed necessary by the camera device,
395 a red eye reduction flash will fire during the
396 precapture sequence.
397 </notes>
398 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800399 </enum>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -0800400 <description>The desired mode for the camera device's
401 auto-exposure routine.</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800402 <range>android.control.aeAvailableModes</range>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -0800403 <details>
404 This control is only effective if android.control.mode is
405 AUTO.
Zhijun Hef5529232013-12-13 17:48:53 -0800406
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -0800407 When set to any of the ON modes, the camera device's
408 auto-exposure routine is enabled, overriding the
409 application's selected exposure time, sensor sensitivity,
410 and frame duration (android.sensor.exposureTime,
411 android.sensor.sensitivity, and
412 android.sensor.frameDuration). If one of the FLASH modes
413 is selected, the camera device's flash unit controls are
414 also overridden.
Zhijun Hef5529232013-12-13 17:48:53 -0800415
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -0800416 The FLASH modes are only available if the camera device
417 has a flash unit (android.flash.info.available is `true`).
418
419 If flash TORCH mode is desired, this field must be set to
420 ON or OFF, and android.flash.mode set to TORCH.
421
422 When set to any of the ON modes, the values chosen by the
423 camera device auto-exposure routine for the overridden
424 fields for a given capture will be available in its
425 CaptureResult.
426 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800427 <tag id="BC" />
428 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700429 <entry name="aeRegions" type="int32" visibility="public"
430 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800431 <array>
Igor Murashkin617da162012-11-29 13:35:15 -0800432 <size>5</size>
433 <size>area_count</size>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800434 </array>
435 <description>List of areas to use for
Ruben Brunk76e4c7d2014-01-31 11:05:30 -0800436 metering.</description>
437 <range>`area_count &lt;= android.control.maxRegions[0]`</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800438 <details>Each area is a rectangle plus weight: xmin, ymin,
Ruben Brunk76e4c7d2014-01-31 11:05:30 -0800439 xmax, ymax, weight. The rectangle is defined to be inclusive of the
Timothy Knightfd4cc6d2013-09-03 17:21:45 -0700440 specified coordinates.
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700441
442 The coordinate system is based on the active pixel array,
Timothy Knightfd4cc6d2013-09-03 17:21:45 -0700443 with (0,0) being the top-left pixel in the active pixel array, and
444 (android.sensor.info.activeArraySize.width - 1,
445 android.sensor.info.activeArraySize.height - 1) being the
446 bottom-right pixel in the active pixel array. The weight
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700447 should be nonnegative.
448
449 If all regions have 0 weight, then no specific metering area
450 needs to be used by the HAL. If the metering region is
451 outside the current android.scaler.cropRegion, the HAL
452 should ignore the sections outside the region and output the
Ruben Brunk76e4c7d2014-01-31 11:05:30 -0800453 used sections in the frame metadata.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800454 <tag id="BC" />
455 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700456 <entry name="aeTargetFpsRange" type="int32" visibility="public"
457 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800458 <array>
459 <size>2</size>
460 </array>
461 <description>Range over which fps can be adjusted to
462 maintain exposure</description>
463 <range>android.control.aeAvailableTargetFpsRanges</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800464 <details>Only constrains AE algorithm, not manual control
465 of android.sensor.exposureTime</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800466 <tag id="BC" />
467 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700468 <entry name="aePrecaptureTrigger" type="byte" visibility="public"
469 enum="true">
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -0700470 <enum>
471 <value>IDLE
472 <notes>The trigger is idle.</notes>
473 </value>
474 <value>START
Zhijun He92e698d2014-01-13 16:24:31 -0800475 <notes>The precapture metering sequence will be started
476 by the camera device. The exact effect of the precapture
477 trigger depends on the current AE mode and state.</notes>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -0700478 </value>
479 </enum>
Zhijun He92e698d2014-01-13 16:24:31 -0800480 <description>Whether the camera device will trigger a precapture
481 metering sequence when it processes this request.</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800482 <details>This entry is normally set to IDLE, or is not
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -0700483 included at all in the request settings. When included and
Zhijun He92e698d2014-01-13 16:24:31 -0800484 set to START, the camera device will trigger the autoexposure
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700485 precapture metering sequence.
486
487 The effect of AE precapture trigger depends on the current
Zhijun He92e698d2014-01-13 16:24:31 -0800488 AE mode and state; see android.control.aeState for AE precapture
489 state transition details.</details>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -0700490 <tag id="BC" />
491 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700492 <entry name="afMode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800493 <enum>
494 <value>OFF
Zhijun Hef5529232013-12-13 17:48:53 -0800495 <notes>The auto-focus routine does not control the lens;
Zhijun He69fc0ea2013-07-17 09:42:58 -0700496 android.lens.focusDistance is controlled by the
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800497 application</notes></value>
498 <value>AUTO
Igor Murashkin8aa2a112013-12-09 12:06:17 -0800499 <notes>
500 If lens is not fixed focus.
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700501
Zhijun Hef5529232013-12-13 17:48:53 -0800502 Use android.lens.info.minimumFocusDistance to determine if lens
503 is fixed-focus. In this mode, the lens does not move unless
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700504 the autofocus trigger action is called. When that trigger
505 is activated, AF must transition to ACTIVE_SCAN, then to
Zhijun Hef5529232013-12-13 17:48:53 -0800506 the outcome of the scan (FOCUSED or NOT_FOCUSED).
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700507
Zhijun Hef5529232013-12-13 17:48:53 -0800508 Triggering AF_CANCEL resets the lens position to default,
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700509 and sets the AF state to INACTIVE.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800510 <value>MACRO
511 <notes>In this mode, the lens does not move unless the
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700512 autofocus trigger action is called.
513
514 When that trigger is activated, AF must transition to
515 ACTIVE_SCAN, then to the outcome of the scan (FOCUSED or
516 NOT_FOCUSED). Triggering cancel AF resets the lens
517 position to default, and sets the AF state to
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800518 INACTIVE.</notes></value>
519 <value>CONTINUOUS_VIDEO
520 <notes>In this mode, the AF algorithm modifies the lens
521 position continually to attempt to provide a
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700522 constantly-in-focus image stream.
523
524 The focusing behavior should be suitable for good quality
525 video recording; typically this means slower focus
526 movement and no overshoots. When the AF trigger is not
527 involved, the AF algorithm should start in INACTIVE state,
528 and then transition into PASSIVE_SCAN and PASSIVE_FOCUSED
529 states as appropriate. When the AF trigger is activated,
530 the algorithm should immediately transition into
531 AF_FOCUSED or AF_NOT_FOCUSED as appropriate, and lock the
532 lens position until a cancel AF trigger is received.
533
534 Once cancel is received, the algorithm should transition
535 back to INACTIVE and resume passive scan. Note that this
536 behavior is not identical to CONTINUOUS_PICTURE, since an
537 ongoing PASSIVE_SCAN must immediately be
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800538 canceled.</notes></value>
539 <value>CONTINUOUS_PICTURE
540 <notes>In this mode, the AF algorithm modifies the lens
541 position continually to attempt to provide a
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700542 constantly-in-focus image stream.
543
544 The focusing behavior should be suitable for still image
545 capture; typically this means focusing as fast as
546 possible. When the AF trigger is not involved, the AF
547 algorithm should start in INACTIVE state, and then
548 transition into PASSIVE_SCAN and PASSIVE_FOCUSED states as
549 appropriate as it attempts to maintain focus. When the AF
550 trigger is activated, the algorithm should finish its
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800551 PASSIVE_SCAN if active, and then transition into
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700552 AF_FOCUSED or AF_NOT_FOCUSED as appropriate, and lock the
553 lens position until a cancel AF trigger is received.
554
555 When the AF cancel trigger is activated, the algorithm
556 should transition back to INACTIVE and then act as if it
557 has just been started.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800558 <value>EDOF
559 <notes>Extended depth of field (digital focus). AF
560 trigger is ignored, AF state should always be
561 INACTIVE.</notes></value>
562 </enum>
563 <description>Whether AF is currently enabled, and what
564 mode it is set to</description>
Zhijun He7787f7f2014-01-14 16:30:31 -0800565 <range>android.control.afAvailableModes</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800566 <details>Only effective if android.control.mode = AUTO.
Zhijun Hef5529232013-12-13 17:48:53 -0800567
Zhijun Hef163fa92014-01-14 09:59:04 -0800568 If the lens is controlled by the camera device auto-focus algorithm,
569 the camera device will report the current AF status in android.control.afState
570 in result metadata.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800571 <tag id="BC" />
572 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700573 <entry name="afRegions" type="int32" visibility="public"
574 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800575 <array>
Igor Murashkin617da162012-11-29 13:35:15 -0800576 <size>5</size>
577 <size>area_count</size>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800578 </array>
579 <description>List of areas to use for focus
Ruben Brunk76e4c7d2014-01-31 11:05:30 -0800580 estimation.</description>
581 <range>`area_count &lt;= android.control.maxRegions[2]`</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800582 <details>Each area is a rectangle plus weight: xmin, ymin,
Ruben Brunk76e4c7d2014-01-31 11:05:30 -0800583 xmax, ymax, weight. The rectangle is defined to be inclusive of the
Timothy Knightfd4cc6d2013-09-03 17:21:45 -0700584 specified coordinates.
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700585
586 The coordinate system is based on the active pixel array,
Timothy Knightfd4cc6d2013-09-03 17:21:45 -0700587 with (0,0) being the top-left pixel in the active pixel array, and
588 (android.sensor.info.activeArraySize.width - 1,
589 android.sensor.info.activeArraySize.height - 1) being the
590 bottom-right pixel in the active pixel array. The weight
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700591 should be nonnegative.
592
593 If all regions have 0 weight, then no specific focus area
594 needs to be used by the HAL. If the focusing region is
595 outside the current android.scaler.cropRegion, the HAL
596 should ignore the sections outside the region and output the
Ruben Brunk76e4c7d2014-01-31 11:05:30 -0800597 used sections in the frame metadata.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800598 <tag id="BC" />
599 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700600 <entry name="afTrigger" type="byte" visibility="public" enum="true">
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -0700601 <enum>
602 <value>IDLE
603 <notes>The trigger is idle.</notes>
604 </value>
605 <value>START
Zhijun He92e698d2014-01-13 16:24:31 -0800606 <notes>Autofocus will trigger now.</notes>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -0700607 </value>
608 <value>CANCEL
Zhijun He92e698d2014-01-13 16:24:31 -0800609 <notes>Autofocus will return to its initial
610 state, and cancel any currently active trigger.</notes>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -0700611 </value>
612 </enum>
Zhijun He92e698d2014-01-13 16:24:31 -0800613 <description>
614 Whether the camera device will trigger autofocus for this request.
615 </description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800616 <details>This entry is normally set to IDLE, or is not
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700617 included at all in the request settings.
618
Zhijun He92e698d2014-01-13 16:24:31 -0800619 When included and set to START, the camera device will trigger the
620 autofocus algorithm. If autofocus is disabled, this trigger has no effect.
621
622 When set to CANCEL, the camera device will cancel any active trigger,
623 and return to its initial AF state.
624
625 See android.control.afState for what that means for each AF mode.
626 </details>
Eino-Ville Talvala3b4383a2013-03-18 09:42:48 -0700627 <tag id="BC" />
628 </entry>
Igor Murashkinb8dc8812013-07-17 16:29:34 -0700629 <entry name="awbLock" type="byte" visibility="public" enum="true"
630 typedef="boolean">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800631 <enum>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800632 <value>OFF
633 <notes>Auto-whitebalance lock is disabled; the AWB
634 algorithm is free to update its parameters if in AUTO
635 mode.</notes></value>
Eino-Ville Talvala76548fe2013-01-11 13:57:19 -0800636 <value>ON
637 <notes>Auto-whitebalance lock is enabled; the AWB
Zhijun He4412faa2014-02-06 00:28:22 -0800638 algorithm must not update its parameters while the lock
639 is active.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800640 </enum>
641 <description>Whether AWB is currently locked to its
Zhijun He4412faa2014-02-06 00:28:22 -0800642 latest calculated values.</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800643 <details>Note that AWB lock is only meaningful for AUTO
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800644 mode; in other modes, AWB is already fixed to a specific
Zhijun He4412faa2014-02-06 00:28:22 -0800645 setting.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800646 <tag id="BC" />
647 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700648 <entry name="awbMode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800649 <enum>
Zhijun He7787f7f2014-01-14 16:30:31 -0800650 <value>OFF
651 <notes>
652 The camera device's auto white balance routine is disabled;
653 the application-selected color transform matrix
654 (android.colorCorrection.transform) and gains
655 (android.colorCorrection.gains) are used by the camera
656 device for manual white balance control.
657 </notes>
658 </value>
659 <value>AUTO
660 <notes>
661 The camera device's auto white balance routine is active;
662 the application's values for android.colorCorrection.transform
663 and android.colorCorrection.gains are ignored.
664 </notes>
665 </value>
666 <value>INCANDESCENT
667 <notes>
668 The camera device's auto white balance routine is disabled;
669 the camera device uses incandescent light as the assumed scene
670 illumination for white balance. While the exact white balance
671 transforms are up to the camera device, they will approximately
672 match the CIE standard illuminant A.
673 </notes>
674 </value>
675 <value>FLUORESCENT
676 <notes>
677 The camera device's auto white balance routine is disabled;
678 the camera device uses fluorescent light as the assumed scene
679 illumination for white balance. While the exact white balance
680 transforms are up to the camera device, they will approximately
681 match the CIE standard illuminant F2.
682 </notes>
683 </value>
684 <value>WARM_FLUORESCENT
685 <notes>
686 The camera device's auto white balance routine is disabled;
687 the camera device uses warm fluorescent light as the assumed scene
688 illumination for white balance. While the exact white balance
689 transforms are up to the camera device, they will approximately
690 match the CIE standard illuminant F4.
691 </notes>
692 </value>
693 <value>DAYLIGHT
694 <notes>
695 The camera device's auto white balance routine is disabled;
696 the camera device uses daylight light as the assumed scene
697 illumination for white balance. While the exact white balance
698 transforms are up to the camera device, they will approximately
699 match the CIE standard illuminant D65.
700 </notes>
701 </value>
702 <value>CLOUDY_DAYLIGHT
703 <notes>
704 The camera device's auto white balance routine is disabled;
705 the camera device uses cloudy daylight light as the assumed scene
706 illumination for white balance.
707 </notes>
708 </value>
709 <value>TWILIGHT
710 <notes>
711 The camera device's auto white balance routine is disabled;
712 the camera device uses twilight light as the assumed scene
713 illumination for white balance.
714 </notes>
715 </value>
716 <value>SHADE
717 <notes>
718 The camera device's auto white balance routine is disabled;
719 the camera device uses shade light as the assumed scene
720 illumination for white balance.
721 </notes>
722 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800723 </enum>
724 <description>Whether AWB is currently setting the color
725 transform fields, and what its illumination target
726 is</description>
Zhijun He7787f7f2014-01-14 16:30:31 -0800727 <range>android.control.awbAvailableModes</range>
728 <details>
729 This control is only effective if android.control.mode is AUTO.
Zhijun Hef5529232013-12-13 17:48:53 -0800730
Zhijun He7787f7f2014-01-14 16:30:31 -0800731 When set to the ON mode, the camera device's auto white balance
732 routine is enabled, overriding the application's selected
733 android.colorCorrection.transform, android.colorCorrection.gains and
734 android.colorCorrection.mode.
735
736 When set to the OFF mode, the camera device's auto white balance
737 routine is disabled. The applicantion manually controls the white
738 balance by android.colorCorrection.transform, android.colorCorrection.gains
739 and android.colorCorrection.mode.
740
741 When set to any other modes, the camera device's auto white balance
742 routine is disabled. The camera device uses each particular illumination
743 target for white balance adjustment.
744 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800745 <tag id="BC" />
746 <tag id="AWB" />
747 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700748 <entry name="awbRegions" type="int32" visibility="public"
749 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800750 <array>
Igor Murashkin617da162012-11-29 13:35:15 -0800751 <size>5</size>
752 <size>area_count</size>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800753 </array>
754 <description>List of areas to use for illuminant
Ruben Brunk76e4c7d2014-01-31 11:05:30 -0800755 estimation.</description>
756 <range>`area_count &lt;= android.control.maxRegions[1]`</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800757 <details>Only used in AUTO mode.
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700758
Timothy Knightfd4cc6d2013-09-03 17:21:45 -0700759 Each area is a rectangle plus weight: xmin, ymin,
Ruben Brunk76e4c7d2014-01-31 11:05:30 -0800760 xmax, ymax, weight. The rectangle is defined to be inclusive of the
Timothy Knightfd4cc6d2013-09-03 17:21:45 -0700761 specified coordinates.
762
763 The coordinate system is based on the active pixel array,
764 with (0,0) being the top-left pixel in the active pixel array, and
765 (android.sensor.info.activeArraySize.width - 1,
766 android.sensor.info.activeArraySize.height - 1) being the
767 bottom-right pixel in the active pixel array. The weight
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700768 should be nonnegative.
769
770 If all regions have 0 weight, then no specific metering area
771 needs to be used by the HAL. If the metering region is
772 outside the current android.scaler.cropRegion, the HAL
773 should ignore the sections outside the region and output the
Ruben Brunk76e4c7d2014-01-31 11:05:30 -0800774 used sections in the frame metadata.
775 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800776 <tag id="BC" />
777 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700778 <entry name="captureIntent" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800779 <enum>
Igor Murashkine6b66462012-11-26 15:26:38 -0800780 <value>CUSTOM
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800781 <notes>This request doesn't fall into the other
782 categories. Default to preview-like
783 behavior.</notes></value>
Igor Murashkine6b66462012-11-26 15:26:38 -0800784 <value>PREVIEW
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800785 <notes>This request is for a preview-like usecase. The
786 precapture trigger may be used to start off a metering
787 w/flash sequence</notes></value>
Igor Murashkine6b66462012-11-26 15:26:38 -0800788 <value>STILL_CAPTURE
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800789 <notes>This request is for a still capture-type
790 usecase.</notes></value>
Igor Murashkine6b66462012-11-26 15:26:38 -0800791 <value>VIDEO_RECORD
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800792 <notes>This request is for a video recording
793 usecase.</notes></value>
Igor Murashkine6b66462012-11-26 15:26:38 -0800794 <value>VIDEO_SNAPSHOT
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800795 <notes>This request is for a video snapshot (still
796 image while recording video) usecase</notes></value>
Igor Murashkine6b66462012-11-26 15:26:38 -0800797 <value>ZERO_SHUTTER_LAG
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800798 <notes>This request is for a ZSL usecase; the
799 application will stream full-resolution images and
800 reprocess one or several later for a final
801 capture</notes></value>
802 </enum>
Zhijun Heea27bc32014-01-15 13:47:59 -0800803 <description>Information to the camera device 3A (auto-exposure,
804 auto-focus, auto-white balance) routines about the purpose
805 of this capture, to help the camera device to decide optimal 3A
806 strategy.</description>
807 <range>All must be supported</range>
808 <details>This control is only effective if `android.control.mode != OFF`
809 and any 3A routine is active.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800810 <tag id="BC" />
811 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700812 <entry name="effectMode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800813 <enum>
Ruben Brunkb28b35f2014-01-14 17:17:19 -0800814 <value>OFF
815 <notes>
816 No color effect will be applied.
817 </notes>
818 </value>
819 <value optional="true">MONO
820 <notes>
821 A "monocolor" effect where the image is mapped into
822 a single color. This will typically be grayscale.
823 </notes>
824 </value>
825 <value optional="true">NEGATIVE
826 <notes>
827 A "photo-negative" effect where the image's colors
828 are inverted.
829 </notes>
830 </value>
831 <value optional="true">SOLARIZE
832 <notes>
833 A "solarisation" effect (Sabattier effect) where the
834 image is wholly or partially reversed in
835 tone.
836 </notes>
837 </value>
838 <value optional="true">SEPIA
839 <notes>
840 A "sepia" effect where the image is mapped into warm
841 gray, red, and brown tones.
842 </notes>
843 </value>
844 <value optional="true">POSTERIZE
845 <notes>
846 A "posterization" effect where the image uses
847 discrete regions of tone rather than a continuous
848 gradient of tones.
849 </notes>
850 </value>
851 <value optional="true">WHITEBOARD
852 <notes>
853 A "whiteboard" effect where the image is typically displayed
854 as regions of white, with black or grey details.
855 </notes>
856 </value>
857 <value optional="true">BLACKBOARD
858 <notes>
859 A "blackboard" effect where the image is typically displayed
860 as regions of black, with white or grey details.
861 </notes>
862 </value>
863 <value optional="true">AQUA
864 <notes>
865 An "aqua" effect where a blue hue is added to the image.
866 </notes>
867 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800868 </enum>
Ruben Brunkb28b35f2014-01-14 17:17:19 -0800869 <description>A special color effect to apply.</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800870 <range>android.control.availableEffects</range>
Ruben Brunkb28b35f2014-01-14 17:17:19 -0800871 <details>
872 When this mode is set, a color effect will be applied
873 to images produced by the camera device. The interpretation
874 and implementation of these color effects is left to the
875 implementor of the camera device, and should not be
876 depended on to be consistent (or present) across all
877 devices.
878
879 A color effect will only be applied if
880 android.control.mode != OFF.
881 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800882 <tag id="BC" />
883 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700884 <entry name="mode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800885 <enum>
886 <value>OFF
887 <notes>Full application control of pipeline. All 3A
888 routines are disabled, no other settings in
889 android.control.* have any effect</notes></value>
890 <value>AUTO
891 <notes>Use settings for each individual 3A routine.
892 Manual control of capture parameters is disabled. All
893 controls in android.control.* besides sceneMode take
894 effect</notes></value>
895 <value>USE_SCENE_MODE
896 <notes>Use specific scene mode. Enabling this disables
897 control.aeMode, control.awbMode and control.afMode
898 controls; the HAL must ignore those settings while
899 USE_SCENE_MODE is active (except for FACE_PRIORITY
900 scene mode). Other control entries are still active.
901 This setting can only be used if availableSceneModes !=
902 UNSUPPORTED</notes></value>
Zhijun He4412faa2014-02-06 00:28:22 -0800903 <value>OFF_KEEP_STATE
904 <notes>Same as OFF mode, except that this capture will not be
905 used by camera device background auto-exposure, auto-white balance and
906 auto-focus algorithms to update their statistics.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800907 </enum>
908 <description>Overall mode of 3A control
909 routines</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800910 <range>all must be supported</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -0800911 <details>High-level 3A control. When set to OFF, all 3A control
Zhijun Hef90eeaf2014-01-16 12:13:35 -0800912 by the camera device is disabled. The application must set the fields for
Zhijun Hef5529232013-12-13 17:48:53 -0800913 capture parameters itself.
914
915 When set to AUTO, the individual algorithm controls in
916 android.control.* are in effect, such as android.control.afMode.
917
918 When set to USE_SCENE_MODE, the individual controls in
Zhijun Hef90eeaf2014-01-16 12:13:35 -0800919 android.control.* are mostly disabled, and the camera device implements
Zhijun Hef5529232013-12-13 17:48:53 -0800920 one of the scene mode settings (such as ACTION, SUNSET, or PARTY)
Zhijun Hef90eeaf2014-01-16 12:13:35 -0800921 as it wishes. The camera device scene mode 3A settings are provided by
Zhijun He4412faa2014-02-06 00:28:22 -0800922 android.control.sceneModeOverrides.
923
924 When set to OFF_KEEP_STATE, it is similar to OFF mode, the only difference
925 is that this frame will not be used by camera device background 3A statistics
926 update, as if this frame is never captured. This mode can be used in the scenario
927 where the application doesn't want a 3A manual control capture to affect
928 the subsequent auto 3A capture results.
929 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800930 <tag id="BC" />
931 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -0700932 <entry name="sceneMode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -0800933 <enum>
Ruben Brunk9e28ea72014-01-14 18:55:29 -0800934 <value id="0">DISABLED
935 <notes>
936 Indicates that no scene modes are set for a given capture request.
937 </notes>
938 </value>
Igor Murashkine6b66462012-11-26 15:26:38 -0800939 <value>FACE_PRIORITY
Ruben Brunk9e28ea72014-01-14 18:55:29 -0800940 <notes>If face detection support exists, use face
941 detection data for auto-focus, auto-white balance, and
942 auto-exposure routines. If face detection statistics are
943 disabled (i.e. android.statistics.faceDetectMode is set to OFF),
944 this should still operate correctly (but will not return
945 face detection statistics to the framework).
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -0700946
Ruben Brunk9e28ea72014-01-14 18:55:29 -0800947 Unlike the other scene modes, android.control.aeMode,
948 android.control.awbMode, and android.control.afMode
949 remain active when FACE_PRIORITY is set.
950 </notes>
951 </value>
952 <value optional="true">ACTION
953 <notes>
954 Optimized for photos of quickly moving objects.
955 Similar to SPORTS.
956 </notes>
957 </value>
958 <value optional="true">PORTRAIT
959 <notes>
960 Optimized for still photos of people.
961 </notes>
962 </value>
963 <value optional="true">LANDSCAPE
964 <notes>
965 Optimized for photos of distant macroscopic objects.
966 </notes>
967 </value>
968 <value optional="true">NIGHT
969 <notes>
970 Optimized for low-light settings.
971 </notes>
972 </value>
973 <value optional="true">NIGHT_PORTRAIT
974 <notes>
975 Optimized for still photos of people in low-light
976 settings.
977 </notes>
978 </value>
979 <value optional="true">THEATRE
980 <notes>
981 Optimized for dim, indoor settings where flash must
982 remain off.
983 </notes>
984 </value>
985 <value optional="true">BEACH
986 <notes>
987 Optimized for bright, outdoor beach settings.
988 </notes>
989 </value>
990 <value optional="true">SNOW
991 <notes>
992 Optimized for bright, outdoor settings containing snow.
993 </notes>
994 </value>
995 <value optional="true">SUNSET
996 <notes>
997 Optimized for scenes of the setting sun.
998 </notes>
999 </value>
1000 <value optional="true">STEADYPHOTO
1001 <notes>
1002 Optimized to avoid blurry photos due to small amounts of
1003 device motion (for example: due to hand shake).
1004 </notes>
1005 </value>
1006 <value optional="true">FIREWORKS
1007 <notes>
1008 Optimized for nighttime photos of fireworks.
1009 </notes>
1010 </value>
1011 <value optional="true">SPORTS
1012 <notes>
1013 Optimized for photos of quickly moving people.
1014 Similar to ACTION.
1015 </notes>
1016 </value>
1017 <value optional="true">PARTY
1018 <notes>
1019 Optimized for dim, indoor settings with multiple moving
1020 people.
1021 </notes>
1022 </value>
1023 <value optional="true">CANDLELIGHT
1024 <notes>
1025 Optimized for dim settings where the main light source
1026 is a flame.
1027 </notes>
1028 </value>
1029 <value optional="true">BARCODE
1030 <notes>
1031 Optimized for accurately capturing a photo of barcode
1032 for use by camera applications that wish to read the
1033 barcode value.
1034 </notes>
1035 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001036 </enum>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08001037 <description>
1038 A camera mode optimized for conditions typical in a particular
1039 capture setting.
1040 </description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001041 <range>android.control.availableSceneModes</range>
Ruben Brunk9e28ea72014-01-14 18:55:29 -08001042 <details>
1043 This is the mode that that is active when
1044 `android.control.mode == USE_SCENE_MODE`. Aside from FACE_PRIORITY,
1045 these modes will disable android.control.aeMode,
1046 android.control.awbMode, and android.control.afMode while in use.
1047
1048 The interpretation and implementation of these scene modes is left
1049 to the implementor of the camera device. Their behavior will not be
1050 consistent across all devices, and any given device may only implement
1051 a subset of these modes.
1052 </details>
1053 <hal_details>
1054 HAL implementations that include scene modes are expected to provide
1055 the per-scene settings to use for android.control.aeMode,
1056 android.control.awbMode, and android.control.afMode in
1057 android.control.sceneModeOverrides.
1058 </hal_details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001059 <tag id="BC" />
1060 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001061 <entry name="videoStabilizationMode" type="byte" visibility="public"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07001062 enum="true" typedef="boolean">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001063 <enum>
1064 <value>OFF</value>
1065 <value>ON</value>
1066 </enum>
1067 <description>Whether video stabilization is
1068 active</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001069 <details>If enabled, video stabilization can modify the
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001070 android.scaler.cropRegion to keep the video stream
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001071 stabilized</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001072 <tag id="BC" />
1073 </entry>
1074 </controls>
1075 <static>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001076 <entry name="aeAvailableAntibandingModes" type="byte" visibility="public"
1077 type_notes="list of enums" container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001078 <array>
1079 <size>n</size>
1080 </array>
Eino-Ville Talvala19ce2c12013-12-30 12:03:45 -08001081 <description>
1082 The set of auto-exposure antibanding modes that are
1083 supported by this camera device.
1084 </description>
1085 <details>
1086 Not all of the auto-exposure anti-banding modes may be
1087 supported by a given camera device. This field lists the
1088 valid anti-banding modes that the application may request
1089 for this camera device; they must include AUTO.
1090 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001091 </entry>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08001092 <entry name="aeAvailableModes" type="byte" visibility="public"
1093 type_notes="list of enums" container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001094 <array>
1095 <size>n</size>
1096 </array>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08001097 <description>
1098 The set of auto-exposure modes that are supported by this
1099 camera device.
1100 </description>
1101 <details>
1102 Not all the auto-exposure modes may be supported by a
1103 given camera device, especially if no flash unit is
1104 available. This entry lists the valid modes for
1105 android.control.aeMode for this camera device.
1106
1107 All camera devices support ON, and all camera devices with
1108 flash units support ON_AUTO_FLASH and
1109 ON_ALWAYS_FLASH.
1110
1111 Full-capability camera devices always support OFF mode,
1112 which enables application control of camera exposure time,
1113 sensitivity, and frame duration.
1114 </details>
1115 <tag id="BC" />
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001116 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001117 <entry name="aeAvailableTargetFpsRanges" type="int32" visibility="public"
1118 type_notes="list of pairs of frame rates"
1119 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001120 <array>
1121 <size>2</size>
1122 <size>n</size>
1123 </array>
1124 <description>List of frame rate ranges supported by the
1125 AE algorithm/hardware</description>
1126 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001127 <entry name="aeCompensationRange" type="int32" visibility="public"
1128 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001129 <array>
1130 <size>2</size>
1131 </array>
1132 <description>Maximum and minimum exposure compensation
1133 setting, in counts of
1134 android.control.aeCompensationStepSize</description>
1135 <range>At least (-2,2)/(exp compensation step
1136 size)</range>
1137 <tag id="BC" />
1138 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001139 <entry name="aeCompensationStep" type="rational" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001140 <description>Smallest step by which exposure compensation
1141 can be changed</description>
1142 <range>&lt;= 1/2</range>
1143 <tag id="BC" />
1144 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001145 <entry name="afAvailableModes" type="byte" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001146 type_notes="List of enums" container="array">
1147 <array>
1148 <size>n</size>
1149 </array>
1150 <description>List of AF modes that can be
Zhijun Hef163fa92014-01-14 09:59:04 -08001151 selected with android.control.afMode.</description>
1152 <details>
1153 Not all the auto-focus modes may be supported by a
1154 given camera device. This entry lists the valid modes for
1155 android.control.afMode for this camera device.
1156
1157 All camera devices will support OFF mode, and all camera devices with
1158 adjustable focuser units (`android.lens.info.minimumFocusDistance &gt; 0`)
1159 will support AUTO mode.
1160 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001161 <tag id="BC" />
1162 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001163 <entry name="availableEffects" type="byte" visibility="public"
Ruben Brunkb28b35f2014-01-14 17:17:19 -08001164 type_notes="List of enums (android.control.effectMode)." container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001165 <array>
1166 <size>n</size>
1167 </array>
Ruben Brunkb28b35f2014-01-14 17:17:19 -08001168 <description>
1169 List containing the subset of color effects
1170 specified in android.control.effectMode that is supported by
1171 this device.
1172 </description>
1173 <range>
1174 Any subset of enums from those specified in
1175 android.control.effectMode. OFF must be included in any subset.
1176 </range>
1177 <details>
1178 This list contains the color effect modes that can be applied to
1179 images produced by the camera device. Only modes that have
1180 been fully implemented for the current device may be included here.
1181 Implementations are not expected to be consistent across all devices.
1182 If no color effect modes are available for a device, this should
1183 simply be set to OFF.
1184
1185 A color effect will only be applied if
1186 android.control.mode != OFF.
1187 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001188 <tag id="BC" />
1189 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001190 <entry name="availableSceneModes" type="byte" visibility="public"
Ruben Brunkbf870fc2014-01-14 17:46:58 -08001191 type_notes="List of enums (android.control.sceneMode)."
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001192 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001193 <array>
1194 <size>n</size>
1195 </array>
Ruben Brunkbf870fc2014-01-14 17:46:58 -08001196 <description>
1197 List containing a subset of scene modes
1198 specified in android.control.sceneMode.
1199 </description>
1200 <range>
1201 Any subset of the enums specified in android.control.sceneMode
1202 not including DISABLED, or solely DISABLED if no
1203 scene modes are available. FACE_PRIORITY must be included
1204 if face detection is supported (i.e.`android.statistics.info.maxFaceCount &gt; 0`).
1205 </range>
1206 <details>
1207 This list contains scene modes that can be set for the camera device.
1208 Only scene modes that have been fully implemented for the
1209 camera device may be included here. Implementations are not expected
1210 to be consistent across all devices. If no scene modes are supported
1211 by the camera device, this will be set to `[DISABLED]`.
1212 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001213 <tag id="BC" />
1214 </entry>
1215 <entry name="availableVideoStabilizationModes" type="byte"
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001216 visibility="public" type_notes="List of enums." container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001217 <array>
1218 <size>n</size>
1219 </array>
1220 <description>List of video stabilization modes that can
1221 be supported</description>
1222 <range>OFF must be included</range>
1223 <tag id="BC" />
1224 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001225 <entry name="awbAvailableModes" type="byte" visibility="public"
Zhijun He7787f7f2014-01-14 16:30:31 -08001226 type_notes="List of enums"
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001227 container="array">
Alex Raya4251d92013-04-30 16:43:44 -07001228 <array>
1229 <size>n</size>
1230 </array>
Zhijun He7787f7f2014-01-14 16:30:31 -08001231 <description>The set of auto-white-balance modes (android.control.awbMode)
1232 that are supported by this camera device.</description>
1233 <details>
1234 Not all the auto-white-balance modes may be supported by a
1235 given camera device. This entry lists the valid modes for
1236 android.control.awbMode for this camera device.
1237
1238 All camera devices will support ON mode.
1239
1240 Full-capability camera devices will always support OFF mode,
1241 which enables application control of white balance, by using
1242 android.colorCorrection.transform and android.colorCorrection.gains
1243 (android.colorCorrection.mode must be set to TRANSFORM_MATRIX).
1244 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001245 <tag id="BC" />
1246 </entry>
Ruben Brunk120eea42014-01-15 15:55:08 -08001247 <entry name="maxRegions" type="int32" visibility="public" container="array">
1248 <array>
1249 <size>3</size>
1250 </array>
1251 <description>
1252 List of the maximum number of regions that can be used for metering in
1253 auto-exposure (AE), auto-white balance (AWB), and auto-focus (AF);
1254 this corresponds to the the maximum number of elements in
1255 android.control.aeRegions, android.control.awbRegions,
1256 and android.control.afRegions.
1257 </description>
1258 <range>
1259 Value must be &amp;gt;= 0 for each element. For full-capability devices
1260 this value must be &amp;gt;= 1 for AE and AF. The order of the elements is:
1261 `(AE, AWB, AF)`.</range>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001262 <tag id="BC" />
1263 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001264 <entry name="sceneModeOverrides" type="byte" visibility="system"
1265 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001266 <array>
1267 <size>3</size>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001268 <size>length(availableSceneModes)</size>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001269 </array>
Ruben Brunkcf77fe92014-01-14 19:31:21 -08001270 <description>
1271 Ordered list of auto-exposure, auto-white balance, and auto-focus
1272 settings to use with each available scene mode.
1273 </description>
1274 <range>
1275 For each available scene mode, the list must contain three
1276 entries containing the android.control.aeMode,
1277 android.control.awbMode, and android.control.afMode values used
1278 by the camera device. The entry order is `(aeMode, awbMode, afMode)`
1279 where aeMode has the lowest index position.
1280 </range>
1281 <details>
1282 When a scene mode is enabled, the camera device is expected
1283 to override android.control.aeMode, android.control.awbMode,
1284 and android.control.afMode with its preferred settings for
1285 that scene mode.
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001286
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001287 The order of this list matches that of availableSceneModes,
Ruben Brunkcf77fe92014-01-14 19:31:21 -08001288 with 3 entries for each mode. The overrides listed
1289 for FACE_PRIORITY are ignored, since for that
1290 mode the application-set android.control.aeMode,
1291 android.control.awbMode, and android.control.afMode values are
1292 used instead, matching the behavior when android.control.mode
1293 is set to AUTO. It is recommended that the FACE_PRIORITY
1294 overrides should be set to 0.
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001295
Ruben Brunkcf77fe92014-01-14 19:31:21 -08001296 For example, if availableSceneModes contains
1297 `(FACE_PRIORITY, ACTION, NIGHT)`, then the camera framework
1298 expects sceneModeOverrides to have 9 entries formatted like:
1299 `(0, 0, 0, ON_AUTO_FLASH, AUTO, CONTINUOUS_PICTURE,
1300 ON_AUTO_FLASH, INCANDESCENT, AUTO)`.
1301 </details>
1302 <hal_details>
1303 To maintain backward compatibility, this list will be made available
1304 in the static metadata of the camera service. The camera service will
1305 use these values to set android.control.aeMode,
1306 android.control.awbMode, and android.control.afMode when using a scene
1307 mode other than FACE_PRIORITY.
1308 </hal_details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001309 <tag id="BC" />
1310 </entry>
1311 </static>
1312 <dynamic>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001313 <entry name="aePrecaptureId" type="int32" visibility="hidden">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001314 <description>The ID sent with the latest
1315 CAMERA2_TRIGGER_PRECAPTURE_METERING call</description>
Zhijun He7391bb62014-02-05 00:09:04 -08001316 <range>**Deprecated**. Do not use.</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001317 <details>Must be 0 if no
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001318 CAMERA2_TRIGGER_PRECAPTURE_METERING trigger received yet
1319 by HAL. Always updated even if AE algorithm ignores the
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001320 trigger</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001321 </entry>
Eino-Ville Talvala9fa0d902014-01-08 16:16:53 -08001322 <clone entry="android.control.aeMode" kind="controls">
1323 </clone>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001324 <clone entry="android.control.aeRegions" kind="controls">
1325 </clone>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001326 <entry name="aeState" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001327 <enum>
1328 <value>INACTIVE
Zhijun He92e698d2014-01-13 16:24:31 -08001329 <notes>AE is off or recently reset. When a camera device is opened, it starts in
Alex Ray7aeb05e2013-03-27 16:26:41 -07001330 this state.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001331 <value>SEARCHING
1332 <notes>AE doesn't yet have a good set of control values
Zhijun He92e698d2014-01-13 16:24:31 -08001333 for the current scene.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001334 <value>CONVERGED
1335 <notes>AE has a good set of control values for the
Zhijun He92e698d2014-01-13 16:24:31 -08001336 current scene.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001337 <value>LOCKED
Zhijun He92e698d2014-01-13 16:24:31 -08001338 <notes>AE has been locked.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001339 <value>FLASH_REQUIRED
1340 <notes>AE has a good set of control values, but flash
1341 needs to be fired for good quality still
Zhijun He92e698d2014-01-13 16:24:31 -08001342 capture.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001343 <value>PRECAPTURE
1344 <notes>AE has been asked to do a precapture sequence
Zhijun He92e698d2014-01-13 16:24:31 -08001345 (through the android.control.aePrecaptureTrigger START),
1346 and is currently executing it. Once PRECAPTURE
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001347 completes, AE will transition to CONVERGED or
Zhijun He92e698d2014-01-13 16:24:31 -08001348 FLASH_REQUIRED as appropriate.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001349 </enum>
1350 <description>Current state of AE algorithm</description>
Zhijun He92e698d2014-01-13 16:24:31 -08001351 <details>Switching between or enabling AE modes (android.control.aeMode) always
1352 resets the AE state to INACTIVE. Similarly, switching between android.control.mode,
1353 or android.control.sceneMode if `android.control.mode == USE_SCENE_MODE` resets all
1354 the algorithm states to INACTIVE.
1355
1356 The camera device can do several state transitions between two results, if it is
1357 allowed by the state transition table. For example: INACTIVE may never actually be
1358 seen in a result.
1359
1360 The state in the result is the state for this image (in sync with this image): if
1361 AE state becomes CONVERGED, then the image data associated with this result should
1362 be good to use.
1363
1364 Below are state transition tables for different AE modes.
1365
1366 State | Transition Cause | New State | Notes
1367 :------------:|:----------------:|:---------:|:-----------------------:
1368 INACTIVE | | INACTIVE | Camera device auto exposure algorithm is disabled
1369
1370 When android.control.aeMode is AE_MODE_ON_*:
1371
1372 State | Transition Cause | New State | Notes
1373 :-------------:|:--------------------------------------------:|:--------------:|:-----------------:
1374 INACTIVE | Camera device initiates AE scan | SEARCHING | Values changing
1375 INACTIVE | android.control.aeLock is ON | LOCKED | Values locked
1376 SEARCHING | Camera device finishes AE scan | CONVERGED | Good values, not changing
1377 SEARCHING | Camera device finishes AE scan | FLASH_REQUIRED | Converged but too dark w/o flash
1378 SEARCHING | android.control.aeLock is ON | LOCKED | Values locked
1379 CONVERGED | Camera device initiates AE scan | SEARCHING | Values changing
1380 CONVERGED | android.control.aeLock is ON | LOCKED | Values locked
1381 FLASH_REQUIRED | Camera device initiates AE scan | SEARCHING | Values changing
1382 FLASH_REQUIRED | android.control.aeLock is ON | LOCKED | Values locked
1383 LOCKED | android.control.aeLock is OFF | SEARCHING | Values not good after unlock
1384 LOCKED | android.control.aeLock is OFF | CONVERGED | Values good after unlock
1385 LOCKED | android.control.aeLock is OFF | FLASH_REQUIRED | Exposure good, but too dark
1386 PRECAPTURE | Sequence done. android.control.aeLock is OFF | CONVERGED | Ready for high-quality capture
1387 PRECAPTURE | Sequence done. android.control.aeLock is ON | LOCKED | Ready for high-quality capture
1388 Any state | android.control.aePrecaptureTrigger is START | PRECAPTURE | Start AE precapture metering sequence
1389 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001390 </entry>
1391 <clone entry="android.control.afMode" kind="controls">
1392 </clone>
1393 <clone entry="android.control.afRegions" kind="controls">
1394 </clone>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001395 <entry name="afState" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001396 <enum>
1397 <value>INACTIVE
1398 <notes>AF off or has not yet tried to scan/been asked
Alex Ray7aeb05e2013-03-27 16:26:41 -07001399 to scan. When a camera device is opened, it starts in
1400 this state.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001401 <value>PASSIVE_SCAN
Eino-Ville Talvala492ba7c2013-09-20 17:24:00 -07001402 <notes>if CONTINUOUS_* modes are supported. AF is
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001403 currently doing an AF scan initiated by a continuous
1404 autofocus mode</notes></value>
1405 <value>PASSIVE_FOCUSED
Eino-Ville Talvala492ba7c2013-09-20 17:24:00 -07001406 <notes>if CONTINUOUS_* modes are supported. AF currently
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001407 believes it is in focus, but may restart scanning at
1408 any time.</notes></value>
1409 <value>ACTIVE_SCAN
Eino-Ville Talvala492ba7c2013-09-20 17:24:00 -07001410 <notes>if AUTO or MACRO modes are supported. AF is doing
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001411 an AF scan because it was triggered by AF
1412 trigger</notes></value>
Igor Murashkine6b66462012-11-26 15:26:38 -08001413 <value>FOCUSED_LOCKED
Eino-Ville Talvala492ba7c2013-09-20 17:24:00 -07001414 <notes>if any AF mode besides OFF is supported. AF
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001415 believes it is focused correctly and is
1416 locked</notes></value>
Igor Murashkine6b66462012-11-26 15:26:38 -08001417 <value>NOT_FOCUSED_LOCKED
Eino-Ville Talvala492ba7c2013-09-20 17:24:00 -07001418 <notes>if any AF mode besides OFF is supported. AF has
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001419 failed to focus successfully and is
1420 locked</notes></value>
Eino-Ville Talvala492ba7c2013-09-20 17:24:00 -07001421 <value>PASSIVE_UNFOCUSED
1422 <notes>if CONTINUOUS_* modes are supported. AF finished a
1423 passive scan without finding focus, and may restart
1424 scanning at any time.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001425 </enum>
1426 <description>Current state of AF algorithm</description>
Zhijun He92e698d2014-01-13 16:24:31 -08001427 <details>
1428 Switching between or enabling AF modes (android.control.afMode) always
1429 resets the AF state to INACTIVE. Similarly, switching between android.control.mode,
1430 or android.control.sceneMode if `android.control.mode == USE_SCENE_MODE` resets all
1431 the algorithm states to INACTIVE.
1432
1433 The camera device can do several state transitions between two results, if it is
1434 allowed by the state transition table. For example: INACTIVE may never actually be
1435 seen in a result.
1436
1437 The state in the result is the state for this image (in sync with this image): if
1438 AF state becomes FOCUSED, then the image data associated with this result should
1439 be sharp.
1440
1441 Below are state transition tables for different AF modes.
1442
1443 When android.control.afMode is AF_MODE_OFF or AF_MODE_EDOF:
1444
1445 State | Transition Cause | New State | Notes
1446 :------------:|:----------------:|:---------:|:-----------:
1447 INACTIVE | | INACTIVE | Never changes
1448
1449 When android.control.afMode is AF_MODE_AUTO or AF_MODE_MACRO:
1450
1451 State | Transition Cause | New State | Notes
1452 :-----------------:|:----------------:|:------------------:|:--------------:
1453 INACTIVE | AF_TRIGGER | ACTIVE_SCAN | Start AF sweep, Lens now moving
1454 ACTIVE_SCAN | AF sweep done | FOCUSED_LOCKED | Focused, Lens now locked
1455 ACTIVE_SCAN | AF sweep done | NOT_FOCUSED_LOCKED | Not focused, Lens now locked
1456 ACTIVE_SCAN | AF_CANCEL | INACTIVE | Cancel/reset AF, Lens now locked
1457 FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Cancel/reset AF
1458 FOCUSED_LOCKED | AF_TRIGGER | ACTIVE_SCAN | Start new sweep, Lens now moving
1459 NOT_FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Cancel/reset AF
1460 NOT_FOCUSED_LOCKED | AF_TRIGGER | ACTIVE_SCAN | Start new sweep, Lens now moving
1461 Any state | Mode change | INACTIVE |
1462
1463 When android.control.afMode is AF_MODE_CONTINUOUS_VIDEO:
1464
1465 State | Transition Cause | New State | Notes
1466 :-----------------:|:-----------------------------------:|:------------------:|:--------------:
1467 INACTIVE | Camera device initiates new scan | PASSIVE_SCAN | Start AF scan, Lens now moving
1468 INACTIVE | AF_TRIGGER | NOT_FOCUSED_LOCKED | AF state query, Lens now locked
1469 PASSIVE_SCAN | Camera device completes current scan| PASSIVE_FOCUSED | End AF scan, Lens now locked
1470 PASSIVE_SCAN | Camera device fails current scan | PASSIVE_UNFOCUSED | End AF scan, Lens now locked
1471 PASSIVE_SCAN | AF_TRIGGER | FOCUSED_LOCKED | Immediate trans. If focus is good, Lens now locked
1472 PASSIVE_SCAN | AF_TRIGGER | NOT_FOCUSED_LOCKED | Immediate trans. if focus is bad, Lens now locked
1473 PASSIVE_SCAN | AF_CANCEL | INACTIVE | Reset lens position, Lens now locked
1474 PASSIVE_FOCUSED | Camera device initiates new scan | PASSIVE_SCAN | Start AF scan, Lens now moving
1475 PASSIVE_UNFOCUSED | Camera device initiates new scan | PASSIVE_SCAN | Start AF scan, Lens now moving
1476 PASSIVE_FOCUSED | AF_TRIGGER | FOCUSED_LOCKED | Immediate trans. Lens now locked
1477 PASSIVE_UNFOCUSED | AF_TRIGGER | NOT_FOCUSED_LOCKED | Immediate trans. Lens now locked
1478 FOCUSED_LOCKED | AF_TRIGGER | FOCUSED_LOCKED | No effect
1479 FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Restart AF scan
1480 NOT_FOCUSED_LOCKED | AF_TRIGGER | NOT_FOCUSED_LOCKED | No effect
1481 NOT_FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Restart AF scan
1482
1483 When android.control.afMode is AF_MODE_CONTINUOUS_PICTURE:
1484
1485 State | Transition Cause | New State | Notes
1486 :-----------------:|:------------------------------------:|:------------------:|:--------------:
1487 INACTIVE | Camera device initiates new scan | PASSIVE_SCAN | Start AF scan, Lens now moving
1488 INACTIVE | AF_TRIGGER | NOT_FOCUSED_LOCKED | AF state query, Lens now locked
1489 PASSIVE_SCAN | Camera device completes current scan | PASSIVE_FOCUSED | End AF scan, Lens now locked
1490 PASSIVE_SCAN | Camera device fails current scan | PASSIVE_UNFOCUSED | End AF scan, Lens now locked
1491 PASSIVE_SCAN | AF_TRIGGER | FOCUSED_LOCKED | Eventual trans. once focus good, Lens now locked
1492 PASSIVE_SCAN | AF_TRIGGER | NOT_FOCUSED_LOCKED | Eventual trans. if cannot focus, Lens now locked
1493 PASSIVE_SCAN | AF_CANCEL | INACTIVE | Reset lens position, Lens now locked
1494 PASSIVE_FOCUSED | Camera device initiates new scan | PASSIVE_SCAN | Start AF scan, Lens now moving
1495 PASSIVE_UNFOCUSED | Camera device initiates new scan | PASSIVE_SCAN | Start AF scan, Lens now moving
1496 PASSIVE_FOCUSED | AF_TRIGGER | FOCUSED_LOCKED | Immediate trans. Lens now locked
1497 PASSIVE_UNFOCUSED | AF_TRIGGER | NOT_FOCUSED_LOCKED | Immediate trans. Lens now locked
1498 FOCUSED_LOCKED | AF_TRIGGER | FOCUSED_LOCKED | No effect
1499 FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Restart AF scan
1500 NOT_FOCUSED_LOCKED | AF_TRIGGER | NOT_FOCUSED_LOCKED | No effect
1501 NOT_FOCUSED_LOCKED | AF_CANCEL | INACTIVE | Restart AF scan
1502 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001503 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001504 <entry name="afTriggerId" type="int32" visibility="hidden">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001505 <description>The ID sent with the latest
1506 CAMERA2_TRIGGER_AUTOFOCUS call</description>
Zhijun He7391bb62014-02-05 00:09:04 -08001507 <range>**Deprecated**. Do not use.</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001508 <details>Must be 0 if no CAMERA2_TRIGGER_AUTOFOCUS trigger
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001509 received yet by HAL. Always updated even if AF algorithm
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001510 ignores the trigger</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001511 </entry>
1512 <clone entry="android.control.awbMode" kind="controls">
1513 </clone>
1514 <clone entry="android.control.awbRegions" kind="controls">
1515 </clone>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001516 <entry name="awbState" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001517 <enum>
1518 <value>INACTIVE
Alex Ray7aeb05e2013-03-27 16:26:41 -07001519 <notes>AWB is not in auto mode. When a camera device is opened, it
1520 starts in this state.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001521 <value>SEARCHING
1522 <notes>AWB doesn't yet have a good set of control
Zhijun He92e698d2014-01-13 16:24:31 -08001523 values for the current scene.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001524 <value>CONVERGED
1525 <notes>AWB has a good set of control values for the
Zhijun He92e698d2014-01-13 16:24:31 -08001526 current scene.</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001527 <value>LOCKED
Zhijun He92e698d2014-01-13 16:24:31 -08001528 <notes>AWB has been locked.
1529 </notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001530 </enum>
1531 <description>Current state of AWB algorithm</description>
Zhijun He92e698d2014-01-13 16:24:31 -08001532 <details>Switching between or enabling AWB modes (android.control.awbMode) always
1533 resets the AWB state to INACTIVE. Similarly, switching between android.control.mode,
1534 or android.control.sceneMode if `android.control.mode == USE_SCENE_MODE` resets all
1535 the algorithm states to INACTIVE.
1536
1537 The camera device can do several state transitions between two results, if it is
1538 allowed by the state transition table. So INACTIVE may never actually be seen in
1539 a result.
1540
1541 The state in the result is the state for this image (in sync with this image): if
1542 AWB state becomes CONVERGED, then the image data associated with this result should
1543 be good to use.
1544
1545 Below are state transition tables for different AWB modes.
1546
1547 When `android.control.awbMode != AWB_MODE_AUTO`:
1548
1549 State | Transition Cause | New State | Notes
1550 :------------:|:----------------:|:---------:|:-----------------------:
1551 INACTIVE | |INACTIVE |Camera device auto white balance algorithm is disabled
1552
1553 When android.control.awbMode is AWB_MODE_AUTO:
1554
1555 State | Transition Cause | New State | Notes
1556 :-------------:|:--------------------------------:|:-------------:|:-----------------:
1557 INACTIVE | Camera device initiates AWB scan | SEARCHING | Values changing
1558 INACTIVE | android.control.awbLock is ON | LOCKED | Values locked
1559 SEARCHING | Camera device finishes AWB scan | CONVERGED | Good values, not changing
1560 SEARCHING | android.control.awbLock is ON | LOCKED | Values locked
1561 CONVERGED | Camera device initiates AWB scan | SEARCHING | Values changing
1562 CONVERGED | android.control.awbLock is ON | LOCKED | Values locked
1563 LOCKED | android.control.awbLock is OFF | SEARCHING | Values not good after unlock
1564 LOCKED | android.control.awbLock is OFF | CONVERGED | Values good after unlock
1565 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001566 </entry>
1567 <clone entry="android.control.mode" kind="controls">
1568 </clone>
1569 </dynamic>
1570 </section>
1571 <section name="demosaic">
1572 <controls>
Igor Murashkinb556bc42012-12-04 16:07:21 -08001573 <entry name="mode" type="byte" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001574 <enum>
1575 <value>FAST
1576 <notes>Minimal or no slowdown of frame rate compared to
1577 Bayer RAW output</notes></value>
1578 <value>HIGH_QUALITY
1579 <notes>High-quality may reduce output frame
1580 rate</notes></value>
1581 </enum>
1582 <description>Controls the quality of the demosaicing
1583 processing</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001584 <tag id="V1" />
1585 </entry>
1586 </controls>
1587 </section>
1588 <section name="edge">
1589 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001590 <entry name="mode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001591 <enum>
1592 <value>OFF
1593 <notes>No edge enhancement is applied</notes></value>
1594 <value>FAST
Zhijun Heb1c5bab2013-12-16 15:08:14 -08001595 <notes>Must not slow down frame rate relative to sensor
1596 output</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001597 <value>HIGH_QUALITY
1598 <notes>Frame rate may be reduced by high
1599 quality</notes></value>
1600 </enum>
1601 <description>Operation mode for edge
1602 enhancement</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001603 <details>Edge/sharpness/detail enhancement. OFF means no
Zhijun Heb1c5bab2013-12-16 15:08:14 -08001604 enhancement will be applied by the HAL.
1605
Zhijun Hef90eeaf2014-01-16 12:13:35 -08001606 FAST/HIGH_QUALITY both mean camera device determined enhancement
Zhijun Heb1c5bab2013-12-16 15:08:14 -08001607 will be applied. HIGH_QUALITY mode indicates that the
Zhijun Hef90eeaf2014-01-16 12:13:35 -08001608 camera device will use the highest-quality enhancement algorithms,
1609 even if it slows down capture rate. FAST means the camera device will
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001610 not slow down capture rate when applying edge enhancement.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001611 </entry>
1612 <entry name="strength" type="byte">
1613 <description>Control the amount of edge enhancement
1614 applied to the images</description>
1615 <units>1-10; 10 is maximum sharpening</units>
1616 </entry>
1617 </controls>
1618 <dynamic>
1619 <clone entry="android.edge.mode" kind="controls"></clone>
1620 </dynamic>
1621 </section>
1622 <section name="flash">
1623 <controls>
1624 <entry name="firingPower" type="byte">
1625 <description>Power for flash firing/torch</description>
1626 <units>10 is max power; 0 is no flash. Linear</units>
1627 <range>0 - 10</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001628 <details>Power for snapshot may use a different scale than
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001629 for torch mode. Only one entry for torch mode will be
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001630 used</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001631 <tag id="V1" />
1632 </entry>
1633 <entry name="firingTime" type="int64">
1634 <description>Firing time of flash relative to start of
1635 exposure</description>
1636 <units>nanoseconds</units>
1637 <range>0-(exposure time-flash duration)</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001638 <details>Clamped to (0, exposure time - flash
1639 duration).</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001640 <tag id="V1" />
1641 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001642 <entry name="mode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001643 <enum>
1644 <value>OFF
Zhijun Heea27bc32014-01-15 13:47:59 -08001645 <notes>
1646 Do not fire the flash for this capture.
1647 </notes>
1648 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001649 <value>SINGLE
Zhijun Heea27bc32014-01-15 13:47:59 -08001650 <notes>
1651 If the flash is available and charged, fire flash
1652 for this capture based on android.flash.firingPower and
1653 android.flash.firingTime.
1654 </notes>
1655 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001656 <value>TORCH
Zhijun Heea27bc32014-01-15 13:47:59 -08001657 <notes>
1658 Transition flash to continuously on.
1659 </notes>
1660 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001661 </enum>
Zhijun Heea27bc32014-01-15 13:47:59 -08001662 <description>The desired mode for for the camera device's flash control.</description>
1663 <details>
1664 This control is only effective when flash unit is available
Zhijun Hebdc94c42014-01-21 18:28:30 -08001665 (`android.flash.info.available == true`).
Zhijun Heea27bc32014-01-15 13:47:59 -08001666
1667 When this control is used, the android.control.aeMode must be set to ON or OFF.
1668 Otherwise, the camera device auto-exposure related flash control (ON_AUTO_FLASH,
1669 ON_ALWAYS_FLASH, or ON_AUTO_FLASH_REDEYE) will override this control.
1670
1671 When set to OFF, the camera device will not fire flash for this capture.
1672
1673 When set to SINGLE, the camera device will fire flash regardless of the camera
1674 device's auto-exposure routine's result. When used in still capture case, this
1675 control should be used along with AE precapture metering sequence
1676 (android.control.aePrecaptureTrigger), otherwise, the image may be incorrectly exposed.
1677
1678 When set to TORCH, the flash will be on continuously. This mode can be used
1679 for use cases such as preview, auto-focus assist, still capture, or video recording.
Zhijun He5169ce12014-01-24 16:48:25 -08001680
1681 The flash status will be reported by android.flash.state in the capture result metadata.
Zhijun Heea27bc32014-01-15 13:47:59 -08001682 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001683 <tag id="BC" />
1684 </entry>
1685 </controls>
1686 <static>
1687 <namespace name="info">
Zhijun He5169ce12014-01-24 16:48:25 -08001688 <entry name="available" type="byte" visibility="public" enum="true" typedef="boolean">
1689 <enum>
1690 <value>FALSE</value>
1691 <value>TRUE</value>
1692 </enum>
1693 <description>Whether this camera device has a
1694 flash.</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001695 <details>If no flash, none of the flash controls do
Zhijun He5169ce12014-01-24 16:48:25 -08001696 anything. All other metadata should return 0.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001697 <tag id="BC" />
1698 </entry>
1699 <entry name="chargeDuration" type="int64">
1700 <description>Time taken before flash can fire
1701 again</description>
1702 <units>nanoseconds</units>
1703 <range>0-1e9</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001704 <details>1 second too long/too short for recharge? Should
1705 this be power-dependent?</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001706 <tag id="V1" />
1707 </entry>
1708 </namespace>
1709 <entry name="colorTemperature" type="byte">
1710 <description>The x,y whitepoint of the
1711 flash</description>
1712 <units>pair of floats</units>
1713 <range>0-1 for both</range>
1714 <tag id="ADV" />
1715 </entry>
1716 <entry name="maxEnergy" type="byte">
1717 <description>Max energy output of the flash for a full
1718 power single flash</description>
1719 <units>lumen-seconds</units>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08001720 <range>&amp;gt;= 0</range>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001721 <tag id="ADV" />
1722 </entry>
1723 </static>
1724 <dynamic>
1725 <clone entry="android.flash.firingPower" kind="controls">
1726 </clone>
1727 <clone entry="android.flash.firingTime" kind="controls">
1728 </clone>
1729 <clone entry="android.flash.mode" kind="controls"></clone>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001730 <entry name="state" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001731 <enum>
1732 <value>UNAVAILABLE
1733 <notes>No flash on camera</notes></value>
1734 <value>CHARGING
Zhijun He5169ce12014-01-24 16:48:25 -08001735 <notes>if android.flash.info.available is true Flash is
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001736 charging and cannot be fired</notes></value>
1737 <value>READY
Zhijun He5169ce12014-01-24 16:48:25 -08001738 <notes>if android.flash.info.available is true Flash is
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001739 ready to fire</notes></value>
1740 <value>FIRED
Zhijun He5169ce12014-01-24 16:48:25 -08001741 <notes>if android.flash.info.available is true Flash fired
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001742 for this capture</notes></value>
1743 </enum>
1744 <description>Current state of the flash
Zhijun He5169ce12014-01-24 16:48:25 -08001745 unit.</description>
1746 <details>
1747 When the camera device doesn't have flash unit
1748 (i.e. `android.flash.info.available == false`), this state will always be UNAVAILABLE.
1749 Other states indicate the current flash status.
1750 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001751 </entry>
1752 </dynamic>
1753 </section>
1754 <section name="geometric">
1755 <controls>
Igor Murashkinb556bc42012-12-04 16:07:21 -08001756 <entry name="mode" type="byte" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001757 <enum>
1758 <value>OFF
1759 <notes>No geometric correction is
1760 applied</notes></value>
1761 <value>FAST
1762 <notes>Must not slow down frame rate relative to raw
1763 bayer output</notes></value>
1764 <value>HIGH_QUALITY
1765 <notes>Frame rate may be reduced by high
1766 quality</notes></value>
1767 </enum>
1768 <description>Operating mode of geometric
1769 correction</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001770 </entry>
1771 <entry name="strength" type="byte">
1772 <description>Control the amount of shading correction
1773 applied to the images</description>
1774 <units>unitless: 1-10; 10 is full shading
1775 compensation</units>
1776 <tag id="ADV" />
1777 </entry>
1778 </controls>
1779 </section>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001780 <section name="hotPixel">
1781 <controls>
Igor Murashkinb556bc42012-12-04 16:07:21 -08001782 <entry name="mode" type="byte" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001783 <enum>
1784 <value>OFF
1785 <notes>No hot pixel correction can be
1786 applied</notes></value>
1787 <value>FAST
1788 <notes>Frame rate must not be reduced compared to raw
1789 Bayer output</notes></value>
1790 <value>HIGH_QUALITY
1791 <notes>Frame rate may be reduced by high
1792 quality</notes></value>
1793 </enum>
1794 <description>Set operational mode for hot pixel
1795 correction</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001796 <tag id="V1" />
1797 </entry>
1798 </controls>
Igor Murashkin7b9a2dc2012-11-21 14:23:24 -08001799 <static>
1800 <namespace name="info">
1801 <entry name="map" type="int32"
1802 type_notes="list of coordinates based on android.sensor.pixelArraySize"
1803 container="array">
1804 <array>
1805 <size>2</size>
1806 <size>n</size>
1807 </array>
1808 <description>Location of hot/defective pixels on
1809 sensor</description>
1810 <tag id="ADV" />
1811 </entry>
1812 </namespace>
1813 </static>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001814 <dynamic>
1815 <clone entry="android.hotPixel.mode" kind="controls">
1816 <tag id="V1" />
1817 </clone>
1818 </dynamic>
1819 </section>
1820 <section name="jpeg">
1821 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001822 <entry name="gpsCoordinates" type="double" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001823 type_notes="latitude, longitude, altitude. First two in degrees, the third in meters"
1824 container="array">
1825 <array>
1826 <size>3</size>
1827 </array>
1828 <description>GPS coordinates to include in output JPEG
1829 EXIF</description>
1830 <range>(-180 - 180], [-90,90], [-inf, inf]</range>
1831 <tag id="BC" />
1832 </entry>
Igor Murashkinb8dc8812013-07-17 16:29:34 -07001833 <entry name="gpsProcessingMethod" type="byte" visibility="public"
1834 typedef="string">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001835 <description>32 characters describing GPS algorithm to
1836 include in EXIF</description>
1837 <units>UTF-8 null-terminated string</units>
1838 <tag id="BC" />
1839 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001840 <entry name="gpsTimestamp" type="int64" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001841 <description>Time GPS fix was made to include in
1842 EXIF</description>
1843 <units>UTC in seconds since January 1, 1970</units>
1844 <tag id="BC" />
1845 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001846 <entry name="orientation" type="int32" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001847 <description>Orientation of JPEG image to
1848 write</description>
1849 <units>Degrees in multiples of 90</units>
1850 <range>0, 90, 180, 270</range>
1851 <tag id="BC" />
1852 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001853 <entry name="quality" type="byte" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001854 <description>Compression quality of the final JPEG
1855 image</description>
1856 <range>1-100; larger is higher quality</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001857 <details>85-95 is typical usage range</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001858 <tag id="BC" />
1859 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001860 <entry name="thumbnailQuality" type="byte" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001861 <description>Compression quality of JPEG
1862 thumbnail</description>
1863 <range>1-100; larger is higher quality</range>
1864 <tag id="BC" />
1865 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001866 <entry name="thumbnailSize" type="int32" visibility="public"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07001867 container="array" typedef="size">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001868 <array>
1869 <size>2</size>
1870 </array>
Zhijun He52e09552013-12-11 17:03:24 -08001871 <description>Resolution of embedded JPEG thumbnail</description>
1872 <range>Size must be one of the size from android.jpeg.availableThumbnailSizes</range>
Zhijun Hef90eeaf2014-01-16 12:13:35 -08001873 <details>When set to (0, 0) value, the JPEG EXIF will not contain thumbnail,
1874 but the captured JPEG will still be a valid image.
Zhijun He52e09552013-12-11 17:03:24 -08001875
1876 When a jpeg image capture is issued, the thumbnail size selected should have
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001877 the same aspect ratio as the jpeg image.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001878 <tag id="BC" />
1879 </entry>
1880 </controls>
1881 <static>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001882 <entry name="availableThumbnailSizes" type="int32" visibility="public"
Zhijun He52e09552013-12-11 17:03:24 -08001883 container="array" typedef="size">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001884 <array>
1885 <size>2</size>
1886 <size>n</size>
1887 </array>
Zhijun He52e09552013-12-11 17:03:24 -08001888 <description>Supported resolutions for the JPEG thumbnail</description>
Zhijun Hef90eeaf2014-01-16 12:13:35 -08001889 <range>Will include at least one valid resolution, plus
1890 (0,0) for no thumbnail generation, and each size will be distinct.</range>
1891 <details>Below condiditions will be satisfied for this size list:
Zhijun He52e09552013-12-11 17:03:24 -08001892
Zhijun Hef90eeaf2014-01-16 12:13:35 -08001893 * The sizes will be sorted by increasing pixel area (width x height).
1894 If several resolutions have the same area, they will be sorted by increasing width.
1895 * The aspect ratio of the largest thumbnail size will be same as the
Zhijun He52e09552013-12-11 17:03:24 -08001896 aspect ratio of largest size in android.scaler.availableJpegSizes.
1897 The largest size is defined as the size that has the largest pixel area
1898 in a given size list.
Zhijun Hef90eeaf2014-01-16 12:13:35 -08001899 * Each size in android.scaler.availableJpegSizes will have at least
Zhijun He52e09552013-12-11 17:03:24 -08001900 one corresponding size that has the same aspect ratio in availableThumbnailSizes,
1901 and vice versa.
Zhijun Hef90eeaf2014-01-16 12:13:35 -08001902 * All non (0, 0) sizes will have non-zero widths and heights.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001903 <tag id="BC" />
1904 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001905 <entry name="maxSize" type="int32" visibility="system">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001906 <description>Maximum size in bytes for the compressed
1907 JPEG buffer</description>
1908 <range>Must be large enough to fit any JPEG produced by
1909 the camera</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001910 <details>This is used for sizing the gralloc buffers for
1911 JPEG</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001912 </entry>
1913 </static>
1914 <dynamic>
1915 <clone entry="android.jpeg.gpsCoordinates" kind="controls">
1916 </clone>
1917 <clone entry="android.jpeg.gpsProcessingMethod"
1918 kind="controls"></clone>
1919 <clone entry="android.jpeg.gpsTimestamp" kind="controls">
1920 </clone>
1921 <clone entry="android.jpeg.orientation" kind="controls">
1922 </clone>
1923 <clone entry="android.jpeg.quality" kind="controls">
1924 </clone>
1925 <entry name="size" type="int32">
1926 <description>The size of the compressed JPEG image, in
1927 bytes</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08001928 <range>&amp;gt;= 0</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001929 <details>If no JPEG output is produced for the request,
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07001930 this must be 0.
1931
1932 Otherwise, this describes the real size of the compressed
1933 JPEG image placed in the output stream. More specifically,
1934 if android.jpeg.maxSize = 1000000, and a specific capture
1935 has android.jpeg.size = 500000, then the output buffer from
1936 the JPEG stream will be 1000000 bytes, of which the first
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08001937 500000 make up the real data.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001938 </entry>
1939 <clone entry="android.jpeg.thumbnailQuality"
1940 kind="controls"></clone>
1941 <clone entry="android.jpeg.thumbnailSize" kind="controls">
1942 </clone>
1943 </dynamic>
1944 </section>
1945 <section name="lens">
1946 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001947 <entry name="aperture" type="float" visibility="public">
Zhijun He1b58d382014-01-10 10:22:53 -08001948 <description>The ratio of lens focal length to the effective
1949 aperture diameter.</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001950 <units>f-number (f/NNN)</units>
1951 <range>android.lens.info.availableApertures</range>
Zhijun He1b58d382014-01-10 10:22:53 -08001952 <details>This will only be supported on the camera devices that
1953 have variable aperture lens. The aperture value can only be
1954 one of the values listed in android.lens.info.availableApertures.
1955
1956 When this is supported and android.control.aeMode is OFF,
1957 this can be set along with android.sensor.exposureTime,
1958 android.sensor.sensitivity, and android.sensor.frameDuration
1959 to achieve manual exposure control.
1960
1961 The requested aperture value may take several frames to reach the
1962 requested value; the camera device will report the current (intermediate)
1963 aperture size in capture result metadata while the aperture is changing.
Zhijun He5169ce12014-01-24 16:48:25 -08001964 While the aperture is still changing, android.lens.state will be set to MOVING.
Zhijun He1b58d382014-01-10 10:22:53 -08001965
1966 When this is supported and android.control.aeMode is one of
1967 the ON modes, this will be overridden by the camera device
1968 auto-exposure algorithm, the overridden values are then provided
1969 back to the user in the corresponding result.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001970 <tag id="V1" />
1971 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001972 <entry name="filterDensity" type="float" visibility="public">
Ruben Brunk83eb3032014-01-15 16:12:07 -08001973 <description>
1974 State of lens neutral density filter(s).
1975 </description>
1976 <units>Steps of Exposure Value (EV).</units>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001977 <range>android.lens.info.availableFilterDensities</range>
Ruben Brunk83eb3032014-01-15 16:12:07 -08001978 <details>
1979 This will not be supported on most camera devices. On devices
1980 where this is supported, this may only be set to one of the
1981 values included in android.lens.info.availableFilterDensities.
1982
1983 Lens filters are typically used to lower the amount of light the
1984 sensor is exposed to (measured in steps of EV). As used here, an EV
1985 step is the standard logarithmic representation, which are
1986 non-negative, and inversely proportional to the amount of light
1987 hitting the sensor. For example, setting this to 0 would result
1988 in no reduction of the incoming light, and setting this to 2 would
1989 mean that the filter is set to reduce incoming light by two stops
1990 (allowing 1/4 of the prior amount of light to the sensor).
Zhijun He5169ce12014-01-24 16:48:25 -08001991
1992 It may take several frames before the lens filter density changes
1993 to the requested value. While the filter density is still changing,
1994 android.lens.state will be set to MOVING.
Ruben Brunk83eb3032014-01-15 16:12:07 -08001995 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08001996 <tag id="V1" />
1997 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07001998 <entry name="focalLength" type="float" visibility="public">
Ruben Brunkac9bbb92014-01-15 18:39:35 -08001999 <description>
2000 The current lens focal length; used for optical zoom.
2001 </description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002002 <units>focal length in mm</units>
Ruben Brunkac9bbb92014-01-15 18:39:35 -08002003 <range>android.lens.info.availableFocalLengths</range>
2004 <details>
2005 This setting controls the physical focal length of the camera
2006 device's lens. Changing the focal length changes the field of
2007 view of the camera device, and is usually used for optical zoom.
2008
2009 Like android.lens.focusDistance and android.lens.aperture, this
2010 setting won't be applied instantaneously, and it may take several
Zhijun He5169ce12014-01-24 16:48:25 -08002011 frames before the lens can change to the requested focal length.
Ruben Brunkac9bbb92014-01-15 18:39:35 -08002012 While the focal length is still changing, android.lens.state will
2013 be set to MOVING.
2014
2015 This is expected not to be supported on most devices.
2016 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002017 <tag id="V1" />
2018 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002019 <entry name="focusDistance" type="float" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002020 <description>Distance to plane of sharpest focus,
2021 measured from frontmost surface of the lens</description>
Zhijun Hef92c76a2014-02-06 01:40:35 -08002022 <units>See android.lens.info.focusDistanceCalibration for details.</units>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002023 <range>&amp;gt;= 0</range>
Zhijun He5169ce12014-01-24 16:48:25 -08002024 <details>0 means infinity focus. Used value will be clamped
2025 to [0, android.lens.info.minimumFocusDistance].
2026
2027 Like android.lens.focalLength, this setting won't be applied
2028 instantaneously, and it may take several frames before the lens
2029 can move to the requested focus distance. While the lens is still moving,
2030 android.lens.state will be set to MOVING.
2031 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002032 <tag id="BC" />
2033 <tag id="V1" />
2034 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002035 <entry name="opticalStabilizationMode" type="byte" visibility="public"
2036 enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002037 <enum>
Ruben Brunk218639c2014-01-15 18:09:41 -08002038 <value>OFF
2039 <notes>Optical stabilization is unavailable.</notes>
2040 </value>
2041 <value optional="true">ON
2042 <notes>Optical stabilization is enabled.</notes>
2043 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002044 </enum>
Ruben Brunk218639c2014-01-15 18:09:41 -08002045 <description>
2046 Sets whether the camera device uses optical image stabilization (OIS)
2047 when capturing images.
2048 </description>
2049 <range>android.lens.info.availableOpticalStabilization</range>
2050 <details>
2051 OIS is used to compensate for motion blur due to small movements of
2052 the camera during capture. Unlike digital image stabilization, OIS makes
2053 use of mechanical elements to stabilize the camera sensor, and thus
2054 allows for longer exposure times before camera shake becomes
2055 apparent.
2056
2057 This is not expected to be supported on most devices.
2058 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002059 <tag id="V1" />
2060 </entry>
2061 </controls>
2062 <static>
2063 <namespace name="info">
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002064 <entry name="availableApertures" type="float" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002065 container="array">
2066 <array>
2067 <size>n</size>
2068 </array>
2069 <description>List of supported aperture
Zhijun He1b58d382014-01-10 10:22:53 -08002070 values.</description>
Zhijun He5169ce12014-01-24 16:48:25 -08002071 <range>one entry required, &amp;gt; 0</range>
Zhijun He1b58d382014-01-10 10:22:53 -08002072 <details>If the camera device doesn't support variable apertures,
2073 listed value will be the fixed aperture.
2074
2075 If the camera device supports variable apertures, the aperture value
2076 in this list will be sorted in ascending order.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002077 <tag id="V1" />
2078 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002079 <entry name="availableFilterDensities" type="float" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002080 container="array">
2081 <array>
2082 <size>n</size>
2083 </array>
Ruben Brunk83eb3032014-01-15 16:12:07 -08002084 <description>
2085 List of supported neutral density filter values for
2086 android.lens.filterDensity.
2087 </description>
2088 <range>
2089 At least one value is required. Values must be &amp;gt;= 0.
2090 </range>
2091 <details>
2092 If changing android.lens.filterDensity is not supported,
2093 availableFilterDensities must contain only 0. Otherwise, this
2094 list contains only the exact filter density values available on
2095 this camera device.
2096 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002097 <tag id="V1" />
2098 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002099 <entry name="availableFocalLengths" type="float" visibility="public"
Ruben Brunkac9bbb92014-01-15 18:39:35 -08002100 type_notes="The list of available focal lengths"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002101 container="array">
2102 <array>
2103 <size>n</size>
2104 </array>
Ruben Brunkac9bbb92014-01-15 18:39:35 -08002105 <description>
2106 The available focal lengths for this device for use with
2107 android.lens.focalLength.
2108 </description>
2109 <range>
2110 Each value in this list must be &amp;gt; 0. This list must
2111 contain at least one value.
2112 </range>
2113 <details>
2114 If optical zoom is not supported, this will only report
2115 a single value corresponding to the static focal length of the
2116 device. Otherwise, this will report every focal length supported
2117 by the device.
2118 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002119 <tag id="BC" />
2120 <tag id="V1" />
2121 </entry>
2122 <entry name="availableOpticalStabilization" type="byte"
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002123 visibility="public" type_notes="list of enums" container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002124 <array>
2125 <size>n</size>
2126 </array>
Ruben Brunk218639c2014-01-15 18:09:41 -08002127 <description>
2128 List containing a subset of the optical image
2129 stabilization (OIS) modes specified in
2130 android.lens.opticalStabilizationMode.
2131 </description>
2132 <details>
2133 If OIS is not implemented for a given camera device, this should
2134 contain only OFF.
2135 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002136 <tag id="V1" />
2137 </entry>
2138 <entry name="geometricCorrectionMap" type="float"
2139 type_notes="2D array of destination coordinate pairs for uniform grid points in source image, per color channel. Size in the range of 2x3x40x30"
2140 container="array">
2141 <array>
2142 <size>2</size>
2143 <size>3</size>
2144 <size>n</size>
2145 <size>m</size>
2146 </array>
2147 <description>A low-resolution map for correction of
2148 geometric distortions and chromatic aberrations, per
2149 color channel</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002150 <range>N, M &amp;gt;= 2</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002151 <details>[DNG wants a function instead]. What's easiest
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002152 for implementers? With an array size (M, N), entry (i,
2153 j) provides the destination for pixel (i/(M-1) * width,
2154 j/(N-1) * height). Data is row-major, with each array
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002155 entry being ( (X, Y)_r, (X, Y)_g, (X, Y)_b ) )</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002156 <tag id="DNG" />
2157 </entry>
2158 <entry name="geometricCorrectionMapSize" type="int32"
2159 type_notes="width and height of geometric correction map"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07002160 container="array" typedef="size">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002161 <array>
2162 <size>2</size>
2163 </array>
2164 <description>Dimensions of geometric correction
2165 map</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002166 <range>Both values &amp;gt;= 2</range>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002167 <tag id="V1" />
2168 </entry>
Zhijun Hef92c76a2014-02-06 01:40:35 -08002169 <entry name="hyperfocalDistance" type="float" visibility="public" optional="true">
2170 <description>Optional. Hyperfocal distance for this lens.</description>
2171 <units>See android.lens.info.focusDistanceCalibration for details.</units>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002172 <range>&amp;gt;= 0</range>
Zhijun Hef92c76a2014-02-06 01:40:35 -08002173 <details>If the lens is fixed focus, the camera device will report 0.
2174
2175 If the lens is not fixed focus, the camera device will report this
2176 field when android.lens.info.focusDistanceCalibration is APPROXIMATE or CALIBRATED.
2177 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002178 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002179 <entry name="minimumFocusDistance" type="float" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002180 <description>Shortest distance from frontmost surface
Zhijun Hef92c76a2014-02-06 01:40:35 -08002181 of the lens that can be focused correctly.</description>
2182 <units>See android.lens.info.focusDistanceCalibration for details.</units>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002183 <range>&amp;gt;= 0</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002184 <details>If the lens is fixed-focus, this should be
Zhijun Hef92c76a2014-02-06 01:40:35 -08002185 0.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002186 <tag id="V1" />
2187 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002188 <entry name="shadingMapSize" type="int32" visibility="public"
Igor Murashkin1dd4ecb2013-12-11 13:31:00 -08002189 type_notes="width and height of lens shading map provided by the HAL. (N x M)"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07002190 container="array" typedef="size">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002191 <array>
2192 <size>2</size>
2193 </array>
Igor Murashkin1dd4ecb2013-12-11 13:31:00 -08002194 <description>Dimensions of lens shading map.</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002195 <range>Both values &amp;gt;= 1</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002196 <details>
Igor Murashkin1dd4ecb2013-12-11 13:31:00 -08002197 The map should be on the order of 30-40 rows and columns, and
2198 must be smaller than 64x64.
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002199 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002200 <tag id="V1" />
2201 </entry>
Zhijun Hef92c76a2014-02-06 01:40:35 -08002202 <entry name="focusDistanceCalibration" type="byte" visibility="public" enum="true">
2203 <enum>
2204 <value>UNCALIBRATED
2205 <notes>
2206 The lens focus distance is not accurate, and the units used for
2207 android.lens.focusDistance do not correspond to any physical units.
2208 Setting the lens to the same focus distance on separate occasions may
2209 result in a different real focus distance, depending on factors such
2210 as the orientation of the device, the age of the focusing mechanism,
2211 and the device temperature. The focus distance value will still be
2212 in the range of `[0, android.lens.info.minimumFocusDistance]`, where 0
2213 represents the farthest focus.
2214 </notes>
2215 </value>
2216 <value>APPROXIMATE
2217 <notes>
2218 The lens focus distance is measured in diopters. However, setting the lens
2219 to the same focus distance on separate occasions may result in a
2220 different real focus distance, depending on factors such as the
2221 orientation of the device, the age of the focusing mechanism, and
2222 the device temperature.
2223 </notes>
2224 </value>
2225 <value>CALIBRATED
2226 <notes>
2227 The lens focus distance is measured in diopters. The lens mechanism is
2228 calibrated so that setting the same focus distance is repeatable on
2229 multiple occasions with good accuracy, and the focus distance corresponds
2230 to the real physical distance to the plane of best focus.
2231 </notes>
2232 </value>
2233 </enum>
2234 <description>The lens focus distance calibration quality.</description>
2235 <details>
2236 The lens focus distance calibration quality determines the reliability of
2237 focus related metadata entries, i.e. android.lens.focusDistance,
2238 android.lens.focusRange, android.lens.info.hyperfocalDistance, and
2239 android.lens.info.minimumFocusDistance.
2240 </details>
2241 <tag id="V1" />
2242 </entry>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002243 </namespace>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002244 <entry name="facing" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002245 <enum>
Igor Murashkine6b66462012-11-26 15:26:38 -08002246 <value>FRONT</value>
2247 <value>BACK</value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002248 </enum>
2249 <description>Direction the camera faces relative to
2250 device screen</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002251 </entry>
2252 <entry name="opticalAxisAngle" type="float"
2253 type_notes="degrees. First defines the angle of separation between the perpendicular to the screen and the camera optical axis. The second then defines the clockwise rotation of the optical axis from native device up."
2254 container="array">
2255 <array>
2256 <size>2</size>
2257 </array>
2258 <description>Relative angle of camera optical axis to the
2259 perpendicular axis from the display</description>
2260 <range>[0-90) for first angle, [0-360) for second</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002261 <details>Examples:
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07002262
2263 (0,0) means that the camera optical axis
2264 is perpendicular to the display surface;
2265
2266 (45,0) means that the camera points 45 degrees up when
2267 device is held upright;
2268
2269 (45,90) means the camera points 45 degrees to the right when
2270 the device is held upright.
2271
2272 Use FACING field to determine perpendicular outgoing
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002273 direction</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002274 <tag id="ADV" />
2275 </entry>
2276 <entry name="position" type="float" container="array">
2277 <array>
2278 <size>3, location in mm, in the sensor coordinate
2279 system</size>
2280 </array>
2281 <description>Coordinates of camera optical axis on
2282 device</description>
2283 <tag id="V1" />
2284 </entry>
2285 </static>
2286 <dynamic>
2287 <clone entry="android.lens.aperture" kind="controls">
2288 <tag id="V1" />
2289 </clone>
2290 <clone entry="android.lens.filterDensity" kind="controls">
2291 <tag id="V1" />
2292 </clone>
2293 <clone entry="android.lens.focalLength" kind="controls">
2294 <tag id="BC" />
2295 </clone>
2296 <clone entry="android.lens.focusDistance" kind="controls">
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002297 <details>Should be zero for fixed-focus cameras</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002298 <tag id="BC" />
2299 </clone>
Zhijun He50451ad2013-09-26 10:27:47 -07002300 <entry name="focusRange" type="float" visibility="public"
2301 type_notes="Range of scene distances that are in focus"
2302 container="array">
2303 <array>
2304 <size>2</size>
2305 </array>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002306 <description>The range of scene distances that are in
2307 sharp focus (depth of field)</description>
2308 <units>pair of focus distances in diopters: (near,
Zhijun Hef92c76a2014-02-06 01:40:35 -08002309 far), see android.lens.info.focusDistanceCalibration for details.</units>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002310 <range>&amp;gt;=0</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002311 <details>If variable focus not supported, can still report
2312 fixed depth of field range</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002313 <tag id="BC" />
2314 </entry>
2315 <clone entry="android.lens.opticalStabilizationMode"
2316 kind="controls">
2317 <tag id="V1" />
2318 </clone>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002319 <entry name="state" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002320 <enum>
Zhijun He5169ce12014-01-24 16:48:25 -08002321 <value>STATIONARY
2322 <notes>
2323 The lens parameters (android.lens.focalLength, android.lens.focusDistance
2324 android.lens.filterDensity and android.lens.aperture) are not changing.
2325 </notes>
2326 </value>
2327 <value>MOVING
2328 <notes>
2329 Any of the lens parameters (android.lens.focalLength, android.lens.focusDistance
2330 android.lens.filterDensity or android.lens.aperture) is changing.
2331 </notes>
2332 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002333 </enum>
Zhijun He5169ce12014-01-24 16:48:25 -08002334 <description>Current lens status.</description>
2335 <details>
2336 For lens parameters android.lens.focalLength, android.lens.focusDistance,
2337 android.lens.filterDensity and android.lens.aperture, when changes are requested,
2338 they may take several frames to reach the requested values. This state indicates
2339 the current status of the lens parameters.
2340
2341 When the state is STATIONARY, the lens parameters are not changing. This could be
2342 either because the parameters are all fixed, or because the lens has had enough
2343 time to reach the most recently-requested values.
2344 If all these lens parameters are not changable for a camera device, as listed below:
2345
2346 * Fixed focus (`android.lens.info.minimumFocusDistance == 0`), which means
2347 android.lens.focusDistance parameter will always be 0.
2348 * Fixed focal length (android.lens.info.availableFocalLengths contains single value),
2349 which means the optical zoom is not supported.
2350 * No ND filter (android.lens.info.availableFilterDensities contains only 0).
2351 * Fixed aperture (android.lens.info.availableApertures contains single value).
2352
2353 Then this state will always be STATIONARY.
2354
2355 When the state is MOVING, it indicates that at least one of the lens parameters
2356 is changing.
2357 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002358 <tag id="V1" />
2359 </entry>
2360 </dynamic>
2361 </section>
2362 <section name="noiseReduction">
2363 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002364 <entry name="mode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002365 <enum>
2366 <value>OFF
2367 <notes>No noise reduction is applied</notes></value>
2368 <value>FAST
Zhijun Heb1c5bab2013-12-16 15:08:14 -08002369 <notes>Must not slow down frame rate relative to sensor
2370 output</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002371 <value>HIGH_QUALITY
2372 <notes>May slow down frame rate to provide highest
2373 quality</notes></value>
2374 </enum>
2375 <description>Mode of operation for the noise reduction
2376 algorithm</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002377 <range>android.noiseReduction.availableModes</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002378 <details>Noise filtering control. OFF means no noise reduction
Zhijun Heb1c5bab2013-12-16 15:08:14 -08002379 will be applied by the HAL.
2380
Zhijun Hef90eeaf2014-01-16 12:13:35 -08002381 FAST/HIGH_QUALITY both mean camera device determined noise filtering
2382 will be applied. HIGH_QUALITY mode indicates that the camera device
2383 will use the highest-quality noise filtering algorithms,
2384 even if it slows down capture rate. FAST means the camera device should not
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002385 slow down capture rate when applying noise filtering.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002386 <tag id="V1" />
2387 </entry>
2388 <entry name="strength" type="byte">
2389 <description>Control the amount of noise reduction
2390 applied to the images</description>
2391 <units>1-10; 10 is max noise reduction</units>
2392 <range>1 - 10</range>
2393 </entry>
2394 </controls>
2395 <dynamic>
2396 <clone entry="android.noiseReduction.mode" kind="controls">
2397 </clone>
2398 </dynamic>
2399 </section>
2400 <section name="quirks">
2401 <static>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002402 <entry name="meteringCropRegion" type="byte" visibility="system" optional="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002403 <description>If set to 1, the camera service does not
2404 scale 'normalized' coordinates with respect to the crop
2405 region. This applies to metering input (a{e,f,wb}Region
2406 and output (face rectangles).</description>
Zhijun Hefb4701f2014-02-04 11:32:24 -08002407 <range>**Deprecated**. Do not use.</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002408 <details>Normalized coordinates refer to those in the
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002409 (-1000,1000) range mentioned in the
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07002410 android.hardware.Camera API.
2411
2412 HAL implementations should instead always use and emit
2413 sensor array-relative coordinates for all region data. Does
2414 not need to be listed in static metadata. Support will be
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002415 removed in future versions of camera service.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002416 </entry>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002417 <entry name="triggerAfWithAuto" type="byte" visibility="system" optional="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002418 <description>If set to 1, then the camera service always
2419 switches to FOCUS_MODE_AUTO before issuing a AF
2420 trigger.</description>
Zhijun Hefb4701f2014-02-04 11:32:24 -08002421 <range>**Deprecated**. Do not use.</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002422 <details>HAL implementations should implement AF trigger
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002423 modes for AUTO, MACRO, CONTINUOUS_FOCUS, and
2424 CONTINUOUS_PICTURE modes instead of using this flag. Does
2425 not need to be listed in static metadata. Support will be
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002426 removed in future versions of camera service</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002427 </entry>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002428 <entry name="useZslFormat" type="byte" visibility="system" optional="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002429 <description>If set to 1, the camera service uses
2430 CAMERA2_PIXEL_FORMAT_ZSL instead of
2431 HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED for the zero
2432 shutter lag stream</description>
Zhijun Hefb4701f2014-02-04 11:32:24 -08002433 <range>**Deprecated**. Do not use.</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002434 <details>HAL implementations should use gralloc usage flags
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002435 to determine that a stream will be used for
2436 zero-shutter-lag, instead of relying on an explicit
2437 format setting. Does not need to be listed in static
2438 metadata. Support will be removed in future versions of
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002439 camera service.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002440 </entry>
Eino-Ville Talvala52a64a52013-11-07 14:43:43 -08002441 <entry name="usePartialResult" type="byte" visibility="hidden" optional="true">
Igor Murashkin7761a222014-01-27 16:06:38 -08002442 <description>
2443 If set to 1, the HAL will always split result
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002444 metadata for a single capture into multiple buffers,
2445 returned using multiple process_capture_result calls.
2446 </description>
Igor Murashkin7761a222014-01-27 16:06:38 -08002447 <range>**Deprecated**. Do not use.</range>
2448 <details>
2449 Does not need to be listed in static
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002450 metadata. Support for partial results will be reworked in
2451 future versions of camera service. This quirk will stop
2452 working at that point; DO NOT USE without careful
2453 consideration of future support.
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002454 </details>
Igor Murashkin7761a222014-01-27 16:06:38 -08002455 <hal_details>
2456 Refer to `camera3_capture_result::partial_result`
2457 for information on how to implement partial results.
2458 </hal_details>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002459 </entry>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002460 </static>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002461 <dynamic>
Eino-Ville Talvala52a64a52013-11-07 14:43:43 -08002462 <entry name="partialResult" type="byte" visibility="hidden" optional="true" enum="true" typedef="boolean">
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002463 <enum>
2464 <value>FINAL
2465 <notes>The last or only metadata result buffer
2466 for this capture.</notes>
2467 </value>
2468 <value>PARTIAL
2469 <notes>A partial buffer of result metadata for this
2470 capture. More result buffers for this capture will be sent
2471 by the HAL, the last of which will be marked
2472 FINAL.</notes>
2473 </value>
2474 </enum>
Igor Murashkin7761a222014-01-27 16:06:38 -08002475 <description>
2476 Whether a result given to the framework is the
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002477 final one for the capture, or only a partial that contains a
2478 subset of the full set of dynamic metadata
2479 values.</description>
Igor Murashkin7761a222014-01-27 16:06:38 -08002480 <range>**Deprecated**. Do not use. Optional. Default value is FINAL.</range>
2481 <details>
2482 The entries in the result metadata buffers for a
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002483 single capture may not overlap, except for this entry. The
2484 FINAL buffers must retain FIFO ordering relative to the
2485 requests that generate them, so the FINAL buffer for frame 3 must
2486 always be sent to the framework after the FINAL buffer for frame 2, and
2487 before the FINAL buffer for frame 4. PARTIAL buffers may be returned
2488 in any order relative to other frames, but all PARTIAL buffers for a given
2489 capture must arrive before the FINAL buffer for that capture. This entry may
2490 only be used by the HAL if quirks.usePartialResult is set to 1.
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002491 </details>
Igor Murashkin7761a222014-01-27 16:06:38 -08002492 <hal_details>
2493 Refer to `camera3_capture_result::partial_result`
2494 for information on how to implement partial results.
2495 </hal_details>
Eino-Ville Talvala82ce3312013-10-09 18:21:30 -07002496 </entry>
2497 </dynamic>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002498 </section>
2499 <section name="request">
2500 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002501 <entry name="frameCount" type="int32" visibility="system">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002502 <description>A frame counter set by the framework. Must
Igor Murashkin28548d22013-09-10 15:26:20 -07002503 be maintained unchanged in output frame. This value monotonically
2504 increases with every new result (that is, each new result has a unique
2505 frameCount value).
2506 </description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002507 <units>incrementing integer</units>
Zhijun Hefb4701f2014-02-04 11:32:24 -08002508 <range>**Deprecated**. Do not use. Any int.</range>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002509 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002510 <entry name="id" type="int32" visibility="hidden">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002511 <description>An application-specified ID for the current
2512 request. Must be maintained unchanged in output
2513 frame</description>
2514 <units>arbitrary integer assigned by application</units>
2515 <range>Any int</range>
2516 <tag id="V1" />
2517 </entry>
Zhijun Hee36cdbe2013-09-06 14:28:37 -07002518 <entry name="inputStreams" type="int32" visibility="system"
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002519 container="array">
2520 <array>
2521 <size>n</size>
2522 </array>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002523 <description>List which camera reprocess stream is used
2524 for the source of reprocessing data.</description>
2525 <units>List of camera reprocess stream IDs</units>
Zhijun Hefb4701f2014-02-04 11:32:24 -08002526 <range>**Deprecated**. Do not use.
2527
2528 Typically, only one entry allowed, must be a valid reprocess stream ID.
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07002529
2530 If android.jpeg.needsThumbnail is set, then multiple
2531 reprocess streams may be included in a single request; they
2532 must be different scaled versions of the same image.</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002533 <details>Only meaningful when android.request.type ==
2534 REPROCESS. Ignored otherwise</details>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002535 <tag id="HAL2" />
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002536 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002537 <entry name="metadataMode" type="byte" visibility="system"
2538 enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002539 <enum>
2540 <value>NONE
2541 <notes>No metadata should be produced on output, except
2542 for application-bound buffer data. If no
2543 application-bound streams exist, no frame should be
2544 placed in the output frame queue. If such streams
2545 exist, a frame should be placed on the output queue
2546 with null metadata but with the necessary output buffer
2547 information. Timestamp information should still be
2548 included with any output stream buffers</notes></value>
2549 <value>FULL
2550 <notes>All metadata should be produced. Statistics will
2551 only be produced if they are separately
2552 enabled</notes></value>
2553 </enum>
2554 <description>How much metadata to produce on
2555 output</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002556 </entry>
Zhijun Hee36cdbe2013-09-06 14:28:37 -07002557 <entry name="outputStreams" type="int32" visibility="system"
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002558 container="array">
2559 <array>
2560 <size>n</size>
2561 </array>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002562 <description>Lists which camera output streams image data
2563 from this capture must be sent to</description>
2564 <units>List of camera stream IDs</units>
Zhijun Hefb4701f2014-02-04 11:32:24 -08002565 <range>**Deprecated**. Do not use. List must only include streams that have been
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002566 created</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002567 <details>If no output streams are listed, then the image
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002568 data should simply be discarded. The image data must
2569 still be captured for metadata and statistics production,
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002570 and the lens and flash must operate as requested.</details>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002571 <tag id="HAL2" />
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002572 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002573 <entry name="type" type="byte" visibility="system" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002574 <enum>
2575 <value>CAPTURE
2576 <notes>Capture a new image from the imaging hardware,
2577 and process it according to the
2578 settings</notes></value>
2579 <value>REPROCESS
2580 <notes>Process previously captured data; the
2581 android.request.inputStream parameter determines the
2582 source reprocessing stream. TODO: Mark dynamic metadata
2583 needed for reprocessing with [RP]</notes></value>
2584 </enum>
2585 <description>The type of the request; either CAPTURE or
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002586 REPROCESS. For HAL3, this tag is redundant.</description>
2587 <tag id="HAL2" />
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002588 </entry>
2589 </controls>
2590 <static>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002591 <entry name="maxNumOutputStreams" type="int32" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002592 container="array">
2593 <array>
2594 <size>3</size>
2595 </array>
Zhijun He12744b22014-01-22 15:58:57 -08002596 <description>The maximum numbers of different types of output streams
2597 that can be configured and used simultaneously by a camera device.
2598 </description>
2599 <range>
2600 &amp;gt;= 1 for JPEG-compressed format streams.
2601
2602 &amp;gt;= 0 for Raw format streams.
2603
2604 &amp;gt;= 3 for processed, uncompressed format streams.
2605 </range>
2606 <details>
2607 This is a 3 element tuple that contains the max number of output simultaneous
2608 streams for raw sensor, processed (and uncompressed), and JPEG formats respectively.
2609 For example, if max raw sensor format output stream number is 1, max YUV streams
2610 number is 3, and max JPEG stream number is 2, then this tuple should be `(1, 3, 2)`.
2611
2612 This lists the upper bound of the number of output streams supported by
2613 the camera device. Using more streams simultaneously may require more hardware and
2614 CPU resources that will consume more power. The image format for a output stream can
2615 be any supported format provided by android.scaler.availableFormats. The formats
2616 defined in android.scaler.availableFormats can be catergorized into the 3 stream types
2617 as below:
2618
2619 * JPEG-compressed format: BLOB.
2620 * Raw formats: RAW_SENSOR and RAW_OPAQUE.
2621 * processed, uncompressed formats: YCbCr_420_888, YCrCb_420_SP, YV12.
2622 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002623 <tag id="BC" />
2624 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002625 <entry name="maxNumReprocessStreams" type="int32" visibility="system"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002626 container="array">
2627 <array>
2628 <size>1</size>
2629 </array>
2630 <description>How many reprocessing streams of any type
Zhijun He12744b22014-01-22 15:58:57 -08002631 can be allocated at the same time.</description>
2632 <range>&amp;gt;= 0</range>
2633 <details>
2634 **Deprecated**. Only used by HAL2.x.
2635
2636 When set to 0, it means no reprocess stream is supported.
2637 </details>
2638 <tag id="HAL2" />
2639 </entry>
2640 <entry name="maxNumInputStreams" type="int32" visibility="public">
2641 <description>
2642 The maximum numbers of any type of input streams
2643 that can be configured and used simultaneously by a camera device.
2644 </description>
2645 <range>
2646 &amp;gt;= 0 for LIMITED mode device (`android.info.supportedHardwareLevel == LIMITED`).
2647 &amp;gt;= 1 for FULL mode device (`android.info.supportedHardwareLevel == FULL`).
2648 </range>
2649 <details>When set to 0, it means no input stream is supported.
2650
2651 The image format for a input stream can be any supported format provided
2652 by android.scaler.availableInputFormats. When using an input stream, there must be
2653 at least one output stream configured to to receive the reprocessed images.
2654
2655 For example, for Zero Shutter Lag (ZSL) still capture use case, the input
2656 stream image format will be RAW_OPAQUE, the associated output stream image format
2657 should be JPEG.
2658 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002659 </entry>
2660 </static>
2661 <dynamic>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002662 <entry name="frameCount" type="int32" visibility="public">
Igor Murashkin28548d22013-09-10 15:26:20 -07002663 <description>A frame counter set by the framework. This value monotonically
2664 increases with every new result (that is, each new result has a unique
2665 frameCount value).</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002666 <units>count of frames</units>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002667 <range>&amp;gt; 0</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002668 <details>Reset on release()</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002669 </entry>
2670 <clone entry="android.request.id" kind="controls"></clone>
2671 <clone entry="android.request.metadataMode"
2672 kind="controls"></clone>
2673 <clone entry="android.request.outputStreams"
2674 kind="controls"></clone>
Igor Murashkina46e02f2014-01-09 17:43:38 -08002675 <entry name="pipelineDepth" type="byte" visibility="public">
2676 <description>Specifies the number of pipeline stages the frame went
2677 through from when it was exposed to when the final completed result
2678 was available to the framework.</description>
2679 <range>&amp;lt;= android.request.pipelineMaxDepth</range>
2680 <details>Depending on what settings are used in the request, and
2681 what streams are configured, the data may undergo less processing,
2682 and some pipeline stages skipped.
2683
2684 See android.request.pipelineMaxDepth for more details.
2685 </details>
2686 <hal_details>
2687 This value must always represent the accurate count of how many
2688 pipeline stages were actually used.
2689 </hal_details>
2690 </entry>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002691 </dynamic>
Igor Murashkina46e02f2014-01-09 17:43:38 -08002692 <static>
2693 <entry name="pipelineMaxDepth" type="byte" visibility="public">
2694 <description>Specifies the number of maximum pipeline stages a frame
2695 has to go through from when it's exposed to when it's available
2696 to the framework.</description>
2697 <details>A typical minimum value for this is 2 (one stage to expose,
2698 one stage to readout) from the sensor. The ISP then usually adds
2699 its own stages to do custom HW processing. Further stages may be
2700 added by SW processing.
2701
2702 Depending on what settings are used (e.g. YUV, JPEG) and what
2703 processing is enabled (e.g. face detection), the actual pipeline
2704 depth (specified by android.request.pipelineDepth) may be less than
2705 the max pipeline depth.
2706
2707 A pipeline depth of X stages is equivalent to a pipeline latency of
2708 X frame intervals.
2709
2710 This value will be 8 or less.
2711 </details>
2712 <hal_details>
2713 This value should be 4 or less.
2714 </hal_details>
2715 </entry>
Igor Murashkin2e291102014-01-10 14:18:30 -08002716 <entry name="partialResultCount" type="int32" visibility="public">
2717 <description>Optional. Defaults to 1. Defines how many sub-components
2718 a result will be composed of.
2719 </description>
2720 <range>&amp;gt;= 1</range>
2721 <details>In order to combat the pipeline latency, partial results
2722 may be delivered to the application layer from the camera device as
2723 soon as they are available.
2724
2725 A value of 1 means that partial results are not supported.
2726
2727 A typical use case for this might be: after requesting an AF lock the
2728 new AF state might be available 50% of the way through the pipeline.
2729 The camera device could then immediately dispatch this state via a
2730 partial result to the framework/application layer, and the rest of
2731 the metadata via later partial results.
2732 </details>
2733 </entry>
Igor Murashkina46e02f2014-01-09 17:43:38 -08002734 </static>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002735 </section>
2736 <section name="scaler">
2737 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002738 <entry name="cropRegion" type="int32" visibility="public"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07002739 container="array" typedef="rectangle">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002740 <array>
Eino-Ville Talvalae04ec6e2013-04-16 15:35:18 -07002741 <size>4</size>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002742 </array>
Eino-Ville Talvalae04ec6e2013-04-16 15:35:18 -07002743 <description>(x, y, width, height).
2744
2745 A rectangle with the top-level corner of (x,y) and size
2746 (width, height). The region of the sensor that is used for
2747 output. Each stream must use this rectangle to produce its
2748 output, cropping to a smaller region if necessary to
2749 maintain the stream's aspect ratio.
2750
2751 HAL2.x uses only (x, y, width)</description>
2752 <units>(x,y) of top-left corner, width and height of region
2753 in pixels; (0,0) is top-left corner of
Zhijun Hebd7f15b2013-05-13 16:59:51 -07002754 android.sensor.activeArraySize</units>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002755 <details>
Eino-Ville Talvalae04ec6e2013-04-16 15:35:18 -07002756 Any additional per-stream cropping must be done to
2757 maximize the final pixel area of the stream.
2758
2759 For example, if the crop region is set to a 4:3 aspect
2760 ratio, then 4:3 streams should use the exact crop
2761 region. 16:9 streams should further crop vertically
2762 (letterbox).
2763
2764 Conversely, if the crop region is set to a 16:9, then 4:3
2765 outputs should crop horizontally (pillarbox), and 16:9
2766 streams should match exactly. These additional crops must
2767 be centered within the crop region.
2768
2769 The output streams must maintain square pixels at all
2770 times, no matter what the relative aspect ratios of the
2771 crop region and the stream are. Negative values for
2772 corner are allowed for raw output if full pixel array is
2773 larger than active pixel array. Width and height may be
2774 rounded to nearest larger supportable width, especially
2775 for raw output, where only a few fixed scales may be
2776 possible. The width and height of the crop region cannot
Zhijun Hebd7f15b2013-05-13 16:59:51 -07002777 be set to be smaller than floor( activeArraySize.width /
Eino-Ville Talvalae04ec6e2013-04-16 15:35:18 -07002778 android.scaler.maxDigitalZoom ) and floor(
Zhijun Hebd7f15b2013-05-13 16:59:51 -07002779 activeArraySize.height / android.scaler.maxDigitalZoom),
Eino-Ville Talvalae04ec6e2013-04-16 15:35:18 -07002780 respectively.
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002781 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002782 <tag id="BC" />
2783 </entry>
2784 </controls>
2785 <static>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002786 <entry name="availableFormats" type="int32"
2787 visibility="public" enum="true"
Eino-Ville Talvalad4e240a2013-08-08 12:56:37 -07002788 container="array" typedef="imageFormat">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002789 <array>
2790 <size>n</size>
2791 </array>
Igor Murashkin96bd0192012-11-19 16:49:37 -08002792 <enum>
Zhijun Heb8317e22014-01-16 09:47:07 -08002793 <value optional="true" id="0x20">RAW_SENSOR
Igor Murashkin96bd0192012-11-19 16:49:37 -08002794 </value>
Zhijun Heb8317e22014-01-16 09:47:07 -08002795 <value optional="true" id="0x32315659">YV12
Igor Murashkin96bd0192012-11-19 16:49:37 -08002796 <notes>YCrCb 4:2:0 Planar</notes>
2797 </value>
Zhijun Heb8317e22014-01-16 09:47:07 -08002798 <value optional="true" id="0x11">YCrCb_420_SP
Igor Murashkin96bd0192012-11-19 16:49:37 -08002799 <notes>NV21</notes>
2800 </value>
Zhijun Hec2eebff2013-05-16 17:49:35 -07002801
2802 <value id="0x22">IMPLEMENTATION_DEFINED
Zhijun Heb8317e22014-01-16 09:47:07 -08002803 <notes>System internal format, not application-accessible</notes>
Zhijun Hec2eebff2013-05-16 17:49:35 -07002804 </value>
2805
2806 <value id="0x23">YCbCr_420_888
2807 <notes>Flexible YUV420 Format</notes>
2808 </value>
2809
2810 <value id="0x21">BLOB
Zhijun Heb8317e22014-01-16 09:47:07 -08002811 <notes>JPEG format</notes>
Igor Murashkin96bd0192012-11-19 16:49:37 -08002812 </value>
2813 </enum>
Zhijun Heb8317e22014-01-16 09:47:07 -08002814 <description>The list of image formats that are supported by this
2815 camera device.</description>
2816 <details>
2817 All camera devices will support JPEG and YUV_420_888 formats.
2818
2819 When set to YUV_420_888, application can access the YUV420 data directly.
2820 </details>
2821 <hal_details>
2822 These format values are from HAL_PIXEL_FORMAT_* in
2823 system/core/include/system/graphics.h.
2824
2825 When IMPLEMENTATION_DEFINED is used, the platform
2826 gralloc module will select a format based on the usage flags provided
2827 by the camera HAL device and the other endpoint of the stream. It is
2828 usually used by preview and recording streams, where the application doesn't
2829 need access the image data.
2830
2831 YCbCr_420_888 format must be supported by the HAL. When an image stream
2832 needs CPU/application direct access, this format will be used.
2833
2834 The BLOB format must be supported by the HAL. This is used for the JPEG stream.
2835
2836 </hal_details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002837 <tag id="BC" />
2838 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002839 <entry name="availableJpegMinDurations" type="int64" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002840 container="array">
2841 <array>
2842 <size>n</size>
2843 </array>
2844 <description>The minimum frame duration that is supported
Igor Murashkin10f4e0f2014-01-13 17:22:58 -08002845 for each resolution in android.scaler.availableJpegSizes.
2846 </description>
2847 <units>ns</units>
2848 <details>
2849 This corresponds to the minimum steady-state frame duration when only
2850 that JPEG stream is active and captured in a burst, with all
2851 processing (typically in android.*.mode) set to FAST.
2852
2853 When multiple streams are configured, the minimum
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002854 frame duration will be &amp;gt;= max(individual stream min
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002855 durations)</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002856 <tag id="BC" />
2857 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002858 <entry name="availableJpegSizes" type="int32" visibility="public"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07002859 container="array" typedef="size">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002860 <array>
2861 <size>n</size>
2862 <size>2</size>
2863 </array>
Zhijun Heb8317e22014-01-16 09:47:07 -08002864 <description>The JPEG resolutions that are supported by this camera device.</description>
2865 <details>
2866 The resolutions are listed as `(width, height)` pairs. All camera devices will support
2867 sensor maximum resolution (defined by android.sensor.info.activeArraySize).
2868 </details>
2869 <hal_details>
2870 The HAL must include sensor maximum resolution
2871 (defined by android.sensor.info.activeArraySize),
2872 and should include half/quarter of sensor maximum resolution.
2873 </hal_details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002874 <tag id="BC" />
2875 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002876 <entry name="availableMaxDigitalZoom" type="float" visibility="public">
Igor Murashkinf11a4df2013-05-07 10:00:46 -07002877 <description>The maximum ratio between active area width
2878 and crop region width, or between active area height and
2879 crop region height, if the crop region height is larger
2880 than width</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002881 <range>&amp;gt;=1</range>
Igor Murashkinf11a4df2013-05-07 10:00:46 -07002882 <tag id="BC" />
Igor Murashkine6b66462012-11-26 15:26:38 -08002883 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002884 <entry name="availableProcessedMinDurations" type="int64" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002885 container="array">
2886 <array>
2887 <size>n</size>
2888 </array>
Igor Murashkin10f4e0f2014-01-13 17:22:58 -08002889 <description>For each available processed output size (defined in
2890 android.scaler.availableProcessedSizes), this property lists the
2891 minimum supportable frame duration for that size.
2892
2893 </description>
2894 <units>ns</units>
2895 <details>
2896 This should correspond to the frame duration when only that processed
2897 stream is active, with all processing (typically in android.*.mode)
2898 set to FAST.
2899
2900 When multiple streams are configured, the minimum frame duration will
2901 be &amp;gt;= max(individual stream min durations).
2902 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002903 <tag id="BC" />
2904 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002905 <entry name="availableProcessedSizes" type="int32" visibility="public"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07002906 container="array" typedef="size">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002907 <array>
2908 <size>n</size>
2909 <size>2</size>
2910 </array>
2911 <description>The resolutions available for use with
2912 processed output streams, such as YV12, NV12, and
2913 platform opaque YUV/RGB streams to the GPU or video
Zhijun Heb8317e22014-01-16 09:47:07 -08002914 encoders.</description>
2915 <details>
2916 The resolutions are listed as `(width, height)` pairs.
2917
2918 For a given use case, the actual maximum supported resolution
2919 may be lower than what is listed here, depending on the destination
2920 Surface for the image data. For example, for recording video,
2921 the video encoder chosen may have a maximum size limit (e.g. 1080p)
2922 smaller than what the camera (e.g. maximum resolution is 3264x2448)
2923 can provide.
2924
2925 Please reference the documentation for the image data destination to
2926 check if it limits the maximum size for image data.
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002927 </details>
Zhijun Heb8317e22014-01-16 09:47:07 -08002928 <hal_details>
2929 For FULL capability devices (`android.info.supportedHardwareLevel == FULL`),
2930 the HAL must include all JPEG sizes listed in android.scaler.availableJpegSizes
2931 and each below resolution if it is smaller than or equal to the sensor
2932 maximum resolution (if they are not listed in JPEG sizes already):
2933
2934 * 240p (320 x 240)
2935 * 480p (640 x 480)
2936 * 720p (1280 x 720)
2937 * 1080p (1920 x 1080)
2938
2939 For LIMITED capability devices (`android.info.supportedHardwareLevel == LIMITED`),
2940 the HAL only has to list up to the maximum video size supported by the devices.
2941 </hal_details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002942 <tag id="BC" />
2943 </entry>
2944 <entry name="availableRawMinDurations" type="int64"
2945 container="array">
2946 <array>
2947 <size>n</size>
2948 </array>
Igor Murashkin10f4e0f2014-01-13 17:22:58 -08002949 <description>
Zhijun Hebdc94c42014-01-21 18:28:30 -08002950 For each available raw output size (defined in
Igor Murashkin10f4e0f2014-01-13 17:22:58 -08002951 android.scaler.availableRawSizes), this property lists the minimum
2952 supportable frame duration for that size.
2953 </description>
2954 <units>ns</units>
2955 <details>
2956 Should correspond to the frame duration when only the raw stream is
2957 active.
2958
2959 When multiple streams are configured, the minimum
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08002960 frame duration will be &amp;gt;= max(individual stream min
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002961 durations)</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002962 <tag id="BC" />
2963 </entry>
2964 <entry name="availableRawSizes" type="int32"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07002965 container="array" typedef="size">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002966 <array>
2967 <size>n</size>
2968 <size>2</size>
2969 </array>
2970 <description>The resolutions available for use with raw
2971 sensor output streams, listed as width,
2972 height</description>
2973 <range>Must include: - sensor maximum resolution</range>
2974 </entry>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002975 </static>
2976 <dynamic>
2977 <clone entry="android.scaler.cropRegion" kind="controls">
2978 </clone>
2979 </dynamic>
2980 </section>
2981 <section name="sensor">
2982 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002983 <entry name="exposureTime" type="int64" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002984 <description>Duration each pixel is exposed to
Igor Murashkin656aa5a2013-08-13 14:23:39 -07002985 light.
2986
2987 If the sensor can't expose this exact duration, it should shorten the
2988 duration exposed to the nearest possible value (rather than expose longer).
2989 </description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002990 <units>nanoseconds</units>
2991 <range>android.sensor.info.exposureTimeRange</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08002992 <details>1/10000 - 30 sec range. No bulb mode</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002993 <tag id="V1" />
2994 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07002995 <entry name="frameDuration" type="int64" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002996 <description>Duration from start of frame exposure to
Igor Murashkin10f4e0f2014-01-13 17:22:58 -08002997 start of next frame exposure.</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08002998 <units>nanoseconds</units>
Igor Murashkin10f4e0f2014-01-13 17:22:58 -08002999 <range>See android.sensor.info.maxFrameDuration,
3000 android.scaler.available*MinDurations. The duration
3001 is capped to `max(duration, exposureTime + overhead)`.</range>
3002 <details>
3003 The maximum frame rate that can be supported by a camera subsystem is
3004 a function of many factors:
3005
3006 * Requested resolutions of output image streams
3007 * Availability of binning / skipping modes on the imager
3008 * The bandwidth of the imager interface
3009 * The bandwidth of the various ISP processing blocks
3010
3011 Since these factors can vary greatly between different ISPs and
3012 sensors, the camera abstraction tries to represent the bandwidth
3013 restrictions with as simple a model as possible.
3014
3015 The model presented has the following characteristics:
3016
3017 * The image sensor is always configured to output the smallest
3018 resolution possible given the application's requested output stream
3019 sizes. The smallest resolution is defined as being at least as large
3020 as the largest requested output stream size; the camera pipeline must
3021 never digitally upsample sensor data when the crop region covers the
3022 whole sensor. In general, this means that if only small output stream
3023 resolutions are configured, the sensor can provide a higher frame
3024 rate.
3025 * Since any request may use any or all the currently configured
3026 output streams, the sensor and ISP must be configured to support
3027 scaling a single capture to all the streams at the same time. This
3028 means the camera pipeline must be ready to produce the largest
3029 requested output size without any delay. Therefore, the overall
3030 frame rate of a given configured stream set is governed only by the
3031 largest requested stream resolution.
3032 * Using more than one output stream in a request does not affect the
3033 frame duration.
3034 * JPEG streams act like processed YUV streams in requests for which
3035 they are not included; in requests in which they are directly
3036 referenced, they act as JPEG streams. This is because supporting a
3037 JPEG stream requires the underlying YUV data to always be ready for
3038 use by a JPEG encoder, but the encoder will only be used (and impact
3039 frame duration) on requests that actually reference a JPEG stream.
3040 * The JPEG processor can run concurrently to the rest of the camera
3041 pipeline, but cannot process more than 1 capture at a time.
3042
3043 The necessary information for the application, given the model above,
3044 is provided via the android.scaler.available*MinDurations fields.
3045 These are used to determine the maximum frame rate / minimum frame
3046 duration that is possible for a given stream configuration.
3047
3048 Specifically, the application can use the following rules to
3049 determine the minimum frame duration it can request from the HAL
3050 device:
3051
3052 1. Given the application's currently configured set of output
3053 streams, `S`, divide them into three sets: streams in a JPEG format
3054 `SJ`, streams in a raw sensor format `SR`, and the rest ('processed')
3055 `SP`.
3056 1. For each subset of streams, find the largest resolution (by pixel
3057 count) in the subset. This gives (at most) three resolutions `RJ`,
3058 `RR`, and `RP`.
3059 1. If `RJ` is greater than `RP`, set `RP` equal to `RJ`. If there is
3060 no exact match for `RP == RJ` (in particular there isn't an available
3061 processed resolution at the same size as `RJ`), then set `RP` equal
3062 to the smallest processed resolution that is larger than `RJ`. If
3063 there are no processed resolutions larger than `RJ`, then set `RJ` to
3064 the processed resolution closest to `RJ`.
3065 1. If `RP` is greater than `RR`, set `RR` equal to `RP`. If there is
3066 no exact match for `RR == RP` (in particular there isn't an available
3067 raw resolution at the same size as `RP`), then set `RR` equal to
3068 or to the smallest raw resolution that is larger than `RP`. If
3069 there are no raw resolutions larger than `RP`, then set `RR` to
3070 the raw resolution closest to `RP`.
3071 1. Look up the matching minimum frame durations in the property lists
3072 android.scaler.availableJpegMinDurations,
3073 android.scaler.availableRawMinDurations, and
3074 android.scaler.availableProcessedMinDurations. This gives three
3075 minimum frame durations `FJ`, `FR`, and `FP`.
3076 1. If a stream of requests do not use a JPEG stream, then the minimum
3077 supported frame duration for each request is `max(FR, FP)`.
3078 1. If a stream of requests all use the JPEG stream, then the minimum
3079 supported frame duration for each request is `max(FR, FP, FJ)`.
3080 1. If a mix of JPEG-using and non-JPEG-using requests is submitted by
3081 the application, then the HAL will have to delay JPEG-using requests
3082 whenever the JPEG encoder is still busy processing an older capture.
3083 This will happen whenever a JPEG-using request starts capture less
3084 than `FJ` _ns_ after a previous JPEG-using request. The minimum
3085 supported frame duration will vary between the values calculated in
3086 \#6 and \#7.
3087 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003088 <tag id="V1" />
3089 <tag id="BC" />
3090 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07003091 <entry name="sensitivity" type="int32" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003092 <description>Gain applied to image data. Must be
3093 implemented through analog gain only if set to values
Igor Murashkin656aa5a2013-08-13 14:23:39 -07003094 below 'maximum analog sensitivity'.
3095
3096 If the sensor can't apply this exact gain, it should lessen the
3097 gain to the nearest possible value (rather than gain more).
3098 </description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003099 <units>ISO arithmetic units</units>
3100 <range>android.sensor.info.sensitivityRange</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003101 <details>ISO 12232:2006 REI method</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003102 <tag id="V1" />
3103 </entry>
3104 </controls>
3105 <static>
3106 <namespace name="info">
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07003107 <entry name="activeArraySize" type="int32" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003108 type_notes="Four ints defining the active pixel rectangle"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07003109 container="array"
3110 typedef="rectangle">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003111 <array>
3112 <size>4</size>
3113 </array>
3114 <description>Area of raw data which corresponds to only
Zhijun Hebdc94c42014-01-21 18:28:30 -08003115 active pixels.</description>
3116 <range>This array contains `(xmin, ymin, width, height)`. The `(xmin, ymin)` must be
3117 &amp;gt;= `(0,0)`. The `(width, height)` must be &amp;lt;=
3118 `android.sensor.info.pixelArraySize`.
3119 </range>
3120 <details>It is smaller or equal to
3121 sensor full pixel array, which could include the black calibration pixels.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003122 <tag id="DNG" />
3123 </entry>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003124 <entry name="sensitivityRange" type="int32" visibility="public"
3125 type_notes="Range of supported sensitivities"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003126 container="array">
3127 <array>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003128 <size>2</size>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003129 </array>
3130 <description>Range of valid sensitivities</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08003131 <range>Min &lt;= 100, Max &amp;gt;= 1600</range>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003132 <tag id="BC" />
3133 <tag id="V1" />
3134 </entry>
Igor Murashkinb556bc42012-12-04 16:07:21 -08003135 <entry name="colorFilterArrangement" type="byte" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003136 <enum>
3137 <value>RGGB</value>
3138 <value>GRBG</value>
3139 <value>GBRG</value>
3140 <value>BGGR</value>
3141 <value>RGB
3142 <notes>Sensor is not Bayer; output has 3 16-bit
3143 values for each pixel, instead of just 1 16-bit value
3144 per pixel.</notes></value>
3145 </enum>
3146 <description>Arrangement of color filters on sensor;
3147 represents the colors in the top-left 2x2 section of
3148 the sensor, in reading order</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003149 <tag id="DNG" />
3150 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07003151 <entry name="exposureTimeRange" type="int64" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003152 type_notes="nanoseconds" container="array">
3153 <array>
3154 <size>2</size>
3155 </array>
3156 <description>Range of valid exposure
Igor Murashkin061c6002014-01-27 16:00:26 -08003157 times used by android.sensor.exposureTime.</description>
3158 <range>Min &lt;= 100e3 (100 us), Max &amp;gt;= 1e9 (1
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003159 sec)</range>
Igor Murashkin061c6002014-01-27 16:00:26 -08003160 <hal_details>The maximum of the range must be at least
3161 1 second. It should be at least 30 seconds.</hal_details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003162 <tag id="V1" />
3163 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07003164 <entry name="maxFrameDuration" type="int64" visibility="public">
Zhijun He69fc0ea2013-07-17 09:42:58 -07003165 <description>Maximum possible frame duration (minimum frame
Igor Murashkin061c6002014-01-27 16:00:26 -08003166 rate).</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003167 <units>nanoseconds</units>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08003168 <range>&amp;gt;= 30e9</range>
Igor Murashkin061c6002014-01-27 16:00:26 -08003169 <details>The largest possible android.sensor.frameDuration
3170 that will be accepted by the camera device. Attempting to use
3171 frame durations beyond the maximum will result in the frame duration
3172 being clipped to the maximum. See that control
3173 for a full definition of frame durations.
3174
3175 Refer to
3176 android.scaler.availableProcessedMinDurations,
3177 android.scaler.availableJpegMinDurations, and
3178 android.scaler.availableRawMinDurations for the minimum
3179 frame duration values.
3180 </details>
3181 <hal_details>
3182 This value must be at least 1 second. It should be at least 30
3183 seconds (30e9 ns).
3184
3185 android.sensor.maxFrameDuration must be greater or equal to the
3186 android.sensor.exposureTimeRange max value (since exposure time
3187 overrides frame duration).
3188 </hal_details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003189 <tag id="BC" />
3190 <tag id="V1" />
3191 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07003192 <entry name="physicalSize" type="float" visibility="public"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003193 type_notes="width x height in millimeters"
Timothy Knightec817d52013-08-16 16:15:29 -07003194 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003195 <array>
3196 <size>2</size>
3197 </array>
3198 <description>The physical dimensions of the full pixel
3199 array</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003200 <details>Needed for FOV calculation for old API</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003201 <tag id="V1" />
3202 <tag id="BC" />
3203 </entry>
3204 <entry name="pixelArraySize" type="int32"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07003205 container="array" typedef="size">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003206 <array>
3207 <size>2</size>
3208 </array>
3209 <description>Dimensions of full pixel array, possibly
Zhijun Hebdc94c42014-01-21 18:28:30 -08003210 including black calibration pixels.</description>
3211 <details>The maximum output resolution for raw format in
3212 android.scaler.availableRawSizes will be equal to this size.
3213 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003214 <tag id="DNG" />
3215 <tag id="BC" />
3216 </entry>
3217 <entry name="whiteLevel" type="int32">
3218 <description>Maximum raw value output by
3219 sensor</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08003220 <range>&amp;gt; 1024 (10-bit output)</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003221 <details>Defines sensor bit depth (10-14 bits is
3222 expected)</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003223 <tag id="DNG" />
3224 </entry>
3225 </namespace>
Alex Rayef40ad62013-10-01 17:52:33 -07003226 <entry name="baseGainFactor" type="rational" visibility="public"
3227 optional="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003228 <description>Gain factor from electrons to raw units when
3229 ISO=100</description>
3230 <tag id="V1" />
Alex Rayef40ad62013-10-01 17:52:33 -07003231 <tag id="FULL" />
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003232 </entry>
Ruben Brunk24bdaaf2014-01-31 14:11:20 -08003233 <entry name="blackLevelPattern" type="int32" visibility="public"
Ruben Brunk793249d2014-02-07 16:09:40 -08003234 optional="true" type_notes="2x2 raw count block" container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003235 <array>
3236 <size>4</size>
3237 </array>
Ruben Brunk24bdaaf2014-01-31 14:11:20 -08003238 <description>
3239 A fixed black level offset for each of the color filter arrangement
3240 (CFA) mosaic channels.
3241 </description>
3242 <range>&amp;gt;= 0 for each.</range>
3243 <details>
3244 This tag specifies the zero light value for each of the CFA mosaic
3245 channels in the camera sensor.
3246
3247 The values are given in row-column scan order, with the first value
3248 corresponding to the element of the CFA in row=0, column=0.
3249 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003250 <tag id="DNG" />
3251 </entry>
3252 <entry name="calibrationTransform1" type="rational"
3253 type_notes="3x3 matrix in row-major-order"
3254 container="array">
3255 <array>
3256 <size>9</size>
3257 </array>
3258 <description>Per-device calibration on top of color space
3259 transform 1</description>
3260 <tag id="DNG" />
3261 </entry>
3262 <entry name="calibrationTransform2" type="rational"
3263 type_notes="3x3 matrix in row-major-order"
3264 container="array">
3265 <array>
3266 <size>9</size>
3267 </array>
3268 <description>Per-device calibration on top of color space
3269 transform 2</description>
3270 <tag id="DNG" />
3271 </entry>
3272 <entry name="colorTransform1" type="rational"
3273 type_notes="3x3 matrix in row-major-order"
3274 container="array">
3275 <array>
3276 <size>9</size>
3277 </array>
3278 <description>Linear mapping from XYZ (D50) color space to
3279 reference linear sensor color, for first reference
3280 illuminant</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003281 <details>Use as follows XYZ = inv(transform) * clip( (raw -
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003282 black level(raw) ) / ( white level - max black level) ).
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003283 At least in the simple case</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003284 <tag id="DNG" />
3285 </entry>
3286 <entry name="colorTransform2" type="rational"
3287 type_notes="3x3 matrix in row-major-order"
3288 container="array">
3289 <array>
3290 <size>9</size>
3291 </array>
3292 <description>Linear mapping from XYZ (D50) color space to
3293 reference linear sensor color, for second reference
3294 illuminant</description>
3295 <tag id="DNG" />
3296 </entry>
3297 <entry name="forwardMatrix1" type="rational"
3298 type_notes="3x3 matrix in row-major-order"
3299 container="array">
3300 <array>
3301 <size>9</size>
3302 </array>
3303 <description>Used by DNG for better WB
3304 adaptation</description>
3305 <tag id="DNG" />
3306 </entry>
3307 <entry name="forwardMatrix2" type="rational"
3308 type_notes="3x3 matrix in row-major-order"
3309 container="array">
3310 <array>
3311 <size>9</size>
3312 </array>
3313 <description>Used by DNG for better WB
3314 adaptation</description>
3315 <tag id="DNG" />
3316 </entry>
Alex Rayef40ad62013-10-01 17:52:33 -07003317 <entry name="maxAnalogSensitivity" type="int32" visibility="public"
3318 optional="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003319 <description>Maximum sensitivity that is implemented
Zhijun Hebdc94c42014-01-21 18:28:30 -08003320 purely through analog gain.</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003321 <details>For android.sensor.sensitivity values less than or
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003322 equal to this, all applied gain must be analog. For
Zhijun Hebdc94c42014-01-21 18:28:30 -08003323 values above this, the gain applied can be a mix of analog and
3324 digital.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003325 <tag id="V1" />
Alex Rayef40ad62013-10-01 17:52:33 -07003326 <tag id="FULL" />
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003327 </entry>
3328 <entry name="noiseModelCoefficients" type="float"
3329 type_notes="float constants A, B for the noise variance model"
3330 container="array">
3331 <array>
3332 <size>2</size>
3333 </array>
3334 <description>Estimation of sensor noise
3335 characteristics</description>
3336 <units>var(raw pixel value) = electrons * (baseGainFactor
3337 * iso/100)^2 + A * (baseGainFactor * iso/100)^2 +
3338 B</units>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003339 <details>A represents sensor read noise before analog
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003340 amplification; B represents noise from A/D conversion and
3341 other circuits after amplification. Both noise sources
3342 are assumed to be gaussian, independent, and not to vary
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003343 across the sensor</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003344 <tag id="V1" />
3345 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07003346 <entry name="orientation" type="int32" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003347 <description>Clockwise angle through which the output
3348 image needs to be rotated to be upright on the device
3349 screen in its native orientation. Also defines the
3350 direction of rolling shutter readout, which is from top
3351 to bottom in the sensor's coordinate system</description>
3352 <units>degrees clockwise rotation, only multiples of
3353 90</units>
3354 <range>0,90,180,270</range>
3355 <tag id="BC" />
3356 </entry>
Igor Murashkinb556bc42012-12-04 16:07:21 -08003357 <entry name="referenceIlluminant1" type="byte" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003358 <enum>
3359 <value id="1">DAYLIGHT</value>
3360 <value id="2">FLUORESCENT</value>
3361 <value id="3">TUNGSTEN
3362 <notes>Incandescent light</notes></value>
3363 <value id="4">FLASH</value>
3364 <value id="9">FINE_WEATHER</value>
3365 <value id="10">CLOUDY_WEATHER</value>
3366 <value id="11">SHADE</value>
3367 <value id="12">DAYLIGHT_FLUORESCENT
3368 <notes>D 5700 - 7100K</notes></value>
3369 <value id="13">DAY_WHITE_FLUORESCENT
3370 <notes>N 4600 - 5400K</notes></value>
3371 <value id="14">COOL_WHITE_FLUORESCENT
3372 <notes>W 3900 - 4500K</notes></value>
3373 <value id="15">WHITE_FLUORESCENT
3374 <notes>WW 3200 - 3700K</notes></value>
3375 <value id="17">STANDARD_A</value>
3376 <value id="18">STANDARD_B</value>
3377 <value id="19">STANDARD_C</value>
3378 <value id="20">D55</value>
3379 <value id="21">D65</value>
3380 <value id="22">D75</value>
3381 <value id="23">D50</value>
3382 <value id="24">ISO_STUDIO_TUNGSTEN</value>
3383 </enum>
3384 <description>Light source used to define transform
3385 1</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003386 <details>[EXIF LightSource tag] Must all these be
3387 supported? Need CCT for each!</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003388 <tag id="DNG" />
3389 <tag id="EXIF" />
3390 </entry>
3391 <entry name="referenceIlluminant2" type="byte">
3392 <description>Light source used to define transform
3393 2</description>
3394 <units>Same as illuminant 1</units>
3395 </entry>
3396 </static>
3397 <dynamic>
3398 <clone entry="android.sensor.exposureTime" kind="controls">
3399 </clone>
3400 <clone entry="android.sensor.frameDuration"
3401 kind="controls"></clone>
3402 <clone entry="android.sensor.sensitivity" kind="controls">
3403 </clone>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07003404 <entry name="timestamp" type="int64" visibility="public">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003405 <description>Time at start of exposure of first
3406 row</description>
3407 <units>nanoseconds</units>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08003408 <range>&amp;gt; 0</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003409 <details>Monotonic, should be synced to other timestamps in
3410 system</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003411 <tag id="BC" />
3412 </entry>
Alex Rayef40ad62013-10-01 17:52:33 -07003413 <entry name="temperature" type="float" visibility="public"
3414 optional="true">
Igor Murashkin656aa5a2013-08-13 14:23:39 -07003415 <description>The temperature of the sensor, sampled at the time
3416 exposure began for this frame.
3417
3418 The thermal diode being queried should be inside the sensor PCB, or
3419 somewhere close to it.
3420 </description>
3421
3422 <units>celsius</units>
3423 <range>Optional. This value is missing if no temperature is available.</range>
Alex Rayef40ad62013-10-01 17:52:33 -07003424 <tag id="FULL" />
Igor Murashkin656aa5a2013-08-13 14:23:39 -07003425 </entry>
Ruben Brunk7b9e9bc2014-02-06 18:37:48 -08003426 <entry name="neutralColorPoint" type="rational" visibility="public"
3427 optional="true" container="array">
3428 <array>
3429 <size>3</size>
3430 </array>
3431 <description>
3432 The estimated white balance at the time of capture.
3433 </description>
3434 <details>
3435 The estimated white balance encoded as the RGB values of the
3436 perfectly neutral color point in the linear native sensor color space.
3437 The order of the values is R, G, B; where R is in the lowest index.
3438 </details>
3439 <tag id="DNG" />
3440 </entry>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003441 </dynamic>
Igor Murashkina46e02f2014-01-09 17:43:38 -08003442 <controls>
3443 <entry name="testPatternData" type="int32" visibility="public" optional="true" container="array">
3444 <array>
3445 <size>4</size>
3446 </array>
3447 <description>
3448 A pixel `[R, G_even, G_odd, B]` that supplies the test pattern
3449 when android.sensor.testPatternMode is SOLID_COLOR.
3450 </description>
3451 <range>Optional.
3452 Must be supported if android.sensor.availableTestPatternModes contains
3453 SOLID_COLOR.</range>
3454 <details>
3455 Each color channel is treated as an unsigned 32-bit integer.
3456 The camera device then uses the most significant X bits
3457 that correspond to how many bits are in its Bayer raw sensor
3458 output.
3459
3460 For example, a sensor with RAW10 Bayer output would use the
3461 10 most significant bits from each color channel.
3462 </details>
3463 <hal_details>
3464 </hal_details>
3465 </entry>
3466 <entry name="testPatternMode" type="int32" visibility="public" optional="true"
3467 enum="true">
3468 <enum>
3469 <value>OFF
3470 <notes>Default. No test pattern mode is used, and the camera
3471 device returns captures from the image sensor.</notes>
3472 </value>
3473 <value>SOLID_COLOR
3474 <notes>
3475 Each pixel in `[R, G_even, G_odd, B]` is replaced by its
3476 respective color channel provided in
3477 android.sensor.testPatternData.
3478
3479 For example:
3480
3481 android.testPatternData = [0, 0xFFFFFFFF, 0xFFFFFFFF, 0]
3482
3483 All green pixels are 100% green. All red/blue pixels are black.
3484
3485 android.testPatternData = [0xFFFFFFFF, 0, 0xFFFFFFFF, 0]
3486
3487 All red pixels are 100% red. Only the odd green pixels
3488 are 100% green. All blue pixels are 100% black.
3489 </notes>
3490 </value>
3491 <value>COLOR_BARS
3492 <notes>
3493 All pixel data is replaced with an 8-bar color pattern.
3494
3495 The vertical bars (left-to-right) are as follows:
3496
3497 * 100% white
3498 * yellow
3499 * cyan
3500 * green
3501 * magenta
3502 * red
3503 * blue
3504 * black
3505
3506 In general the image would look like the following:
3507
3508 W Y C G M R B K
3509 W Y C G M R B K
3510 W Y C G M R B K
3511 W Y C G M R B K
3512 W Y C G M R B K
3513 . . . . . . . .
3514 . . . . . . . .
3515 . . . . . . . .
3516
3517 (B = Blue, K = Black)
3518
3519 Each bar should take up 1/8 of the sensor pixel array width.
3520 When this is not possible, the bar size should be rounded
3521 down to the nearest integer and the pattern can repeat
3522 on the right side.
3523
3524 Each bar's height must always take up the full sensor
3525 pixel array height.
3526
3527 Each pixel in this test pattern must be set to either
3528 0% intensity or 100% intensity.
3529 </notes>
3530 </value>
3531 <value>COLOR_BARS_FADE_TO_GRAY
3532 <notes>
3533 The test pattern is similar to COLOR_BARS, except that
3534 each bar should start at its specified color at the top,
3535 and fade to gray at the bottom.
3536
3537 Furthermore each bar is further subdivided into a left and
3538 right half. The left half should have a smooth gradient,
3539 and the right half should have a quantized gradient.
3540
3541 In particular, the right half's should consist of blocks of the
3542 same color for 1/16th active sensor pixel array width.
3543
3544 The least significant bits in the quantized gradient should
3545 be copied from the most significant bits of the smooth gradient.
3546
3547 The height of each bar should always be a multiple of 128.
3548 When this is not the case, the pattern should repeat at the bottom
3549 of the image.
3550 </notes>
3551 </value>
3552 <value>PN9
3553 <notes>
3554 All pixel data is replaced by a pseudo-random sequence
3555 generated from a PN9 512-bit sequence (typically implemented
3556 in hardware with a linear feedback shift register).
3557
3558 The generator should be reset at the beginning of each frame,
3559 and thus each subsequent raw frame with this test pattern should
3560 be exactly the same as the last.
3561 </notes>
3562 </value>
3563 <value id="256">CUSTOM1
3564 <notes>The first custom test pattern. All custom patterns that are
3565 available only on this camera device are at least this numeric
3566 value.
3567
3568 All of the custom test patterns will be static
3569 (that is the raw image must not vary from frame to frame).
3570 </notes>
3571 </value>
3572 </enum>
3573 <description>When enabled, the sensor sends a test pattern instead of
3574 doing a real exposure from the camera.
3575 </description>
3576 <range>Optional. Defaults to OFF. Value must be one of
3577 android.sensor.availableTestPatternModes</range>
3578 <details>
3579 When a test pattern is enabled, all manual sensor controls specified
3580 by android.sensor.* should be ignored. All other controls should
3581 work as normal.
3582
3583 For example, if manual flash is enabled, flash firing should still
3584 occur (and that the test pattern remain unmodified, since the flash
3585 would not actually affect it).
3586 </details>
3587 <hal_details>
3588 All test patterns are specified in the Bayer domain.
3589
3590 The HAL may choose to substitute test patterns from the sensor
3591 with test patterns from on-device memory. In that case, it should be
3592 indistinguishable to the ISP whether the data came from the
3593 sensor interconnect bus (such as CSI2) or memory.
3594 </hal_details>
3595 </entry>
3596 </controls>
3597 <dynamic>
3598 <clone entry="android.sensor.testPatternMode" kind="controls">
3599 </clone>
3600 </dynamic>
3601 <static>
3602 <entry name="availableTestPatternModes" type="byte" visibility="public"
3603 optional="true">
3604 <description>Optional. Defaults to [OFF]. Lists the supported test
3605 pattern modes for android.test.patternMode.
3606 </description>
3607 <range>Must include OFF. All custom modes must be >= CUSTOM1</range>
3608 </entry>
3609
3610 </static>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003611 </section>
3612 <section name="shading">
3613 <controls>
Zhijun He2f86a212014-01-15 10:34:02 -08003614 <entry name="mode" type="byte" visibility="hidden" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003615 <enum>
3616 <value>OFF
Zhijun He2f86a212014-01-15 10:34:02 -08003617 <notes>No lens shading correction is applied</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003618 <value>FAST
Zhijun He2f86a212014-01-15 10:34:02 -08003619 <notes>Must not slow down frame rate relative to sensor raw output</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003620 <value>HIGH_QUALITY
Zhijun He2f86a212014-01-15 10:34:02 -08003621 <notes>Frame rate may be reduced by high quality</notes></value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003622 </enum>
3623 <description>Quality of lens shading correction applied
Zhijun He2f86a212014-01-15 10:34:02 -08003624 to the image data.</description>
3625 <details>
3626 When set to OFF mode, no lens shading correction will be applied by the
3627 camera device, and an identity lens shading map data will be provided
3628 if `android.statistics.lensShadingMapMode == ON`. For example, for lens
3629 shading map with size specified as `android.lens.info.shadingMapSize = [ 4, 3 ]`,
3630 the output android.statistics.lensShadingMap for this case will be an identity map
3631 shown below:
3632
3633 [ 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
3634 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
3635 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
3636 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
3637 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0,
3638 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 ]
3639
3640 When set to other modes, lens shading correction will be applied by the
3641 camera device. Applications can request lens shading map data by setting
3642 android.statistics.lensShadingMapMode to ON, and then the camera device will provide
3643 lens shading map data in android.statistics.lensShadingMap, with size specified
3644 by android.lens.info.shadingMapSize.
3645 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003646 </entry>
3647 <entry name="strength" type="byte">
3648 <description>Control the amount of shading correction
3649 applied to the images</description>
3650 <units>unitless: 1-10; 10 is full shading
3651 compensation</units>
3652 <tag id="ADV" />
3653 </entry>
3654 </controls>
3655 <dynamic>
3656 <clone entry="android.shading.mode" kind="controls">
3657 </clone>
3658 </dynamic>
3659 </section>
3660 <section name="statistics">
3661 <controls>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07003662 <entry name="faceDetectMode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003663 <enum>
3664 <value>OFF</value>
3665 <value>SIMPLE
3666 <notes>Optional Return rectangle and confidence
3667 only</notes></value>
3668 <value>FULL
3669 <notes>Optional Return all face
3670 metadata</notes></value>
3671 </enum>
3672 <description>State of the face detector
3673 unit</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003674 <range>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003675 android.statistics.info.availableFaceDetectModes</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003676 <details>Whether face detection is enabled, and whether it
Zhijun He69fc0ea2013-07-17 09:42:58 -07003677 should output just the basic fields or the full set of
3678 fields. Value must be one of the
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003679 android.statistics.info.availableFaceDetectModes.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003680 <tag id="BC" />
3681 </entry>
Igor Murashkinb8dc8812013-07-17 16:29:34 -07003682 <entry name="histogramMode" type="byte" enum="true" typedef="boolean">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003683 <enum>
3684 <value>OFF</value>
3685 <value>ON</value>
3686 </enum>
3687 <description>Operating mode for histogram
3688 generation</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003689 <tag id="V1" />
3690 </entry>
Igor Murashkinb8dc8812013-07-17 16:29:34 -07003691 <entry name="sharpnessMapMode" type="byte" enum="true" typedef="boolean">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003692 <enum>
3693 <value>OFF</value>
3694 <value>ON</value>
3695 </enum>
3696 <description>Operating mode for sharpness map
3697 generation</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003698 <tag id="V1" />
3699 </entry>
3700 </controls>
3701 <static>
3702 <namespace name="info">
3703 <entry name="availableFaceDetectModes" type="byte"
Zhijun He69fc0ea2013-07-17 09:42:58 -07003704 visibility="public"
3705 type_notes="List of enums from android.statistics.faceDetectMode"
3706 container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003707 <array>
3708 <size>n</size>
3709 </array>
3710 <description>Which face detection modes are available,
3711 if any</description>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003712 <units>List of enum:
3713 OFF
3714 SIMPLE
3715 FULL</units>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003716 <details>OFF means face detection is disabled, it must
Zhijun He69fc0ea2013-07-17 09:42:58 -07003717 be included in the list.
3718
3719 SIMPLE means the device supports the
3720 android.statistics.faceRectangles and
3721 android.statistics.faceScores outputs.
3722
3723 FULL means the device additionally supports the
3724 android.statistics.faceIds and
3725 android.statistics.faceLandmarks outputs.
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003726 </details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003727 </entry>
3728 <entry name="histogramBucketCount" type="int32">
3729 <description>Number of histogram buckets
3730 supported</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08003731 <range>&amp;gt;= 64</range>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003732 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07003733 <entry name="maxFaceCount" type="int32" visibility="public" >
Zhijun He69fc0ea2013-07-17 09:42:58 -07003734 <description>Maximum number of simultaneously detectable
3735 faces</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08003736 <range>&amp;gt;= 4 if availableFaceDetectionModes lists
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003737 modes besides OFF, otherwise 0</range>
3738 </entry>
3739 <entry name="maxHistogramCount" type="int32">
3740 <description>Maximum value possible for a histogram
3741 bucket</description>
3742 </entry>
3743 <entry name="maxSharpnessMapValue" type="int32">
3744 <description>Maximum value possible for a sharpness map
3745 region.</description>
3746 </entry>
3747 <entry name="sharpnessMapSize" type="int32"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07003748 type_notes="width x height" container="array" typedef="size">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003749 <array>
3750 <size>2</size>
3751 </array>
3752 <description>Dimensions of the sharpness
3753 map</description>
3754 <range>Must be at least 32 x 32</range>
3755 </entry>
3756 </namespace>
3757 </static>
3758 <dynamic>
3759 <clone entry="android.statistics.faceDetectMode"
3760 kind="controls"></clone>
Zhijun He3b4c2062013-10-07 11:23:30 -07003761 <entry name="faceIds" type="int32" visibility="hidden" container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003762 <array>
3763 <size>n</size>
3764 </array>
3765 <description>List of unique IDs for detected
3766 faces</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003767 <details>Only available if faceDetectMode == FULL</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003768 <tag id="BC" />
3769 </entry>
Zhijun He3b4c2062013-10-07 11:23:30 -07003770 <entry name="faceLandmarks" type="int32" visibility="hidden"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003771 type_notes="(leftEyeX, leftEyeY, rightEyeX, rightEyeY, mouthX, mouthY)"
3772 container="array">
3773 <array>
3774 <size>n</size>
3775 <size>6</size>
3776 </array>
3777 <description>List of landmarks for detected
3778 faces</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003779 <details>Only available if faceDetectMode == FULL</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003780 <tag id="BC" />
3781 </entry>
Zhijun He3b4c2062013-10-07 11:23:30 -07003782 <entry name="faceRectangles" type="int32" visibility="hidden"
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003783 type_notes="(xmin, ymin, xmax, ymax). (0,0) is top-left of active pixel area"
Igor Murashkinb8dc8812013-07-17 16:29:34 -07003784 container="array" typedef="rectangle">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003785 <array>
3786 <size>n</size>
3787 <size>4</size>
3788 </array>
3789 <description>List of the bounding rectangles for detected
3790 faces</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003791 <details>Only available if faceDetectMode != OFF</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003792 <tag id="BC" />
3793 </entry>
Zhijun He3b4c2062013-10-07 11:23:30 -07003794 <entry name="faceScores" type="byte" visibility="hidden" container="array">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003795 <array>
3796 <size>n</size>
3797 </array>
3798 <description>List of the face confidence scores for
3799 detected faces</description>
Zhijun He59ccb1e2013-10-02 14:06:15 -07003800 <range>1-100</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003801 <details>Only available if faceDetectMode != OFF. The value should be
3802 meaningful (for example, setting 100 at all times is illegal).</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003803 <tag id="BC" />
3804 </entry>
3805 <entry name="histogram" type="int32"
3806 type_notes="count of pixels for each color channel that fall into each histogram bucket, scaled to be between 0 and maxHistogramCount"
3807 container="array">
3808 <array>
3809 <size>n</size>
3810 <size>3</size>
3811 </array>
3812 <description>A 3-channel histogram based on the raw
3813 sensor data</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003814 <details>The k'th bucket (0-based) covers the input range
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003815 (with w = android.sensor.info.whiteLevel) of [ k * w/N,
3816 (k + 1) * w / N ). If only a monochrome sharpness map is
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003817 supported, all channels should have the same data</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003818 <tag id="V1" />
3819 </entry>
3820 <clone entry="android.statistics.histogramMode"
3821 kind="controls"></clone>
3822 <entry name="sharpnessMap" type="int32"
3823 type_notes="estimated sharpness for each region of the input image. Normalized to be between 0 and maxSharpnessMapValue. Higher values mean sharper (better focused)"
3824 container="array">
3825 <array>
3826 <size>n</size>
3827 <size>m</size>
3828 <size>3</size>
3829 </array>
3830 <description>A 3-channel sharpness map, based on the raw
3831 sensor data</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003832 <details>If only a monochrome sharpness map is supported,
3833 all channels should have the same data</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003834 <tag id="V1" />
3835 </entry>
3836 <clone entry="android.statistics.sharpnessMapMode"
3837 kind="controls"></clone>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003838 <entry name="lensShadingMap" type="float" visibility="public"
3839 type_notes="2D array of float gain factors per channel to correct lens shading"
3840 container="array">
3841 <array>
3842 <size>4</size>
3843 <size>n</size>
3844 <size>m</size>
3845 </array>
Igor Murashkin1dd4ecb2013-12-11 13:31:00 -08003846 <description>The shading map is a low-resolution floating-point map
3847 that lists the coefficients used to correct for vignetting, for each
3848 Bayer color channel.</description>
Igor Murashkin6cb7c2c2014-01-10 15:12:40 -08003849 <range>Each gain factor is &amp;gt;= 1</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003850 <details>The least shaded section of the image should have a gain factor
Zhijun He69fc0ea2013-07-17 09:42:58 -07003851 of 1; all other sections should have gains above 1.
Igor Murashkin656aa5a2013-08-13 14:23:39 -07003852
3853 When android.colorCorrection.mode = TRANSFORM_MATRIX, the map
3854 must take into account the colorCorrection settings.
Igor Murashkin1dd4ecb2013-12-11 13:31:00 -08003855
3856 The shading map is for the entire active pixel array, and is not
3857 affected by the crop region specified in the request. Each shading map
3858 entry is the value of the shading compensation map over a specific
3859 pixel on the sensor. Specifically, with a (N x M) resolution shading
3860 map, and an active pixel array size (W x H), shading map entry
3861 (x,y) ϵ (0 ... N-1, 0 ... M-1) is the value of the shading map at
3862 pixel ( ((W-1)/(N-1)) * x, ((H-1)/(M-1)) * y) for the four color channels.
3863 The map is assumed to be bilinearly interpolated between the sample points.
3864
3865 The channel order is [R, Geven, Godd, B], where Geven is the green
3866 channel for the even rows of a Bayer pattern, and Godd is the odd rows.
3867 The shading map is stored in a fully interleaved format, and its size
3868 is provided in the camera static metadata by android.lens.info.shadingMapSize.
3869
3870 The shading map should have on the order of 30-40 rows and columns,
3871 and must be smaller than 64x64.
3872
3873 As an example, given a very small map defined as:
3874
3875 android.lens.info.shadingMapSize = [ 4, 3 ]
3876 android.statistics.lensShadingMap =
3877 [ 1.3, 1.2, 1.15, 1.2, 1.2, 1.2, 1.15, 1.2,
3878 1.1, 1.2, 1.2, 1.2, 1.3, 1.2, 1.3, 1.3,
3879 1.2, 1.2, 1.25, 1.1, 1.1, 1.1, 1.1, 1.0,
3880 1.0, 1.0, 1.0, 1.0, 1.2, 1.3, 1.25, 1.2,
3881 1.3, 1.2, 1.2, 1.3, 1.2, 1.15, 1.1, 1.2,
3882 1.2, 1.1, 1.0, 1.2, 1.3, 1.15, 1.2, 1.3 ]
3883
3884 The low-resolution scaling map images for each channel are
3885 (displayed using nearest-neighbor interpolation):
3886
3887 ![Red lens shading map](android.statistics.lensShadingMap/red_shading.png)
3888 ![Green (even rows) lens shading map](android.statistics.lensShadingMap/green_e_shading.png)
3889 ![Green (odd rows) lens shading map](android.statistics.lensShadingMap/green_o_shading.png)
3890 ![Blue lens shading map](android.statistics.lensShadingMap/blue_shading.png)
3891
3892 As a visualization only, inverting the full-color map to recover an
3893 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:
3894
3895 ![Image of a uniform white wall (inverse shading map)](android.statistics.lensShadingMap/inv_shading.png)
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003896 </details>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003897 </entry>
Igor Murashkin0fe2f132014-01-13 16:59:47 -08003898 <entry name="predictedColorGains" type="float"
3899 visibility="hidden"
3900 optional="true"
Zhijun He69fc0ea2013-07-17 09:42:58 -07003901 type_notes="A 1D array of floats for 4 color channel gains"
3902 container="array">
3903 <array>
3904 <size>4</size>
3905 </array>
3906 <description>The best-fit color channel gains calculated
3907 by the HAL's statistics units for the current output frame
3908 </description>
Igor Murashkin0fe2f132014-01-13 16:59:47 -08003909 <range>**Deprecated**. Do not use.</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003910 <details>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003911 This may be different than the gains used for this frame,
3912 since statistics processing on data from a new frame
3913 typically completes after the transform has already been
3914 applied to that frame.
3915
3916 The 4 channel gains are defined in Bayer domain,
Igor Murashkin656aa5a2013-08-13 14:23:39 -07003917 see android.colorCorrection.gains for details.
3918
3919 This value should always be calculated by the AWB block,
3920 regardless of the android.control.* current values.
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003921 </details>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003922 </entry>
Igor Murashkin0fe2f132014-01-13 16:59:47 -08003923 <entry name="predictedColorTransform" type="rational"
3924 visibility="hidden"
3925 optional="true"
Zhijun He69fc0ea2013-07-17 09:42:58 -07003926 type_notes="3x3 rational matrix in row-major order"
3927 container="array">
3928 <array>
3929 <size>3</size>
3930 <size>3</size>
3931 </array>
3932 <description>The best-fit color transform matrix estimate
3933 calculated by the HAL's statistics units for the current
3934 output frame</description>
Igor Murashkin0fe2f132014-01-13 16:59:47 -08003935 <range>**Deprecated**. Do not use.</range>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003936 <details>The HAL must provide the estimate from its
Zhijun He69fc0ea2013-07-17 09:42:58 -07003937 statistics unit on the white balance transforms to use
3938 for the next frame. These are the values the HAL believes
3939 are the best fit for the current output frame. This may
3940 be different than the transform used for this frame, since
3941 statistics processing on data from a new frame typically
3942 completes after the transform has already been applied to
3943 that frame.
3944
3945 These estimates must be provided for all frames, even if
3946 capture settings and color transforms are set by the application.
Igor Murashkin656aa5a2013-08-13 14:23:39 -07003947
3948 This value should always be calculated by the AWB block,
3949 regardless of the android.control.* current values.
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003950 </details>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003951 </entry>
3952 <entry name="sceneFlicker" type="byte" visibility="public" enum="true">
3953 <enum>
3954 <value>NONE</value>
3955 <value>50HZ</value>
3956 <value>60HZ</value>
3957 </enum>
Zhijun Heb8512c52014-02-03 11:46:58 -08003958 <description>The camera device estimated scene illumination lighting
3959 frequency.</description>
3960 <details>
3961 Many light sources, such as most fluorescent lights, flicker at a rate
3962 that depends on the local utility power standards. This flicker must be
3963 accounted for by auto-exposure routines to avoid artifacts in captured images.
3964 The camera device uses this entry to tell the application what the scene
3965 illuminant frequency is.
3966
3967 When manual exposure control is enabled
3968 (`android.control.aeMode == OFF` or `android.control.mode == OFF`),
3969 the android.control.aeAntibandingMode doesn't do the antibanding, and the
3970 application can ensure it selects exposure times that do not cause banding
3971 issues by looking into this metadata field. See android.control.aeAntibandingMode
3972 for more details.
3973
3974 Report NONE if there doesn't appear to be flickering illumination.
3975 </details>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003976 </entry>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003977 </dynamic>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003978 <controls>
3979 <entry name="lensShadingMapMode" type="byte" visibility="public" enum="true">
3980 <enum>
3981 <value>OFF</value>
3982 <value>ON</value>
3983 </enum>
3984 <description>Whether the HAL needs to output the lens
3985 shading map in output result metadata</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003986 <details>When set to ON,
Zhijun He69fc0ea2013-07-17 09:42:58 -07003987 android.statistics.lensShadingMap must be provided in
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08003988 the output result metadata.</details>
Zhijun He69fc0ea2013-07-17 09:42:58 -07003989 </entry>
3990 </controls>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08003991 </section>
3992 <section name="tonemap">
3993 <controls>
Zhijun He704d1282013-08-19 15:26:33 -07003994 <entry name="curveBlue" type="float" visibility="public"
3995 type_notes="1D array of float pairs (P_IN, P_OUT). The maximum number of pairs is specified by android.tonemap.maxCurvePoints."
3996 container="array">
3997 <array>
3998 <size>n</size>
3999 <size>2</size>
4000 </array>
Igor Murashkin94e06c42014-01-13 16:51:17 -08004001 <description>Tonemapping / contrast / gamma curve for the blue
4002 channel, to use when android.tonemap.mode is
4003 CONTRAST_CURVE.</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004004 <units>same as android.tonemap.curveRed</units>
4005 <range>same as android.tonemap.curveRed</range>
Igor Murashkin94e06c42014-01-13 16:51:17 -08004006 <details>See android.tonemap.curveRed for more details.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004007 </entry>
Zhijun He704d1282013-08-19 15:26:33 -07004008 <entry name="curveGreen" type="float" visibility="public"
4009 type_notes="1D array of float pairs (P_IN, P_OUT). The maximum number of pairs is specified by android.tonemap.maxCurvePoints."
4010 container="array">
4011 <array>
4012 <size>n</size>
4013 <size>2</size>
4014 </array>
Igor Murashkin94e06c42014-01-13 16:51:17 -08004015 <description>Tonemapping / contrast / gamma curve for the green
4016 channel, to use when android.tonemap.mode is
4017 CONTRAST_CURVE.</description>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004018 <units>same as android.tonemap.curveRed</units>
4019 <range>same as android.tonemap.curveRed</range>
Igor Murashkin94e06c42014-01-13 16:51:17 -08004020 <details>See android.tonemap.curveRed for more details.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004021 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07004022 <entry name="curveRed" type="float" visibility="public"
Zhijun He704d1282013-08-19 15:26:33 -07004023 type_notes="1D array of float pairs (P_IN, P_OUT). The maximum number of pairs is specified by android.tonemap.maxCurvePoints."
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004024 container="array">
4025 <array>
4026 <size>n</size>
4027 <size>2</size>
4028 </array>
Igor Murashkin94e06c42014-01-13 16:51:17 -08004029 <description>Tonemapping / contrast / gamma curve for the red
4030 channel, to use when android.tonemap.mode is
4031 CONTRAST_CURVE.</description>
4032 <range>0-1 on both input and output coordinates, normalized
4033 as a floating-point value such that 0 == black and 1 == white.
4034 </range>
4035 <details>
4036 Each channel's curve is defined by an array of control points:
Zhijun He704d1282013-08-19 15:26:33 -07004037
Igor Murashkin94e06c42014-01-13 16:51:17 -08004038 android.tonemap.curveRed =
4039 [ P0in, P0out, P1in, P1out, P2in, P2out, P3in, P3out, ..., PNin, PNout ]
4040 2 &amp;lt;= N &amp;lt;= android.tonemap.maxCurvePoints
Zhijun He704d1282013-08-19 15:26:33 -07004041
Igor Murashkin94e06c42014-01-13 16:51:17 -08004042 These are sorted in order of increasing `Pin`; it is always
4043 guaranteed that input values 0.0 and 1.0 are included in the list to
4044 define a complete mapping. For input values between control points,
4045 the camera device must linearly interpolate between the control
4046 points.
4047
4048 Each curve can have an independent number of points, and the number
4049 of points can be less than max (that is, the request doesn't have to
4050 always provide a curve with number of points equivalent to
4051 android.tonemap.maxCurvePoints).
4052
4053 A few examples, and their corresponding graphical mappings; these
4054 only specify the red channel and the precision is limited to 4
4055 digits, for conciseness.
4056
4057 Linear mapping:
4058
4059 android.tonemap.curveRed = [ 0, 0, 1.0, 1.0 ]
4060
4061 ![Linear mapping curve](android.tonemap.curveRed/linear_tonemap.png)
4062
4063 Invert mapping:
4064
4065 android.tonemap.curveRed = [ 0, 1.0, 1.0, 0 ]
4066
4067 ![Inverting mapping curve](android.tonemap.curveRed/inverse_tonemap.png)
4068
4069 Gamma 1/2.2 mapping, with 16 control points:
4070
4071 android.tonemap.curveRed = [
4072 0.0000, 0.0000, 0.0667, 0.2920, 0.1333, 0.4002, 0.2000, 0.4812,
4073 0.2667, 0.5484, 0.3333, 0.6069, 0.4000, 0.6594, 0.4667, 0.7072,
4074 0.5333, 0.7515, 0.6000, 0.7928, 0.6667, 0.8317, 0.7333, 0.8685,
4075 0.8000, 0.9035, 0.8667, 0.9370, 0.9333, 0.9691, 1.0000, 1.0000 ]
4076
4077 ![Gamma = 1/2.2 tonemapping curve](android.tonemap.curveRed/gamma_tonemap.png)
4078
4079 Standard sRGB gamma mapping, per IEC 61966-2-1:1999, with 16 control points:
4080
4081 android.tonemap.curveRed = [
4082 0.0000, 0.0000, 0.0667, 0.2864, 0.1333, 0.4007, 0.2000, 0.4845,
4083 0.2667, 0.5532, 0.3333, 0.6125, 0.4000, 0.6652, 0.4667, 0.7130,
4084 0.5333, 0.7569, 0.6000, 0.7977, 0.6667, 0.8360, 0.7333, 0.8721,
4085 0.8000, 0.9063, 0.8667, 0.9389, 0.9333, 0.9701, 1.0000, 1.0000 ]
4086
4087 ![sRGB tonemapping curve](android.tonemap.curveRed/srgb_tonemap.png)
4088 </details>
4089 <hal_details>
4090 For good quality of mapping, at least 128 control points are
4091 preferred.
4092
4093 A typical use case of this would be a gamma-1/2.2 curve, with as many
4094 control points used as are available.
4095 </hal_details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004096 <tag id="DNG" />
4097 </entry>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07004098 <entry name="mode" type="byte" visibility="public" enum="true">
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004099 <enum>
4100 <value>CONTRAST_CURVE
Igor Murashkin94e06c42014-01-13 16:51:17 -08004101 <notes>Use the tone mapping curve specified in
4102 android.tonemap.curve.
4103
4104 All color enhancement and tonemapping must be disabled, except
4105 for applying the tonemapping curve specified by
4106 android.tonemap.curveRed, android.tonemap.curveBlue, or
4107 android.tonemap.curveGreen.
4108
4109 Must not slow down frame rate relative to raw
4110 sensor output.
4111 </notes>
4112 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004113 <value>FAST
Igor Murashkin94e06c42014-01-13 16:51:17 -08004114 <notes>
4115 Advanced gamma mapping and color enhancement may be applied.
4116
4117 Should not slow down frame rate relative to raw sensor output.
4118 </notes>
4119 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004120 <value>HIGH_QUALITY
Igor Murashkin94e06c42014-01-13 16:51:17 -08004121 <notes>
4122 Advanced gamma mapping and color enhancement may be applied.
4123
4124 May slow down frame rate relative to raw sensor output.
4125 </notes>
4126 </value>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004127 </enum>
Igor Murashkin94e06c42014-01-13 16:51:17 -08004128 <description>High-level global contrast/gamma/tonemapping control.
4129 </description>
4130 <details>
4131 When switching to an application-defined contrast curve by setting
4132 android.tonemap.mode to CONTRAST_CURVE, the curve is defined
4133 per-channel with a set of `(in, out)` points that specify the
4134 mapping from input high-bit-depth pixel value to the output
4135 low-bit-depth value. Since the actual pixel ranges of both input
4136 and output may change depending on the camera pipeline, the values
4137 are specified by normalized floating-point numbers.
4138
4139 More-complex color mapping operations such as 3D color look-up
4140 tables, selective chroma enhancement, or other non-linear color
4141 transforms will be disabled when android.tonemap.mode is
4142 CONTRAST_CURVE.
4143
4144 When using either FAST or HIGH_QUALITY, the camera device will
4145 emit its own tonemap curve in android.tonemap.curveRed,
4146 android.tonemap.curveGreen, and android.tonemap.curveBlue.
4147 These values are always available, and as close as possible to the
4148 actually used nonlinear/nonglobal transforms.
4149
4150 If a request is sent with TRANSFORM_MATRIX with the camera device's
4151 provided curve in FAST or HIGH_QUALITY, the image's tonemap will be
4152 roughly the same.</details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004153 </entry>
4154 </controls>
4155 <static>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07004156 <entry name="maxCurvePoints" type="int32" visibility="public" >
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004157 <description>Maximum number of supported points in the
Igor Murashkin94e06c42014-01-13 16:51:17 -08004158 tonemap curve that can be used for android.tonemap.curveRed, or
4159 android.tonemap.curveGreen, or android.tonemap.curveBlue.
4160 </description>
4161 <range>&amp;gt;= 64</range>
4162 <details>
4163 If the actual number of points provided by the application (in
4164 android.tonemap.curve*) is less than max, the camera device will
4165 resample the curve to its internal representation, using linear
4166 interpolation.
4167
4168 The output curves in the result metadata may have a different number
4169 of points than the input curves, and will represent the actual
4170 hardware curves used as closely as possible when linearly interpolated.
4171 </details>
4172 <hal_details>
4173 This value must be at least 64. This should be at least 128.
4174 </hal_details>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004175 </entry>
4176 </static>
4177 <dynamic>
4178 <clone entry="android.tonemap.curveBlue" kind="controls">
4179 </clone>
4180 <clone entry="android.tonemap.curveGreen" kind="controls">
4181 </clone>
4182 <clone entry="android.tonemap.curveRed" kind="controls">
4183 </clone>
4184 <clone entry="android.tonemap.mode" kind="controls">
4185 </clone>
4186 </dynamic>
4187 </section>
Igor Murashkinc469f7d2013-04-23 14:31:02 -07004188 <section name="led">
4189 <controls>
Igor Murashkinb8dc8812013-07-17 16:29:34 -07004190 <entry name="transmit" type="byte" visibility="hidden" enum="true"
4191 typedef="boolean">
Igor Murashkinc469f7d2013-04-23 14:31:02 -07004192 <enum>
4193 <value>OFF</value>
4194 <value>ON</value>
4195 </enum>
4196 <description>This LED is nominally used to indicate to the user
4197 that the camera is powered on and may be streaming images back to the
4198 Application Processor. In certain rare circumstances, the OS may
4199 disable this when video is processed locally and not transmitted to
4200 any untrusted applications.
4201
4202 In particular, the LED *must* always be on when the data could be
4203 transmitted off the device. The LED *should* always be on whenever
4204 data is stored locally on the device.
4205
4206 The LED *may* be off if a trusted application is using the data that
4207 doesn't violate the above rules.
4208 </description>
4209 </entry>
4210 </controls>
4211 <dynamic>
4212 <clone entry="android.led.transmit" kind="controls"></clone>
4213 </dynamic>
4214 <static>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07004215 <entry name="availableLeds" type="byte" visibility="hidden" enum="true"
4216 container="array">
Igor Murashkinc469f7d2013-04-23 14:31:02 -07004217 <array>
4218 <size>n</size>
4219 </array>
4220 <enum>
4221 <value>TRANSMIT
4222 <notes>android.led.transmit control is used</notes>
4223 </value>
4224 </enum>
4225 <description>A list of camera LEDs that are available on this system.
4226 </description>
4227 </entry>
4228 </static>
4229 </section>
Igor Murashkin38b8cae2013-05-23 16:38:59 -07004230 <section name="info">
4231 <static>
Eino-Ville Talvalaf384f0a2013-07-12 17:02:27 -07004232 <entry name="supportedHardwareLevel" type="byte" visibility="public"
4233 enum="true" >
Igor Murashkin38b8cae2013-05-23 16:38:59 -07004234 <enum>
4235 <value>LIMITED</value>
4236 <value>FULL</value>
4237 </enum>
4238 <description>
Eino-Ville Talvalafcef4c22013-07-16 16:18:44 -07004239 The camera 3 HAL device can implement one of two possible
4240 operational modes; limited and full. Full support is
4241 expected from new higher-end devices. Limited mode has
4242 hardware requirements roughly in line with those for a
4243 camera HAL device v1 implementation, and is expected from
4244 older or inexpensive devices. Full is a strict superset of
4245 limited, and they share the same essential operational flow.
Igor Murashkin38b8cae2013-05-23 16:38:59 -07004246
4247 For full details refer to "S3. Operational Modes" in camera3.h
4248 </description>
4249 <range>Optional. Default value is LIMITED.</range>
4250 </entry>
4251 </static>
4252 </section>
Zhijun He69fc0ea2013-07-17 09:42:58 -07004253 <section name="blackLevel">
4254 <controls>
Igor Murashkinb8dc8812013-07-17 16:29:34 -07004255 <entry name="lock" type="byte" visibility="public" enum="true"
4256 typedef="boolean">
Zhijun He69fc0ea2013-07-17 09:42:58 -07004257 <enum>
4258 <value>OFF</value>
4259 <value>ON</value>
4260 </enum>
4261 <description> Whether black-level compensation is locked
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -08004262 to its current values, or is free to vary.</description>
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004263 <details>When set to ON, the values used for black-level
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -08004264 compensation will not change until the lock is set to
4265 OFF.
Zhijun He69fc0ea2013-07-17 09:42:58 -07004266
4267 Since changes to certain capture parameters (such as
4268 exposure time) may require resetting of black level
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -08004269 compensation, the camera device must report whether setting
4270 the black level lock was successful in the output result
Igor Murashkin656aa5a2013-08-13 14:23:39 -07004271 metadata.
4272
Igor Murashkin8aa2a112013-12-09 12:06:17 -08004273 For example, if a sequence of requests is as follows:
4274
4275 * Request 1: Exposure = 10ms, Black level lock = OFF
4276 * Request 2: Exposure = 10ms, Black level lock = ON
4277 * Request 3: Exposure = 10ms, Black level lock = ON
4278 * Request 4: Exposure = 20ms, Black level lock = ON
4279 * Request 5: Exposure = 20ms, Black level lock = ON
4280 * Request 6: Exposure = 20ms, Black level lock = ON
4281
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -08004282 And the exposure change in Request 4 requires the camera
4283 device to reset the black level offsets, then the output
4284 result metadata is expected to be:
Igor Murashkin8aa2a112013-12-09 12:06:17 -08004285
4286 * Result 1: Exposure = 10ms, Black level lock = OFF
4287 * Result 2: Exposure = 10ms, Black level lock = ON
4288 * Result 3: Exposure = 10ms, Black level lock = ON
4289 * Result 4: Exposure = 20ms, Black level lock = OFF
4290 * Result 5: Exposure = 20ms, Black level lock = ON
4291 * Result 6: Exposure = 20ms, Black level lock = ON
4292
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -08004293 This indicates to the application that on frame 4, black
4294 levels were reset due to exposure value changes, and pixel
4295 values may not be consistent across captures.
Igor Murashkin8aa2a112013-12-09 12:06:17 -08004296
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -08004297 The camera device will maintain the lock to the extent
4298 possible, only overriding the lock to OFF when changes to
4299 other request parameters require a black level recalculation
4300 or reset.
4301 </details>
4302 <hal_details>
4303 If for some reason black level locking is no longer possible
4304 (for example, the analog gain has changed, which forces
4305 black level offsets to be recalculated), then the HAL must
4306 override this request (and it must report 'OFF' when this
4307 does happen) until the next capture for which locking is
4308 possible again.</hal_details>
Zhijun He69fc0ea2013-07-17 09:42:58 -07004309 <tag id="HAL2" />
4310 </entry>
4311 </controls>
4312 <dynamic>
4313 <clone entry="android.blackLevel.lock"
Igor Murashkin8aa2a112013-12-09 12:06:17 -08004314 kind="controls">
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004315 <details>
Eino-Ville Talvala7796cfe2013-12-26 13:16:54 -08004316 Whether the black level offset was locked for this frame. Should be
4317 ON if android.blackLevel.lock was ON in the capture request, unless
4318 a change in other capture settings forced the camera device to
4319 perform a black level reset.
Eino-Ville Talvalaa5b73c22013-12-27 13:50:19 -08004320 </details>
Igor Murashkin8aa2a112013-12-09 12:06:17 -08004321 </clone>
Zhijun He69fc0ea2013-07-17 09:42:58 -07004322 </dynamic>
4323 </section>
Igor Murashkin5c1fc682014-01-16 17:51:36 -08004324 <section name="sync">
4325 <dynamic>
4326 <entry name="frameNumber" type="int64" visibility="hidden" enum="true">
4327 <enum>
4328 <value id="-1">CONVERGING
4329 <notes>
4330 The current result is not yet fully synchronized to any request.
4331 Synchronization is in progress, and reading metadata from this
4332 result may include a mix of data that have taken effect since the
4333 last synchronization time.
4334
4335 In some future result, within android.sync.maxLatency frames,
4336 this value will update to the actual frame number frame number
4337 the result is guaranteed to be synchronized to (as long as the
4338 request settings remain constant).
4339 </notes>
4340 </value>
4341 <value id="-2">UNKNOWN
4342 <notes>
4343 The current result's synchronization status is unknown. The
4344 result may have already converged, or it may be in progress.
4345 Reading from this result may include some mix of settings from
4346 past requests.
4347
4348 After a settings change, the new settings will eventually all
4349 take effect for the output buffers and results. However, this
4350 value will not change when that happens. Altering settings
4351 rapidly may provide outcomes using mixes of settings from recent
4352 requests.
4353
4354 This value is intended primarily for backwards compatibility with
4355 the older camera implementations (for android.hardware.Camera).
4356 </notes>
4357 </value>
4358 </enum>
4359 <description>The frame number corresponding to the last request
4360 with which the output result (metadata + buffers) has been fully
4361 synchronized.</description>
4362 <range>Either a non-negative value corresponding to a
4363 `frame_number`, or one of the two enums (CONVERGING / UNKNOWN).
4364 </range>
4365 <details>
4366 When a request is submitted to the camera device, there is usually a
4367 delay of several frames before the controls get applied. A camera
4368 device may either choose to account for this delay by implementing a
4369 pipeline and carefully submit well-timed atomic control updates, or
4370 it may start streaming control changes that span over several frame
4371 boundaries.
4372
4373 In the latter case, whenever a request's settings change relative to
4374 the previous submitted request, the full set of changes may take
4375 multiple frame durations to fully take effect. Some settings may
4376 take effect sooner (in less frame durations) than others.
4377
4378 While a set of control changes are being propagated, this value
4379 will be CONVERGING.
4380
4381 Once it is fully known that a set of control changes have been
4382 finished propagating, and the resulting updated control settings
4383 have been read back by the camera device, this value will be set
4384 to a non-negative frame number (corresponding to the request to
4385 which the results have synchronized to).
4386
4387 Older camera device implementations may not have a way to detect
4388 when all camera controls have been applied, and will always set this
4389 value to UNKNOWN.
4390
4391 FULL capability devices will always have this value set to the
4392 frame number of the request corresponding to this result.
4393
4394 _Further details_:
4395
4396 * Whenever a request differs from the last request, any future
4397 results not yet returned may have this value set to CONVERGING (this
4398 could include any in-progress captures not yet returned by the camera
4399 device, for more details see pipeline considerations below).
4400 * Submitting a series of multiple requests that differ from the
4401 previous request (e.g. r1, r2, r3 s.t. r1 != r2 != r3)
4402 moves the new synchronization frame to the last non-repeating
4403 request (using the smallest frame number from the contiguous list of
4404 repeating requests).
4405 * Submitting the same request repeatedly will not change this value
4406 to CONVERGING, if it was already a non-negative value.
4407 * When this value changes to non-negative, that means that all of the
4408 metadata controls from the request have been applied, all of the
4409 metadata controls from the camera device have been read to the
4410 updated values (into the result), and all of the graphics buffers
4411 corresponding to this result are also synchronized to the request.
4412
4413 _Pipeline considerations_:
4414
4415 Submitting a request with updated controls relative to the previously
4416 submitted requests may also invalidate the synchronization state
4417 of all the results corresponding to currently in-flight requests.
4418
4419 In other words, results for this current request and up to
4420 android.request.pipelineMaxDepth prior requests may have their
4421 android.sync.frameNumber change to CONVERGING.
4422 </details>
4423 <hal_details>
4424 Using UNKNOWN here is illegal unless android.sync.maxLatency
4425 is also UNKNOWN.
4426
4427 FULL capability devices should simply set this value to the
4428 `frame_number` of the request this result corresponds to.
4429 </hal_details>
4430 <tag id="LIMITED" />
4431 </entry>
4432 </dynamic>
4433 <static>
4434 <entry name="maxLatency" type="int32" visibility="public" enum="true">
4435 <enum>
4436 <value id="0">PER_FRAME_CONTROL
4437 <notes>
4438 Every frame has the requests immediately applied.
4439 (and furthermore for all results,
4440 `android.sync.frameNumber == android.request.frameCount`)
4441
4442 Changing controls over multiple requests one after another will
4443 produce results that have those controls applied atomically
4444 each frame.
4445
4446 All FULL capability devices will have this as their maxLatency.
4447 </notes>
4448 </value>
4449 <value id="-1">UNKNOWN
4450 <notes>
4451 Each new frame has some subset (potentially the entire set)
4452 of the past requests applied to the camera settings.
4453
4454 By submitting a series of identical requests, the camera device
4455 will eventually have the camera settings applied, but it is
4456 unknown when that exact point will be.
4457 </notes>
4458 </value>
4459 </enum>
4460 <description>
4461 The maximum number of frames that can occur after a request
4462 (different than the previous) has been submitted, and before the
4463 result's state becomes synchronized (by setting
4464 android.sync.frameNumber to a non-negative value).
4465 </description>
4466 <units>number of processed requests</units>
4467 <range>&amp;gt;= -1</range>
4468 <details>
4469 This defines the maximum distance (in number of metadata results),
4470 between android.sync.frameNumber and the equivalent
4471 android.request.frameCount.
4472
4473 In other words this acts as an upper boundary for how many frames
4474 must occur before the camera device knows for a fact that the new
4475 submitted camera settings have been applied in outgoing frames.
4476
4477 For example if the distance was 2,
4478
4479 initial request = X (repeating)
4480 request1 = X
4481 request2 = Y
4482 request3 = Y
4483 request4 = Y
4484
4485 where requestN has frameNumber N, and the first of the repeating
4486 initial request's has frameNumber F (and F &lt; 1).
4487
4488 initial result = X' + { android.sync.frameNumber == F }
4489 result1 = X' + { android.sync.frameNumber == F }
4490 result2 = X' + { android.sync.frameNumber == CONVERGING }
4491 result3 = X' + { android.sync.frameNumber == CONVERGING }
4492 result4 = X' + { android.sync.frameNumber == 2 }
4493
4494 where resultN has frameNumber N.
4495
4496 Since `result4` has a `frameNumber == 4` and
4497 `android.sync.frameNumber == 2`, the distance is clearly
4498 `4 - 2 = 2`.
4499 </details>
4500 <hal_details>
4501 Use `frame_count` from camera3_request_t instead of
4502 android.request.frameCount.
4503
4504 LIMITED devices are strongly encouraged to use a non-negative
4505 value. If UNKNOWN is used here then app developers do not have a way
4506 to know when sensor settings have been applied.
4507 </hal_details>
4508 <tag id="LIMITED" />
4509 </entry>
4510 </static>
4511 </section>
Igor Murashkin77b63ca2012-11-09 16:15:02 -08004512 </namespace>
4513</metadata>