blob: 0c80cec5a1548db1436b56b0a322b2caac32ab60 [file] [log] [blame]
Igor Murashkincd6ebaa2012-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">
22 <!-- TODO: fill the tag description -->
23 </tag>
24 <tag id="BC">
25 <!-- TODO: fill the tag description -->
26 </tag>
27 <tag id="V1">
28 <!-- TODO: fill the tag description -->
29 </tag>
30 <tag id="ADV">
31 <!-- TODO: fill the tag description -->
32 </tag>
33 <tag id="DNG">
34 <!-- TODO: fill the tag description -->
35 </tag>
36 <tag id="EXIF">
37 <!-- TODO: fill the tag description -->
38 </tag>
39 </tags>
40 <namespace name="android">
41 <section name="colorCorrection">
42 <controls>
43 <entry name="mode" type="enum">
44 <enum>
45 <value>TRANSFORM_MATRIX
46 <notes>Use the android.colorCorrection.transform matrix
47 to do color conversion</notes></value>
48 <value>FAST
49 <notes>Must not slow down frame rate relative to raw
50 bayer output</notes></value>
51 <value>HIGH_QUALITY
52 <notes>Frame rate may be reduced by high
53 quality</notes></value>
54 </enum>
55 <description>enum</description>
56 <units>enum:</units>
57 </entry>
58 <entry name="transform" type="float"
59 type_notes="3x3 float matrix in row-major order"
60 container="array">
61 <array>
62 <size>9</size>
63 </array>
64 <description>A transform matrix to chromatically adapt
65 pixels in the CIE XYZ (1931) color space from the scene
66 illuminant to the sRGB-standard
67 D65-illuminant</description>
68 <range>Output values are expected to be in the range
69 (0,1)</range>
70 <notes>Values outside (0,1) should be clamped. Need to
71 provide utilities to go from CCT (+hue?), or (x,y) white
72 point, (or AWB mode) to matrix; use linear Bradford
73 algorithm.</notes>
74 </entry>
75 </controls>
76 <dynamic>
77 <clone entry="android.colorCorrection.mode"
78 kind="controls"></clone>
79 </dynamic>
80 </section>
81 <section name="control">
82 <controls>
83 <entry name="aeAntibandingMode" type="enum">
84 <enum>
85 <value>ANTIBANDING_OFF</value>
86 <value>ANTIBANDING_50HZ</value>
87 <value>ANTIBANDING_60HZ</value>
88 <value>ANTIBANDING_AUTO</value>
89 </enum>
90 <description>Enum for controlling
91 antibanding</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -080092 <range>
93 android.control.aeAvailableAntibandingModes</range>
94 </entry>
95 <entry name="aeExposureCompensation" type="int32">
96 <description>Adjustment to AE target image
97 brightness</description>
98 <units>count of positive/negative EV steps</units>
99 <notes>For example, if EV step is 0.333, '6' will mean an
100 exposure compensation of +2 EV; -3 will mean an exposure
101 compensation of -1</notes>
102 <tag id="BC" />
103 </entry>
104 <entry name="aeLock" type="enum">
105 <enum>
106 <value>ON
107 <notes>Autoexposure lock is enabled; the AE algorithm
108 must not update the exposure and sensitivity parameters
109 while the lock is active</notes></value>
110 <value>OFF
111 <notes>Autoexposure lock is disabled; the AE algorithm
112 is free to update its parameters.</notes></value>
113 </enum>
114 <description>Whether AE is currently locked to its latest
115 calculated values</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800116 <notes>Note that even when AE is locked, the flash may be
117 fired if the AE mode is ON_AUTO_FLASH / ON_ALWAYS_FLASH /
118 ON_AUTO_FLASH_REDEYE.</notes>
119 <tag id="BC" />
120 </entry>
121 <entry name="aeMode" type="enum">
122 <enum>
123 <value>OFF
124 <notes>Autoexposure is disabled; sensor.exposureTime
125 and sensor.sensitivity are used</notes></value>
126 <value>ON
127 <notes>Autoexposure is active, no flash
128 control</notes></value>
129 <value>ON_AUTO_FLASH
130 <notes>if flash exists Autoexposure is active, auto
131 flash control; flash may be fired when precapture
132 trigger is activated, and for captures for which
133 captureIntent = STILL_CAPTURE</notes></value>
134 <value>ON_ALWAYS_FLASH
135 <notes>if flash exists Autoexposure is active, auto
136 flash control for precapture trigger and always flash
137 when captureIntent = STILL_CAPTURE</notes></value>
138 <value>ON_AUTO_FLASH_REDEYE
139 <notes>optional Automatic red eye reduction with flash.
140 If deemed necessary, red eye reduction sequence should
141 fire when precapture trigger is activated, and final
142 flash should fire when captureIntent =
143 STILL_CAPTURE</notes></value>
144 </enum>
145 <description>Whether AE is currently updating the sensor
146 exposure and sensitivity fields</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800147 <range>android.control.aeAvailableModes</range>
148 <notes>Only effective if android.control.mode =
149 AUTO</notes>
150 <tag id="BC" />
151 </entry>
152 <entry name="aeRegions" type="int32" container="array">
153 <array>
Igor Murashkin344fd202012-11-29 13:35:15 -0800154 <size>5</size>
155 <size>area_count</size>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800156 </array>
157 <description>List of areas to use for
158 metering</description>
159 <notes>Each area is a rectangle plus weight: xmin, ymin,
160 xmax, ymax, weight. The coordinate system is based on the
161 active pixel array, with (0,0) being the top-left of the
162 active pixel array, and
163 (android.sensor.info.activeArraySize.width,
164 android.sensor.info.activeArraySize.height) being the
165 bottom-right point of the active pixel array. The weight
166 should be nonnegative. If all regions have 0 weight, then
167 no specific metering area needs to be used by the HAL. If
168 the metering region is outside the current
169 android.scaler.cropRegion, the HAL should ignore the
170 sections outside the region and output the used sections
171 in the frame metadata</notes>
172 <tag id="BC" />
173 </entry>
174 <entry name="aeTargetFpsRange" type="int32"
175 container="array">
176 <array>
177 <size>2</size>
178 </array>
179 <description>Range over which fps can be adjusted to
180 maintain exposure</description>
181 <range>android.control.aeAvailableTargetFpsRanges</range>
182 <notes>Only constrains AE algorithm, not manual control
183 of android.sensor.exposureTime</notes>
184 <tag id="BC" />
185 </entry>
186 <entry name="afMode" type="enum">
187 <enum>
188 <value>OFF
189 <notes>The 3A routines do not control the lens;
190 android.lens.focusPosition is controlled by the
191 application</notes></value>
192 <value>AUTO
193 <notes>if lens is not fixed focus. Use
194 android.lens.minimumFocusDistance to determine if lens
195 is fixed focus In this mode, the lens does not move
196 unless the autofocus trigger action is called. When
197 that trigger is activated, AF must transition to
198 ACTIVE_SCAN, then to the outcome of the scan (FOCUSED
199 or NOT_FOCUSED). Triggering cancel AF resets the lens
200 position to default, and sets the AF state to
201 INACTIVE.</notes></value>
202 <value>MACRO
203 <notes>In this mode, the lens does not move unless the
204 autofocus trigger action is called. When that trigger
205 is activated, AF must transition to ACTIVE_SCAN, then
206 to the outcome of the scan (FOCUSED or NOT_FOCUSED).
207 Triggering cancel AF resets the lens position to
208 default, and sets the AF state to
209 INACTIVE.</notes></value>
210 <value>CONTINUOUS_VIDEO
211 <notes>In this mode, the AF algorithm modifies the lens
212 position continually to attempt to provide a
213 constantly-in-focus image stream. The focusing behavior
214 should be suitable for good quality video recording;
215 typically this means slower focus movement and no
216 overshoots. When the AF trigger is not involved, the AF
217 algorithm should start in INACTIVE state, and then
218 transition into PASSIVE_SCAN and PASSIVE_FOCUSED states
219 as appropriate. When the AF trigger is activated, the
220 algorithm should immediately transition into AF_FOCUSED
221 or AF_NOT_FOCUSED as appropriate, and lock the lens
222 position until a cancel AF trigger is received. Once
223 cancel is received, the algorithm should transition
224 back to INACTIVE and resume passive scan. Note that
225 this behavior is not identical to CONTINUOUS_PICTURE,
226 since an ongoing PASSIVE_SCAN must immediately be
227 canceled.</notes></value>
228 <value>CONTINUOUS_PICTURE
229 <notes>In this mode, the AF algorithm modifies the lens
230 position continually to attempt to provide a
231 constantly-in-focus image stream. The focusing behavior
232 should be suitable for still image capture; typically
233 this means focusing as fast as possible. When the AF
234 trigger is not involved, the AF algorithm should start
235 in INACTIVE state, and then transition into
236 PASSIVE_SCAN and PASSIVE_FOCUSED states as appropriate
237 as it attempts to maintain focus. When the AF trigger
238 is activated, the algorithm should finish its
239 PASSIVE_SCAN if active, and then transition into
240 AF_FOCUSED or AF_NOT_FOCUSED as appropriate, and lock
241 the lens position until a cancel AF trigger is
242 received. When the AF cancel trigger is activated, the
243 algorithm should transition back to INACTIVE and then
244 act as if it has just been started.</notes></value>
245 <value>EDOF
246 <notes>Extended depth of field (digital focus). AF
247 trigger is ignored, AF state should always be
248 INACTIVE.</notes></value>
249 </enum>
250 <description>Whether AF is currently enabled, and what
251 mode it is set to</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800252 <tag id="BC" />
253 </entry>
254 <entry name="afRegions" type="int32" container="array">
255 <array>
Igor Murashkin344fd202012-11-29 13:35:15 -0800256 <size>5</size>
257 <size>area_count</size>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800258 </array>
259 <description>List of areas to use for focus
260 estimation</description>
261 <notes>Each area is a rectangle plus weight: xmin, ymin,
262 xmax, ymax, weight. The coordinate system is based on the
263 active pixel array, with (0,0) being the top-left of the
264 active pixel array, and
265 (android.sensor.info.activeArraySize.width,
266 android.sensor.info.activeArraySize.height) being the
267 bottom-right point of the active pixel array. The weight
268 should be nonnegative. If all regions have 0 weight, then
269 no specific focus area needs to be used by the HAL. If
270 the focusing region is outside the current
271 android.scaler.cropRegion, the HAL should ignore the
272 sections outside the region and output the used sections
273 in the frame metadata</notes>
274 <tag id="BC" />
275 </entry>
276 <entry name="awbLock" type="enum">
277 <enum>
278 <value>ON
279 <notes>Auto-whitebalance lock is enabled; the AWB
280 algorithm must not update the exposure and sensitivity
281 parameters while the lock is active</notes></value>
282 <value>OFF
283 <notes>Auto-whitebalance lock is disabled; the AWB
284 algorithm is free to update its parameters if in AUTO
285 mode.</notes></value>
286 </enum>
287 <description>Whether AWB is currently locked to its
288 latest calculated values</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800289 <notes>Note that AWB lock is only meaningful for AUTO
290 mode; in other modes, AWB is already fixed to a specific
291 setting</notes>
292 <tag id="BC" />
293 </entry>
294 <entry name="awbMode" type="enum">
295 <enum>
296 <value>OFF</value>
297 <value>AUTO</value>
298 <value>INCANDESCENT</value>
299 <value>FLUORESCENT</value>
300 <value>WARM_FLUORESCENT</value>
301 <value>DAYLIGHT</value>
302 <value>CLOUDY_DAYLIGHT</value>
303 <value>TWILIGHT</value>
304 <value>SHADE</value>
305 </enum>
306 <description>Whether AWB is currently setting the color
307 transform fields, and what its illumination target
308 is</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800309 <notes>[BC - AWB lock,AWB modes]</notes>
310 <tag id="BC" />
311 <tag id="AWB" />
312 </entry>
313 <entry name="awbRegions" type="int32" container="array">
314 <array>
Igor Murashkin344fd202012-11-29 13:35:15 -0800315 <size>5</size>
316 <size>area_count</size>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800317 </array>
318 <description>List of areas to use for illuminant
319 estimation</description>
320 <notes>Only used in AUTO mode. Each area is a rectangle
321 plus weight: xmin, ymin, xmax, ymax, weight. The
322 coordinate system is based on the active pixel array,
323 with (0,0) being the top-left of the active pixel array,
324 and (android.sensor.info.activeArraySize.width,
325 android.sensor.info.activeArraySize.height) being the
326 bottom-right point of the active pixel array. The weight
327 should be nonnegative. If all regions have 0 weight, then
328 no specific metering area needs to be used by the HAL. If
329 the metering region is outside the current
330 android.scaler.cropRegion, the HAL should ignore the
331 sections outside the region and output the used sections
332 in the frame metadata</notes>
333 <tag id="BC" />
334 </entry>
335 <entry name="captureIntent" type="enum">
336 <enum>
337 <value>INTENT_CUSTOM
338 <notes>This request doesn't fall into the other
339 categories. Default to preview-like
340 behavior.</notes></value>
341 <value>INTENT_PREVIEW
342 <notes>This request is for a preview-like usecase. The
343 precapture trigger may be used to start off a metering
344 w/flash sequence</notes></value>
345 <value>INTENT_STILL_CAPTURE
346 <notes>This request is for a still capture-type
347 usecase.</notes></value>
348 <value>INTENT_VIDEO_RECORD
349 <notes>This request is for a video recording
350 usecase.</notes></value>
351 <value>INTENT_VIDEO_SNAPSHOT
352 <notes>This request is for a video snapshot (still
353 image while recording video) usecase</notes></value>
354 <value>INTENT_ZERO_SHUTTER_LAG
355 <notes>This request is for a ZSL usecase; the
356 application will stream full-resolution images and
357 reprocess one or several later for a final
358 capture</notes></value>
359 </enum>
360 <description>Information to 3A routines about the purpose
361 of this capture, to help decide optimal 3A
362 strategy</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800363 <range>all must be supported</range>
364 <notes>Only used if android.control.mode != OFF.</notes>
365 <tag id="BC" />
366 </entry>
367 <entry name="effectMode" type="enum">
368 <enum>
369 <value>EFFECT_OFF</value>
370 <value optional="true">EFFECT_MONO</value>
371 <value optional="true">EFFECT_NEGATIVE</value>
372 <value optional="true">EFFECT_SOLARIZE</value>
373 <value optional="true">EFFECT_SEPIA</value>
374 <value optional="true">EFFECT_POSTERIZE</value>
375 <value optional="true">EFFECT_WHITEBOARD</value>
376 <value optional="true">EFFECT_BLACKBOARD</value>
377 <value optional="true">EFFECT_AQUA</value>
378 </enum>
379 <description>Whether any special color effect is in use.
380 Only used if android.control.mode != OFF</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800381 <range>android.control.availableEffects</range>
382 <tag id="BC" />
383 </entry>
384 <entry name="mode" type="enum">
385 <enum>
386 <value>OFF
387 <notes>Full application control of pipeline. All 3A
388 routines are disabled, no other settings in
389 android.control.* have any effect</notes></value>
390 <value>AUTO
391 <notes>Use settings for each individual 3A routine.
392 Manual control of capture parameters is disabled. All
393 controls in android.control.* besides sceneMode take
394 effect</notes></value>
395 <value>USE_SCENE_MODE
396 <notes>Use specific scene mode. Enabling this disables
397 control.aeMode, control.awbMode and control.afMode
398 controls; the HAL must ignore those settings while
399 USE_SCENE_MODE is active (except for FACE_PRIORITY
400 scene mode). Other control entries are still active.
401 This setting can only be used if availableSceneModes !=
402 UNSUPPORTED</notes></value>
403 </enum>
404 <description>Overall mode of 3A control
405 routines</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800406 <range>all must be supported</range>
407 <tag id="BC" />
408 </entry>
409 <entry name="sceneMode" type="enum">
410 <enum>
411 <value>SCENE_MODE_FACE_PRIORITY
412 <notes>if face detection support exists Use face
413 detection data to drive 3A routines. If face detection
414 statistics are disabled, should still operate correctly
415 (but not return face detection statistics to the
416 framework). Unlike the other scene modes, aeMode,
417 awbMode, and afMode remain active when FACE_PRIORITY is
418 set. This is due to compatibility concerns with the old
419 camera API</notes></value>
420 <value optional="true">SCENE_MODE_ACTION</value>
421 <value optional="true">SCENE_MODE_PORTRAIT</value>
422 <value optional="true">SCENE_MODE_LANDSCAPE</value>
423 <value optional="true">SCENE_MODE_NIGHT</value>
424 <value optional="true">
425 SCENE_MODE_NIGHT_PORTRAIT</value>
426 <value optional="true">SCENE_MODE_THEATRE</value>
427 <value optional="true">SCENE_MODE_BEACH</value>
428 <value optional="true">SCENE_MODE_SNOW</value>
429 <value optional="true">SCENE_MODE_SUNSET</value>
430 <value optional="true">SCENE_MODE_STEADYPHOTO</value>
431 <value optional="true">SCENE_MODE_FIREWORKS</value>
432 <value optional="true">SCENE_MODE_SPORTS</value>
433 <value optional="true">SCENE_MODE_PARTY</value>
434 <value optional="true">SCENE_MODE_CANDLELIGHT</value>
435 <value optional="true">SCENE_MODE_BARCODE</value>
436 </enum>
437 <description>Which scene mode is active when
438 android.control.mode = SCENE_MODE</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800439 <range>android.control.availableSceneModes</range>
440 <tag id="BC" />
441 </entry>
442 <entry name="videoStabilizationMode" type="enum">
443 <enum>
444 <value>OFF</value>
445 <value>ON</value>
446 </enum>
447 <description>Whether video stabilization is
448 active</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800449 <notes>If enabled, video stabilization can modify the
450 android.scaler.cropRegion to keep the video stream
451 stabilized</notes>
452 <tag id="BC" />
453 </entry>
454 </controls>
455 <static>
456 <entry name="aeAvailableAntibandingModes" type="byte"
457 type_notes="list of enums" container="array">
458 <array>
459 <size>n</size>
460 </array>
461 <description>Which set of antibanding modes are
462 supported</description>
463 </entry>
464 <entry name="aeAvailableModes" type="byte"
465 type_notes="list of enums" container="array">
466 <array>
467 <size>n</size>
468 </array>
469 <description>Which subset of AE modes is
470 supported</description>
471 <range>OFF, ON must be supported.
472 ON_AUTO_FLASH/ON_ALWAYS_FLASH must be supported if flash
473 unit is available</range>
474 </entry>
475 <entry name="aeAvailableTargetFpsRanges" type="int32"
476 type_notes="list of pairs of frame rates"
477 container="array">
478 <array>
479 <size>2</size>
480 <size>n</size>
481 </array>
482 <description>List of frame rate ranges supported by the
483 AE algorithm/hardware</description>
484 </entry>
485 <entry name="aeCompensationRange" type="int32"
486 container="array">
487 <array>
488 <size>2</size>
489 </array>
490 <description>Maximum and minimum exposure compensation
491 setting, in counts of
492 android.control.aeCompensationStepSize</description>
493 <range>At least (-2,2)/(exp compensation step
494 size)</range>
495 <tag id="BC" />
496 </entry>
497 <entry name="aeCompensationStep" type="rational">
498 <description>Smallest step by which exposure compensation
499 can be changed</description>
500 <range>&lt;= 1/2</range>
501 <tag id="BC" />
502 </entry>
503 <entry name="afAvailableModes" type="byte"
504 type_notes="List of enums" container="array">
505 <array>
506 <size>n</size>
507 </array>
508 <description>List of AF modes that can be
509 selected</description>
510 <range>OFF must be included. AUTO must be supported if
511 lens allows for changing focus</range>
512 <tag id="BC" />
513 </entry>
514 <entry name="availableEffects" type="byte"
515 type_notes="list of enums" container="array">
516 <array>
517 <size>n</size>
518 </array>
519 <description>what subset of the full color effect enum
520 list is supported</description>
521 <range>OFF must be listed</range>
522 <tag id="BC" />
523 </entry>
524 <entry name="availableSceneModes" type="byte"
525 type_notes="list of enums from android.control.sceneMode, plus UNSUPPORTED to indicate no scene modes are supported"
526 container="array">
527 <array>
528 <size>n</size>
529 </array>
530 <description>what subset of the scene mode enum list is
531 supported.</description>
532 <range>SCENE_MODE_FACE_PRIORITY must be supported if face
533 detection is supported</range>
534 <tag id="BC" />
535 </entry>
536 <entry name="availableVideoStabilizationModes" type="byte"
537 type_notes="List of enums." container="array">
538 <array>
539 <size>n</size>
540 </array>
541 <description>List of video stabilization modes that can
542 be supported</description>
543 <range>OFF must be included</range>
544 <tag id="BC" />
545 </entry>
546 <entry name="awbAvailableModes" type="byte">
Igor Murashkin344fd202012-11-29 13:35:15 -0800547 <units>List of enums (android.control.awbMode)</units>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800548 <range>OFF, AUTO must be included</range>
549 <tag id="BC" />
550 </entry>
551 <entry name="maxRegions" type="int32">
552 <description>For AE, AWB, and AF, how many individual
553 regions can be listed for metering?</description>
554 <range>&gt;= 1</range>
555 <tag id="BC" />
556 </entry>
557 <entry name="sceneModeOverrides" type="byte"
558 container="array">
559 <array>
560 <size>3</size>
561 <size>lengthavailablescenemodes</size>
562 </array>
563 <description>List of AE, AWB, and AF modes to use for
564 each available scene mode</description>
565 <range>For each listed scene mode, lists the aeMode,
566 awbMode, and afMode that the HAL wants to use for that
567 scene mode. For each entry, the order is {aeMode,
568 awbMode, afMode} in order of increasing index</range>
569 <notes>When a scene mode is enabled, the HAL is expected
570 to override aeMode, awbMode, and afMode with its
571 preferred settings for that scene mode. To simplify
572 communication with old camera API applications, the
573 service wants this override list in the static metadata.
574 The order of this list matches that of
575 availableSceneModes, with 3 entires for each scene mode.
576 The overrides listed for SCENE_MODE_FACE_PRIORITY are
577 ignored, since for that mode, the application-set aeMode,
578 awbMode, and afMode are used instead, like they are when
579 android.control.mode is AUTO. It is recommended that for
580 FACE_PRIORITY, the overrides should be set to 0. As an
581 example, if availableSceneModes is { FACE_PRIORITY,
582 ACTION, NIGHT }, then the service expects this field to
583 have 9 entries; for example { 0 , 0, 0, ON_AUTO_FLASH,
584 AUTO, CONTINUOUS_PICTURE, ON_AUTO_FLASH, INCANDESCENT,
585 AUTO }</notes>
586 <tag id="BC" />
587 </entry>
588 </static>
589 <dynamic>
590 <entry name="aePrecaptureId" type="int32">
591 <description>The ID sent with the latest
592 CAMERA2_TRIGGER_PRECAPTURE_METERING call</description>
593 <notes>Must be 0 if no
594 CAMERA2_TRIGGER_PRECAPTURE_METERING trigger received yet
595 by HAL. Always updated even if AE algorithm ignores the
596 trigger</notes>
597 </entry>
598 <clone entry="android.control.aeRegions" kind="controls">
599 </clone>
600 <entry name="aeState" type="enum">
601 <enum>
602 <value>INACTIVE
603 <notes>AE is off</notes></value>
604 <value>SEARCHING
605 <notes>AE doesn't yet have a good set of control values
606 for the current scene</notes></value>
607 <value>CONVERGED
608 <notes>AE has a good set of control values for the
609 current scene</notes></value>
610 <value>LOCKED
611 <notes>AE has been locked (aeMode =
612 LOCKED)</notes></value>
613 <value>FLASH_REQUIRED
614 <notes>AE has a good set of control values, but flash
615 needs to be fired for good quality still
616 capture</notes></value>
617 <value>PRECAPTURE
618 <notes>AE has been asked to do a precapture sequence
619 (through the
620 trigger_action(CAMERA2_TRIGGER_PRECAPTURE_METERING)
621 call), and is currently executing it. Once PRECAPTURE
622 completes, AE will transition to CONVERGED or
623 FLASH_REQUIRED as appropriate</notes></value>
624 </enum>
625 <description>Current state of AE algorithm</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800626 <notes>Whenever the AE algorithm state changes, a
627 MSG_AUTOEXPOSURE notification must be send if a
628 notification callback is registered.</notes>
629 </entry>
630 <clone entry="android.control.afMode" kind="controls">
631 </clone>
632 <clone entry="android.control.afRegions" kind="controls">
633 </clone>
634 <entry name="afState" type="enum">
635 <enum>
636 <value>INACTIVE
637 <notes>AF off or has not yet tried to scan/been asked
638 to scan</notes></value>
639 <value>PASSIVE_SCAN
640 <notes>if CONTINUOUS_* modes are supported AF is
641 currently doing an AF scan initiated by a continuous
642 autofocus mode</notes></value>
643 <value>PASSIVE_FOCUSED
644 <notes>if CONTINUOUS_* modes are supported AF currently
645 believes it is in focus, but may restart scanning at
646 any time.</notes></value>
647 <value>ACTIVE_SCAN
648 <notes>if AUTO or MACRO modes are supported AF is doing
649 an AF scan because it was triggered by AF
650 trigger</notes></value>
651 <value>AF_FOCUSED_LOCKED
652 <notes>if any AF mode besides OFF is supported AF
653 believes it is focused correctly and is
654 locked</notes></value>
655 <value>AF_NOT_FOCUSED_LOCKED
656 <notes>if any AF mode besides OFF is supported AF has
657 failed to focus successfully and is
658 locked</notes></value>
659 </enum>
660 <description>Current state of AF algorithm</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800661 <notes>Whenever the AF algorithm state changes, a
662 MSG_AUTOFOCUS notification must be send if a notification
663 callback is registered.</notes>
664 </entry>
665 <entry name="afTriggerId" type="int32">
666 <description>The ID sent with the latest
667 CAMERA2_TRIGGER_AUTOFOCUS call</description>
668 <notes>Must be 0 if no CAMERA2_TRIGGER_AUTOFOCUS trigger
669 received yet by HAL. Always updated even if AF algorithm
670 ignores the trigger</notes>
671 </entry>
672 <clone entry="android.control.awbMode" kind="controls">
673 </clone>
674 <clone entry="android.control.awbRegions" kind="controls">
675 </clone>
676 <entry name="awbState" type="enum">
677 <enum>
678 <value>INACTIVE
679 <notes>AWB is not in auto mode</notes></value>
680 <value>SEARCHING
681 <notes>AWB doesn't yet have a good set of control
682 values for the current scene</notes></value>
683 <value>CONVERGED
684 <notes>AWB has a good set of control values for the
685 current scene</notes></value>
686 <value>LOCKED
687 <notes>AE has been locked (aeMode =
688 LOCKED)</notes></value>
689 </enum>
690 <description>Current state of AWB algorithm</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -0800691 <notes>Whenever the AWB algorithm state changes, a
692 MSG_AUTOWHITEBALANCE notification must be send if a
693 notification callback is registered.</notes>
694 </entry>
695 <clone entry="android.control.mode" kind="controls">
696 </clone>
697 </dynamic>
698 </section>
699 <section name="demosaic">
700 <controls>
701 <entry name="mode" type="enum">
702 <enum>
703 <value>FAST
704 <notes>Minimal or no slowdown of frame rate compared to
705 Bayer RAW output</notes></value>
706 <value>HIGH_QUALITY
707 <notes>High-quality may reduce output frame
708 rate</notes></value>
709 </enum>
710 <description>Controls the quality of the demosaicing
711 processing</description>
712 <units>Enum:</units>
713 <tag id="V1" />
714 </entry>
715 </controls>
716 </section>
717 <section name="edge">
718 <controls>
719 <entry name="mode" type="enum">
720 <enum>
721 <value>OFF
722 <notes>No edge enhancement is applied</notes></value>
723 <value>FAST
724 <notes>Must not slow down frame rate relative to raw
725 bayer output</notes></value>
726 <value>HIGH_QUALITY
727 <notes>Frame rate may be reduced by high
728 quality</notes></value>
729 </enum>
730 <description>Operation mode for edge
731 enhancement</description>
732 <units>enum:</units>
733 </entry>
734 <entry name="strength" type="byte">
735 <description>Control the amount of edge enhancement
736 applied to the images</description>
737 <units>1-10; 10 is maximum sharpening</units>
738 </entry>
739 </controls>
740 <dynamic>
741 <clone entry="android.edge.mode" kind="controls"></clone>
742 </dynamic>
743 </section>
744 <section name="flash">
745 <controls>
746 <entry name="firingPower" type="byte">
747 <description>Power for flash firing/torch</description>
748 <units>10 is max power; 0 is no flash. Linear</units>
749 <range>0 - 10</range>
750 <notes>Power for snapshot may use a different scale than
751 for torch mode. Only one entry for torch mode will be
752 used</notes>
753 <tag id="V1" />
754 </entry>
755 <entry name="firingTime" type="int64">
756 <description>Firing time of flash relative to start of
757 exposure</description>
758 <units>nanoseconds</units>
759 <range>0-(exposure time-flash duration)</range>
760 <notes>Clamped to (0, exposure time - flash
761 duration).</notes>
762 <tag id="V1" />
763 </entry>
764 <entry name="mode" type="enum">
765 <enum>
766 <value>OFF
767 <notes>Do not fire the flash for this
768 capture</notes></value>
769 <value>SINGLE
770 <notes>if android.flash.available is true Fire flash
771 for this capture based on firingPower,
772 firingTime.</notes></value>
773 <value>TORCH
774 <notes>if android.flash.available is true Flash
775 continuously on, power set by
776 firingPower</notes></value>
777 </enum>
778 <description>Select flash operation mode</description>
779 <units>enum</units>
780 <tag id="BC" />
781 </entry>
782 </controls>
783 <static>
784 <namespace name="info">
785 <entry name="available" type="byte">
786 <description>Whether this camera has a
787 flash</description>
788 <units>boolean (0 = false, otherwise true)</units>
789 <notes>If no flash, none of the flash controls do
790 anything. All other metadata should return 0</notes>
791 <tag id="BC" />
792 </entry>
793 <entry name="chargeDuration" type="int64">
794 <description>Time taken before flash can fire
795 again</description>
796 <units>nanoseconds</units>
797 <range>0-1e9</range>
798 <notes>1 second too long/too short for recharge? Should
799 this be power-dependent?</notes>
800 <tag id="V1" />
801 </entry>
802 </namespace>
803 <entry name="colorTemperature" type="byte">
804 <description>The x,y whitepoint of the
805 flash</description>
806 <units>pair of floats</units>
807 <range>0-1 for both</range>
808 <tag id="ADV" />
809 </entry>
810 <entry name="maxEnergy" type="byte">
811 <description>Max energy output of the flash for a full
812 power single flash</description>
813 <units>lumen-seconds</units>
814 <range>&gt;= 0</range>
815 <tag id="ADV" />
816 </entry>
817 </static>
818 <dynamic>
819 <clone entry="android.flash.firingPower" kind="controls">
820 </clone>
821 <clone entry="android.flash.firingTime" kind="controls">
822 </clone>
823 <clone entry="android.flash.mode" kind="controls"></clone>
824 <entry name="state" type="enum">
825 <enum>
826 <value>UNAVAILABLE
827 <notes>No flash on camera</notes></value>
828 <value>CHARGING
829 <notes>if android.flash.available is true Flash is
830 charging and cannot be fired</notes></value>
831 <value>READY
832 <notes>if android.flash.available is true Flash is
833 ready to fire</notes></value>
834 <value>FIRED
835 <notes>if android.flash.available is true Flash fired
836 for this capture</notes></value>
837 </enum>
838 <description>Current state of the flash
839 unit</description>
840 <units>enum</units>
841 </entry>
842 </dynamic>
843 </section>
844 <section name="geometric">
845 <controls>
846 <entry name="mode" type="enum">
847 <enum>
848 <value>OFF
849 <notes>No geometric correction is
850 applied</notes></value>
851 <value>FAST
852 <notes>Must not slow down frame rate relative to raw
853 bayer output</notes></value>
854 <value>HIGH_QUALITY
855 <notes>Frame rate may be reduced by high
856 quality</notes></value>
857 </enum>
858 <description>Operating mode of geometric
859 correction</description>
860 <units>enum:</units>
861 </entry>
862 <entry name="strength" type="byte">
863 <description>Control the amount of shading correction
864 applied to the images</description>
865 <units>unitless: 1-10; 10 is full shading
866 compensation</units>
867 <tag id="ADV" />
868 </entry>
869 </controls>
870 </section>
871 <section name="hotPIxel">
872 <static>
873 <namespace name="info">
874 <entry name="map" type="int32"
875 type_notes="list of coordinates based on android.sensor.pixelArraySize"
876 container="array">
877 <array>
878 <size>2</size>
879 <size>n</size>
880 </array>
881 <description>Location of hot/defective pixels on
882 sensor</description>
883 <tag id="ADV" />
884 </entry>
885 </namespace>
886 </static>
887 </section>
888 <section name="hotPixel">
889 <controls>
890 <entry name="mode" type="enum">
891 <enum>
892 <value>OFF
893 <notes>No hot pixel correction can be
894 applied</notes></value>
895 <value>FAST
896 <notes>Frame rate must not be reduced compared to raw
897 Bayer output</notes></value>
898 <value>HIGH_QUALITY
899 <notes>Frame rate may be reduced by high
900 quality</notes></value>
901 </enum>
902 <description>Set operational mode for hot pixel
903 correction</description>
904 <units>Enum:</units>
905 <tag id="V1" />
906 </entry>
907 </controls>
908 <dynamic>
909 <clone entry="android.hotPixel.mode" kind="controls">
910 <tag id="V1" />
911 </clone>
912 </dynamic>
913 </section>
914 <section name="jpeg">
915 <controls>
916 <entry name="gpsCoordinates" type="double"
917 type_notes="latitude, longitude, altitude. First two in degrees, the third in meters"
918 container="array">
919 <array>
920 <size>3</size>
921 </array>
922 <description>GPS coordinates to include in output JPEG
923 EXIF</description>
924 <range>(-180 - 180], [-90,90], [-inf, inf]</range>
925 <tag id="BC" />
926 </entry>
927 <entry name="gpsProcessingMethod" type="byte">
928 <description>32 characters describing GPS algorithm to
929 include in EXIF</description>
930 <units>UTF-8 null-terminated string</units>
931 <tag id="BC" />
932 </entry>
933 <entry name="gpsTimestamp" type="int64">
934 <description>Time GPS fix was made to include in
935 EXIF</description>
936 <units>UTC in seconds since January 1, 1970</units>
937 <tag id="BC" />
938 </entry>
939 <entry name="orientation" type="int32">
940 <description>Orientation of JPEG image to
941 write</description>
942 <units>Degrees in multiples of 90</units>
943 <range>0, 90, 180, 270</range>
944 <tag id="BC" />
945 </entry>
946 <entry name="quality" type="byte">
947 <description>Compression quality of the final JPEG
948 image</description>
949 <range>1-100; larger is higher quality</range>
950 <notes>85-95 is typical usage range</notes>
951 <tag id="BC" />
952 </entry>
953 <entry name="thumbnailQuality" type="byte">
954 <description>Compression quality of JPEG
955 thumbnail</description>
956 <range>1-100; larger is higher quality</range>
957 <tag id="BC" />
958 </entry>
959 <entry name="thumbnailSize" type="int32" container="array">
960 <array>
961 <size>2</size>
962 </array>
963 <description>Resolution of embedded JPEG
964 thumbnail</description>
965 <range>from android.jpeg.availableThumbnailSizes</range>
966 <tag id="BC" />
967 </entry>
968 </controls>
969 <static>
970 <entry name="availableThumbnailSizes" type="int32"
971 type_notes="list of resolution pairs" container="array">
972 <array>
973 <size>2</size>
974 <size>n</size>
975 </array>
976 <description>Supported resolutions for the JPEG
977 thumbnail</description>
978 <range>Must include at least one valid resolution, plus
979 (0,0) for no thumbnail generation</range>
980 <tag id="BC" />
981 </entry>
982 <entry name="maxSize" type="int32">
983 <description>Maximum size in bytes for the compressed
984 JPEG buffer</description>
985 <range>Must be large enough to fit any JPEG produced by
986 the camera</range>
987 <notes>This is used for sizing the gralloc buffers for
988 JPEG</notes>
989 </entry>
990 </static>
991 <dynamic>
992 <clone entry="android.jpeg.gpsCoordinates" kind="controls">
993 </clone>
994 <clone entry="android.jpeg.gpsProcessingMethod"
995 kind="controls"></clone>
996 <clone entry="android.jpeg.gpsTimestamp" kind="controls">
997 </clone>
998 <clone entry="android.jpeg.orientation" kind="controls">
999 </clone>
1000 <clone entry="android.jpeg.quality" kind="controls">
1001 </clone>
1002 <entry name="size" type="int32">
1003 <description>The size of the compressed JPEG image, in
1004 bytes</description>
1005 <range>&gt;= 0</range>
1006 <notes>If no JPEG output is produced for the request,
1007 this must be 0. Otherwise, this describes the real size
1008 of the compressed JPEG image placed in the output stream.
1009 More specifically, if android.jpeg.maxSize = 1000000, and
1010 a specific capture has android.jpeg.size = 500000, then
1011 the output buffer from the JPEG stream will be 1000000
1012 bytes, of which the first 500000 make up the real
1013 data.</notes>
1014 </entry>
1015 <clone entry="android.jpeg.thumbnailQuality"
1016 kind="controls"></clone>
1017 <clone entry="android.jpeg.thumbnailSize" kind="controls">
1018 </clone>
1019 </dynamic>
1020 </section>
1021 <section name="lens">
1022 <controls>
1023 <entry name="aperture" type="float">
1024 <description>Size of the lens aperture</description>
1025 <units>f-number (f/NNN)</units>
1026 <range>android.lens.info.availableApertures</range>
1027 <notes>Will not be supported on most devices. Can only
1028 pick from supported list</notes>
1029 <tag id="V1" />
1030 </entry>
1031 <entry name="filterDensity" type="float">
1032 <description>State of lens neutral density
1033 filter(s)</description>
1034 <units>number of stops of filtering</units>
1035 <range>android.lens.info.availableFilterDensities</range>
1036 <notes>Will not be supported on most devices. Can only
1037 pick from supported list</notes>
1038 <tag id="V1" />
1039 </entry>
1040 <entry name="focalLength" type="float">
1041 <description>Lens optical zoom setting</description>
1042 <units>focal length in mm</units>
1043 <range>&gt; 0</range>
1044 <notes>Will not be supported on most devices.</notes>
1045 <tag id="V1" />
1046 </entry>
1047 <entry name="focusDistance" type="float">
1048 <description>Distance to plane of sharpest focus,
1049 measured from frontmost surface of the lens</description>
1050 <units>diopters (1/m)</units>
1051 <range>&gt;= 0</range>
1052 <notes>0 = infinity focus. Used value should be clamped
1053 to (0,minimum focus distance)</notes>
1054 <tag id="BC" />
1055 <tag id="V1" />
1056 </entry>
1057 <entry name="opticalStabilizationMode" type="enum">
1058 <enum>
1059 <value>OFF</value>
1060 <value optional="true">ON</value>
1061 </enum>
1062 <description>Whether optical image stabilization is
1063 enabled.</description>
1064 <units>enum</units>
1065 <range>android.lens.availableOpticalStabilization</range>
1066 <notes>Will not be supported on most devices.</notes>
1067 <tag id="V1" />
1068 </entry>
1069 </controls>
1070 <static>
1071 <namespace name="info">
1072 <entry name="availableApertures" type="float"
1073 container="array">
1074 <array>
1075 <size>n</size>
1076 </array>
1077 <description>List of supported aperture
1078 values</description>
1079 <range>one entry required, &gt; 0</range>
1080 <notes>If variable aperture not available, only setting
1081 should be for the fixed aperture</notes>
1082 <tag id="V1" />
1083 </entry>
1084 <entry name="availableFilterDensities" type="float"
1085 container="array">
1086 <array>
1087 <size>n</size>
1088 </array>
1089 <description>List of supported ND filter
1090 values</description>
1091 <range>one entry required, &gt;= 0</range>
1092 <notes>If not available, only setting is 0. Otherwise,
1093 lists the available exposure index values for dimming
1094 (2 would mean the filter is set to reduce incoming
1095 light by two stops)</notes>
1096 <tag id="V1" />
1097 </entry>
1098 <entry name="availableFocalLengths" type="float"
1099 type_notes="the list of available focal lengths"
1100 container="array">
1101 <array>
1102 <size>n</size>
1103 </array>
1104 <description>If fitted with optical zoom, what focal
1105 lengths are available. If not, the static focal
1106 length</description>
1107 <range>&gt; 0</range>
1108 <notes>If optical zoom not supported, only one value
1109 should be reported</notes>
1110 <tag id="BC" />
1111 <tag id="V1" />
1112 </entry>
1113 <entry name="availableOpticalStabilization" type="byte"
1114 type_notes="list of enums" container="array">
1115 <array>
1116 <size>n</size>
1117 </array>
1118 <description>List of supported optical image
1119 stabilization modes</description>
1120 <tag id="V1" />
1121 </entry>
1122 <entry name="geometricCorrectionMap" type="float"
1123 type_notes="2D array of destination coordinate pairs for uniform grid points in source image, per color channel. Size in the range of 2x3x40x30"
1124 container="array">
1125 <array>
1126 <size>2</size>
1127 <size>3</size>
1128 <size>n</size>
1129 <size>m</size>
1130 </array>
1131 <description>A low-resolution map for correction of
1132 geometric distortions and chromatic aberrations, per
1133 color channel</description>
1134 <range>N, M &gt;= 2</range>
1135 <notes>[DNG wants a function instead]. What's easiest
1136 for implementers? With an array size (M, N), entry (i,
1137 j) provides the destination for pixel (i/(M-1) * width,
1138 j/(N-1) * height). Data is row-major, with each array
1139 entry being ( (X, Y)_r, (X, Y)_g, (X, Y)_b ) )</notes>
1140 <tag id="DNG" />
1141 </entry>
1142 <entry name="geometricCorrectionMapSize" type="int32"
1143 type_notes="width and height of geometric correction map"
1144 container="array">
1145 <array>
1146 <size>2</size>
1147 </array>
1148 <description>Dimensions of geometric correction
1149 map</description>
1150 <range>Both values &gt;= 2</range>
1151 <tag id="V1" />
1152 </entry>
1153 <entry name="hyperfocalDistance" type="float">
1154 <description>Hyperfocal distance for this lens; set to
1155 0 if fixed focus</description>
1156 <units>diopters</units>
1157 <range>&gt;= 0</range>
1158 <notes>The hyperfocal distance is used for the old
1159 API's 'fixed' setting</notes>
1160 <tag id="BC" />
1161 </entry>
1162 <entry name="minimumFocusDistance" type="float">
1163 <description>Shortest distance from frontmost surface
1164 of the lens that can be focused correctly</description>
1165 <units>diopters</units>
1166 <range>&gt;= 0</range>
1167 <notes>If the lens is fixed-focus, this should be
1168 0</notes>
1169 <tag id="V1" />
1170 </entry>
1171 <entry name="shadingMap" type="float"
1172 type_notes="2D array of float gain factors per channel to correct for lens falloff. Should be on the order of 3x40x30"
1173 container="array">
1174 <array>
1175 <size>3</size>
1176 <size>n</size>
1177 <size>m</size>
1178 </array>
1179 <description>A low-resolution map of lens shading, per
1180 color channel</description>
1181 <range>Each gain factor is &gt;= 1</range>
1182 <notes>Assume bilinear interpolation of map. The least
1183 shaded section of the image should have a gain factor
1184 of 1; all other sections should have gains above
1185 1.</notes>
1186 <tag id="DNG" />
1187 </entry>
1188 <entry name="shadingMapSize" type="int32"
1189 type_notes="width and height of lens shading map"
1190 container="array">
1191 <array>
1192 <size>2</size>
1193 </array>
1194 <description>Dimensions of lens shading
1195 map</description>
1196 <range>Both values &gt;= 1</range>
1197 <tag id="V1" />
1198 </entry>
1199 </namespace>
1200 <entry name="facing" type="enum">
1201 <enum>
1202 <value>FACING_FRONT</value>
1203 <value>FACING_BACK</value>
1204 </enum>
1205 <description>Direction the camera faces relative to
1206 device screen</description>
1207 <units>enum</units>
1208 <notes>}</notes>
1209 </entry>
1210 <entry name="opticalAxisAngle" type="float"
1211 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."
1212 container="array">
1213 <array>
1214 <size>2</size>
1215 </array>
1216 <description>Relative angle of camera optical axis to the
1217 perpendicular axis from the display</description>
1218 <range>[0-90) for first angle, [0-360) for second</range>
1219 <notes>Examples: (0,0) means that the camera optical axis
1220 is perpendicular to the display surface; (45,0) means
1221 that the camera points 45 degrees up when device is held
1222 upright; (45,90) means the camera points 45 degrees to
1223 the right when the device is held upright. Use FACING
1224 field to determine perpendicular outgoing
1225 direction</notes>
1226 <tag id="ADV" />
1227 </entry>
1228 <entry name="position" type="float" container="array">
1229 <array>
1230 <size>3, location in mm, in the sensor coordinate
1231 system</size>
1232 </array>
1233 <description>Coordinates of camera optical axis on
1234 device</description>
1235 <tag id="V1" />
1236 </entry>
1237 </static>
1238 <dynamic>
1239 <clone entry="android.lens.aperture" kind="controls">
1240 <tag id="V1" />
1241 </clone>
1242 <clone entry="android.lens.filterDensity" kind="controls">
1243 <tag id="V1" />
1244 </clone>
1245 <clone entry="android.lens.focalLength" kind="controls">
1246 <tag id="BC" />
1247 </clone>
1248 <clone entry="android.lens.focusDistance" kind="controls">
1249 <notes>Should be zero for fixed-focus cameras</notes>
1250 <tag id="BC" />
1251 </clone>
1252 <entry name="focusRange" type="float">
1253 <description>The range of scene distances that are in
1254 sharp focus (depth of field)</description>
1255 <units>pair of focus distances in diopters: (near,
1256 far)</units>
1257 <range>&gt;=0</range>
1258 <notes>If variable focus not supported, can still report
1259 fixed depth of field range</notes>
1260 <tag id="BC" />
1261 </entry>
1262 <clone entry="android.lens.opticalStabilizationMode"
1263 kind="controls">
1264 <tag id="V1" />
1265 </clone>
1266 <entry name="state" type="enum">
1267 <enum>
1268 <value>STATIONARY</value>
1269 </enum>
1270 <description>Current lens status</description>
1271 <tag id="V1" />
1272 </entry>
1273 </dynamic>
1274 </section>
1275 <section name="noiseReduction">
1276 <controls>
1277 <entry name="mode" type="enum">
1278 <enum>
1279 <value>OFF
1280 <notes>No noise reduction is applied</notes></value>
1281 <value>FAST
1282 <notes>Must not slow down frame rate relative to raw
1283 bayer output</notes></value>
1284 <value>HIGH_QUALITY
1285 <notes>May slow down frame rate to provide highest
1286 quality</notes></value>
1287 </enum>
1288 <description>Mode of operation for the noise reduction
1289 algorithm</description>
1290 <units>enum:</units>
1291 <range>android.noiseReduction.availableModes</range>
1292 <tag id="V1" />
1293 </entry>
1294 <entry name="strength" type="byte">
1295 <description>Control the amount of noise reduction
1296 applied to the images</description>
1297 <units>1-10; 10 is max noise reduction</units>
1298 <range>1 - 10</range>
1299 </entry>
1300 </controls>
1301 <dynamic>
1302 <clone entry="android.noiseReduction.mode" kind="controls">
1303 </clone>
1304 </dynamic>
1305 </section>
1306 <section name="quirks">
1307 <static>
1308 <entry name="meteringCropRegion" type="byte">
1309 <description>If set to 1, the camera service does not
1310 scale 'normalized' coordinates with respect to the crop
1311 region. This applies to metering input (a{e,f,wb}Region
1312 and output (face rectangles).</description>
1313 <notes>Normalized coordinates refer to those in the
1314 (-1000,1000) range mentioned in the
1315 android.hardware.Camera API. HAL implementations should
1316 instead always use and emit sensor array-relative
1317 coordinates for all region data. Does not need to be
1318 listed in static metadata. Support will be removed in
1319 future versions of camera service.</notes>
1320 </entry>
1321 <entry name="triggerAfWithAuto" type="byte">
1322 <description>If set to 1, then the camera service always
1323 switches to FOCUS_MODE_AUTO before issuing a AF
1324 trigger.</description>
1325 <notes>HAL implementations should implement AF trigger
1326 modes for AUTO, MACRO, CONTINUOUS_FOCUS, and
1327 CONTINUOUS_PICTURE modes instead of using this flag. Does
1328 not need to be listed in static metadata. Support will be
1329 removed in future versions of camera service</notes>
1330 </entry>
1331 <entry name="useZslFormat" type="byte">
1332 <description>If set to 1, the camera service uses
1333 CAMERA2_PIXEL_FORMAT_ZSL instead of
1334 HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED for the zero
1335 shutter lag stream</description>
1336 <notes>HAL implementations should use gralloc usage flags
1337 to determine that a stream will be used for
1338 zero-shutter-lag, instead of relying on an explicit
1339 format setting. Does not need to be listed in static
1340 metadata. Support will be removed in future versions of
1341 camera service.</notes>
1342 </entry>
1343 </static>
1344 </section>
1345 <section name="request">
1346 <controls>
1347 <entry name="frameCount" type="int32">
1348 <description>A frame counter set by the framework. Must
1349 be maintained unchanged in output frame</description>
1350 <units>incrementing integer</units>
1351 <range>Any int</range>
1352 </entry>
1353 <entry name="id" type="int32">
1354 <description>An application-specified ID for the current
1355 request. Must be maintained unchanged in output
1356 frame</description>
1357 <units>arbitrary integer assigned by application</units>
1358 <range>Any int</range>
1359 <tag id="V1" />
1360 </entry>
1361 <entry name="inputStreams" type="byte">
1362 <description>List which camera reprocess stream is used
1363 for the source of reprocessing data.</description>
1364 <units>List of camera reprocess stream IDs</units>
1365 <range>Typically, only one entry allowed, must be a valid
1366 reprocess stream ID. If android.jpeg.needsThumbnail is
1367 set, then multiple reprocess streams may be included in a
1368 single request; they must be different scaled versions of
1369 the same image.</range>
1370 <notes>Only meaningful when android.request.type ==
1371 REPROCESS. Ignored otherwise</notes>
1372 </entry>
1373 <entry name="metadataMode" type="enum">
1374 <enum>
1375 <value>NONE
1376 <notes>No metadata should be produced on output, except
1377 for application-bound buffer data. If no
1378 application-bound streams exist, no frame should be
1379 placed in the output frame queue. If such streams
1380 exist, a frame should be placed on the output queue
1381 with null metadata but with the necessary output buffer
1382 information. Timestamp information should still be
1383 included with any output stream buffers</notes></value>
1384 <value>FULL
1385 <notes>All metadata should be produced. Statistics will
1386 only be produced if they are separately
1387 enabled</notes></value>
1388 </enum>
1389 <description>How much metadata to produce on
1390 output</description>
1391 <units>Enum:</units>
1392 </entry>
1393 <entry name="outputStreams" type="byte">
1394 <description>Lists which camera output streams image data
1395 from this capture must be sent to</description>
1396 <units>List of camera stream IDs</units>
1397 <range>List must only include streams that have been
1398 created</range>
1399 <notes>If no output streams are listed, then the image
1400 data should simply be discarded. The image data must
1401 still be captured for metadata and statistics production,
1402 and the lens and flash must operate as requested.</notes>
1403 </entry>
1404 <entry name="type" type="enum">
1405 <enum>
1406 <value>CAPTURE
1407 <notes>Capture a new image from the imaging hardware,
1408 and process it according to the
1409 settings</notes></value>
1410 <value>REPROCESS
1411 <notes>Process previously captured data; the
1412 android.request.inputStream parameter determines the
1413 source reprocessing stream. TODO: Mark dynamic metadata
1414 needed for reprocessing with [RP]</notes></value>
1415 </enum>
1416 <description>The type of the request; either CAPTURE or
1417 REPROCESS</description>
1418 <units>Enum:</units>
1419 </entry>
1420 </controls>
1421 <static>
1422 <entry name="maxNumOutputStreams" type="int32"
1423 container="array">
1424 <array>
1425 <size>3</size>
1426 </array>
1427 <description>How many output streams can be allocated at
1428 the same time for each type of stream</description>
1429 <units>The number of raw sensor streams; the number of
1430 processed, uncompressed streams; and the number of
1431 JPEG-compressed streams</units>
1432 <range>&gt;=1 for Raw and JPEG-compressed stream. &gt;= 3
1433 for processed, uncompressed streams</range>
1434 <notes>Video snapshot with preview callbacks requires 3
1435 processed streams (preview, record, app callbacks) and
1436 one JPEG stream (snapshot)</notes>
1437 <tag id="BC" />
1438 </entry>
1439 <entry name="maxNumReprocessStreams" type="int32"
1440 container="array">
1441 <array>
1442 <size>1</size>
1443 </array>
1444 <description>How many reprocessing streams of any type
1445 can be allocated at the same time</description>
1446 <range>&gt;= 1</range>
1447 </entry>
1448 </static>
1449 <dynamic>
1450 <entry name="frameCount" type="int32">
1451 <description>Number of frames captured since
1452 open()</description>
1453 <units>count of frames</units>
1454 <range>&gt; 0</range>
1455 <notes>Reset on release()</notes>
1456 </entry>
1457 <clone entry="android.request.id" kind="controls"></clone>
1458 <clone entry="android.request.metadataMode"
1459 kind="controls"></clone>
1460 <clone entry="android.request.outputStreams"
1461 kind="controls"></clone>
1462 </dynamic>
1463 </section>
1464 <section name="scaler">
1465 <controls>
1466 <entry name="cropRegion" type="int32" container="array">
1467 <array>
1468 <size>3</size>
1469 </array>
1470 <description>Top-left corner and width of the output
1471 region to select from the active pixel
1472 array</description>
1473 <units>(x,y) of top-left corner, width of region in
1474 pixels; (0,0) is top-left corner of
1475 android.sensor.activePixelArray</units>
1476 <notes>[BC - zoom] Height determined based on width and
1477 aspect ratio of output stream. Negative values for corner
1478 are allowed for raw output if full pixel array is larger
1479 than active pixel array. Width may be rounded to nearest
1480 larger supportable width, especially for raw output,
1481 where only a few fixed scales may be possible</notes>
1482 <tag id="BC" />
1483 </entry>
1484 </controls>
1485 <static>
1486 <entry name="availableFormats" type="enum"
Igor Murashkinddfc7fc2012-11-19 16:49:37 -08001487 type_notes="values from HAL_PIXEL_FORMAT_* in /system/core/include/system/graphics.h"
Igor Murashkincd6ebaa2012-11-09 16:15:02 -08001488 container="array">
1489 <array>
1490 <size>n</size>
1491 </array>
Igor Murashkinddfc7fc2012-11-19 16:49:37 -08001492 <enum>
1493 <value id="0x20">RAW_SENSOR
1494 </value>
1495 <value id="0x32315659">YV12
1496 <notes>YCrCb 4:2:0 Planar</notes>
1497 </value>
1498 <value id="0x11">YCbCr_420_SP
1499 <notes>NV21</notes>
1500 </value>
1501 <value id="0x21">JPEG
1502 <notes>BLOB</notes>
1503 </value>
1504 </enum>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -08001505 <description>List of app-visible formats</description>
1506 <tag id="BC" />
1507 </entry>
1508 <entry name="availableJpegMinDurations" type="int64"
1509 container="array">
1510 <array>
1511 <size>n</size>
1512 </array>
1513 <description>The minimum frame duration that is supported
1514 for each resolution in availableJpegSizes. Should
1515 correspond to the frame duration when only that JPEG
1516 stream is active, with all processing set to
1517 FAST</description>
1518 <notes>When multiple streams are configured, the minimum
1519 frame duration will be &gt;= max(individual stream min
1520 durations)</notes>
1521 <tag id="BC" />
1522 </entry>
1523 <entry name="availableJpegSizes" type="int32"
1524 container="array">
1525 <array>
1526 <size>n</size>
1527 <size>2</size>
1528 </array>
1529 <description>The resolutions available for output from
1530 the JPEG block. Listed as width x height</description>
1531 <range>Must include: - sensor maximum resolution Should
1532 include: - half/quarter max resolution</range>
1533 <tag id="BC" />
1534 </entry>
1535 <entry name="availableProcessedMinDurations" type="int64"
1536 container="array">
1537 <array>
1538 <size>n</size>
1539 </array>
1540 <description>The minimum frame duration that is supported
1541 for each resolution in availableProcessedSizes. Should
1542 correspond to the frame duration when only that processed
1543 stream is active, with all processing set to
1544 FAST</description>
1545 <notes>When multiple streams are configured, the minimum
1546 frame duration will be &gt;= max(individual stream min
1547 durations)</notes>
1548 <tag id="BC" />
1549 </entry>
1550 <entry name="availableProcessedSizes" type="int32"
1551 container="array">
1552 <array>
1553 <size>n</size>
1554 <size>2</size>
1555 </array>
1556 <description>The resolutions available for use with
1557 processed output streams, such as YV12, NV12, and
1558 platform opaque YUV/RGB streams to the GPU or video
1559 encoders. Listed as width, height</description>
1560 <range>Must include: - sensor maximum resolution -
1561 standard QCIF, 240p, 480p, 720p, and 1080p
1562 resolutions</range>
1563 <tag id="BC" />
1564 </entry>
1565 <entry name="availableRawMinDurations" type="int64"
1566 container="array">
1567 <array>
1568 <size>n</size>
1569 </array>
1570 <description>The minimum frame duration that is supported
1571 for each raw resolution in availableRawSizes. Should
1572 correspond to the frame duration when only the raw stream
1573 is active.</description>
1574 <notes>When multiple streams are configured, the minimum
1575 frame duration will be &gt;= max(individual stream min
1576 durations)</notes>
1577 <tag id="BC" />
1578 </entry>
1579 <entry name="availableRawSizes" type="int32"
1580 container="array">
1581 <array>
1582 <size>n</size>
1583 <size>2</size>
1584 </array>
1585 <description>The resolutions available for use with raw
1586 sensor output streams, listed as width,
1587 height</description>
1588 <range>Must include: - sensor maximum resolution</range>
1589 </entry>
1590 <entry name="maxDigitalZoom" type="float">
1591 <description>The maximum ratio between active area width
1592 and crop region width, or between active area height and
1593 crop region height, if the crop region height is larger
1594 than width</description>
1595 <range>&gt;=1</range>
1596 <tag id="BC" />
1597 </entry>
1598 </static>
1599 <dynamic>
1600 <clone entry="android.scaler.cropRegion" kind="controls">
1601 </clone>
1602 </dynamic>
1603 </section>
1604 <section name="sensor">
1605 <controls>
1606 <entry name="exposureTime" type="int64">
1607 <description>Duration each pixel is exposed to
1608 light</description>
1609 <units>nanoseconds</units>
1610 <range>android.sensor.info.exposureTimeRange</range>
1611 <notes>1/10000 - 30 sec range. No bulb mode</notes>
1612 <tag id="V1" />
1613 </entry>
1614 <entry name="frameDuration" type="int64">
1615 <description>Duration from start of frame exposure to
1616 start of next frame exposure</description>
1617 <units>nanoseconds</units>
1618 <range>see android.sensor.info.maxFrameDuration,
1619 android.scaler.info.availableMinFrameDurations</range>
1620 <notes>Exposure time has priority, so duration is set to
1621 max(duration, exposure time + overhead)</notes>
1622 <tag id="V1" />
1623 <tag id="BC" />
1624 </entry>
1625 <entry name="sensitivity" type="int32">
1626 <description>Gain applied to image data. Must be
1627 implemented through analog gain only if set to values
1628 below 'maximum analog sensitivity'.</description>
1629 <units>ISO arithmetic units</units>
1630 <range>android.sensor.info.sensitivityRange</range>
1631 <notes>ISO 12232:2006 REI method</notes>
1632 <tag id="V1" />
1633 </entry>
1634 </controls>
1635 <static>
1636 <namespace name="info">
1637 <entry name="activeArraySize" type="int32"
1638 type_notes="Four ints defining the active pixel rectangle"
1639 container="array">
1640 <array>
1641 <size>4</size>
1642 </array>
1643 <description>Area of raw data which corresponds to only
1644 active pixels; smaller or equal to
1645 pixelArraySize.</description>
1646 <units>xmin, ymin, width, height. Top left of full
1647 pixel array is (0,0)</units>
1648 <tag id="DNG" />
1649 </entry>
1650 <entry name="availableSensitivities" type="int32"
1651 type_notes="List of supported sensitivity values"
1652 container="array">
1653 <array>
1654 <size>n</size>
1655 </array>
1656 <description>Range of valid sensitivities</description>
1657 <range>Must at least include 100, 200, 400, 800,
1658 1600</range>
1659 <tag id="BC" />
1660 <tag id="V1" />
1661 </entry>
1662 <entry name="colorFilterArrangement" type="enum">
1663 <enum>
1664 <value>RGGB</value>
1665 <value>GRBG</value>
1666 <value>GBRG</value>
1667 <value>BGGR</value>
1668 <value>RGB
1669 <notes>Sensor is not Bayer; output has 3 16-bit
1670 values for each pixel, instead of just 1 16-bit value
1671 per pixel.</notes></value>
1672 </enum>
1673 <description>Arrangement of color filters on sensor;
1674 represents the colors in the top-left 2x2 section of
1675 the sensor, in reading order</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -08001676 <tag id="DNG" />
1677 </entry>
1678 <entry name="exposureTimeRange" type="int64"
1679 type_notes="nanoseconds" container="array">
1680 <array>
1681 <size>2</size>
1682 </array>
1683 <description>Range of valid exposure
1684 times</description>
1685 <range>Min &lt;= 100e3 (100 us), Max &gt;= 30e9 (30
1686 sec)</range>
1687 <tag id="V1" />
1688 </entry>
1689 <entry name="maxFrameDuration" type="int64">
1690 <description>Maximum frame duration (minimum frame
1691 rate)</description>
1692 <units>nanoseconds</units>
1693 <range>&gt;= 30e9</range>
1694 <notes>Minimum duration is a function of resolution,
1695 processing settings. See
1696 android.scaler.info.availableMinFrameDurations</notes>
1697 <tag id="BC" />
1698 <tag id="V1" />
1699 </entry>
1700 <entry name="physicalSize" type="float"
1701 type_notes="width x height in millimeters"
1702 container="array">
1703 <array>
1704 <size>2</size>
1705 </array>
1706 <description>The physical dimensions of the full pixel
1707 array</description>
1708 <notes>Needed for FOV calculation for old API</notes>
1709 <tag id="V1" />
1710 <tag id="BC" />
1711 </entry>
1712 <entry name="pixelArraySize" type="int32"
1713 container="array">
1714 <array>
1715 <size>2</size>
1716 </array>
1717 <description>Dimensions of full pixel array, possibly
1718 including black calibration pixels</description>
1719 <notes>Maximum output resolution for raw format must
1720 match this in
1721 android.scaler.info.availableSizesPerFormat</notes>
1722 <tag id="DNG" />
1723 <tag id="BC" />
1724 </entry>
1725 <entry name="whiteLevel" type="int32">
1726 <description>Maximum raw value output by
1727 sensor</description>
1728 <range>&gt; 1024 (10-bit output)</range>
1729 <notes>Defines sensor bit depth (10-14 bits is
1730 expected)</notes>
1731 <tag id="DNG" />
1732 </entry>
1733 </namespace>
1734 <entry name="baseGainFactor" type="rational">
1735 <description>Gain factor from electrons to raw units when
1736 ISO=100</description>
1737 <tag id="V1" />
1738 </entry>
1739 <entry name="blackLevelPattern" type="int32"
1740 type_notes="2x2 raw count block" container="array">
1741 <array>
1742 <size>4</size>
1743 </array>
1744 <description>A fixed black level offset for each of the
1745 Bayer mosaic channels</description>
1746 <range>&gt;= 0 each</range>
1747 <notes>As per DNG BlackLevelRepeatDim / BlackLevel
1748 tags</notes>
1749 <tag id="DNG" />
1750 </entry>
1751 <entry name="calibrationTransform1" type="rational"
1752 type_notes="3x3 matrix in row-major-order"
1753 container="array">
1754 <array>
1755 <size>9</size>
1756 </array>
1757 <description>Per-device calibration on top of color space
1758 transform 1</description>
1759 <tag id="DNG" />
1760 </entry>
1761 <entry name="calibrationTransform2" type="rational"
1762 type_notes="3x3 matrix in row-major-order"
1763 container="array">
1764 <array>
1765 <size>9</size>
1766 </array>
1767 <description>Per-device calibration on top of color space
1768 transform 2</description>
1769 <tag id="DNG" />
1770 </entry>
1771 <entry name="colorTransform1" type="rational"
1772 type_notes="3x3 matrix in row-major-order"
1773 container="array">
1774 <array>
1775 <size>9</size>
1776 </array>
1777 <description>Linear mapping from XYZ (D50) color space to
1778 reference linear sensor color, for first reference
1779 illuminant</description>
1780 <notes>Use as follows XYZ = inv(transform) * clip( (raw -
1781 black level(raw) ) / ( white level - max black level) ).
1782 At least in the simple case</notes>
1783 <tag id="DNG" />
1784 </entry>
1785 <entry name="colorTransform2" type="rational"
1786 type_notes="3x3 matrix in row-major-order"
1787 container="array">
1788 <array>
1789 <size>9</size>
1790 </array>
1791 <description>Linear mapping from XYZ (D50) color space to
1792 reference linear sensor color, for second reference
1793 illuminant</description>
1794 <tag id="DNG" />
1795 </entry>
1796 <entry name="forwardMatrix1" type="rational"
1797 type_notes="3x3 matrix in row-major-order"
1798 container="array">
1799 <array>
1800 <size>9</size>
1801 </array>
1802 <description>Used by DNG for better WB
1803 adaptation</description>
1804 <tag id="DNG" />
1805 </entry>
1806 <entry name="forwardMatrix2" type="rational"
1807 type_notes="3x3 matrix in row-major-order"
1808 container="array">
1809 <array>
1810 <size>9</size>
1811 </array>
1812 <description>Used by DNG for better WB
1813 adaptation</description>
1814 <tag id="DNG" />
1815 </entry>
1816 <entry name="maxAnalogSensitivity" type="int32">
1817 <description>Maximum sensitivity that is implemented
1818 purely through analog gain</description>
1819 <notes>For android.sensor.sensitivity values less than or
1820 equal to this, all applied gain must be analog. For
1821 values above this, it can be a mix of analog and
1822 digital</notes>
1823 <tag id="V1" />
1824 </entry>
1825 <entry name="noiseModelCoefficients" type="float"
1826 type_notes="float constants A, B for the noise variance model"
1827 container="array">
1828 <array>
1829 <size>2</size>
1830 </array>
1831 <description>Estimation of sensor noise
1832 characteristics</description>
1833 <units>var(raw pixel value) = electrons * (baseGainFactor
1834 * iso/100)^2 + A * (baseGainFactor * iso/100)^2 +
1835 B</units>
1836 <notes>A represents sensor read noise before analog
1837 amplification; B represents noise from A/D conversion and
1838 other circuits after amplification. Both noise sources
1839 are assumed to be gaussian, independent, and not to vary
1840 across the sensor</notes>
1841 <tag id="V1" />
1842 </entry>
1843 <entry name="orientation" type="int32">
1844 <description>Clockwise angle through which the output
1845 image needs to be rotated to be upright on the device
1846 screen in its native orientation. Also defines the
1847 direction of rolling shutter readout, which is from top
1848 to bottom in the sensor's coordinate system</description>
1849 <units>degrees clockwise rotation, only multiples of
1850 90</units>
1851 <range>0,90,180,270</range>
1852 <tag id="BC" />
1853 </entry>
1854 <entry name="referenceIlluminant1" type="enum">
1855 <enum>
1856 <value id="1">DAYLIGHT</value>
1857 <value id="2">FLUORESCENT</value>
1858 <value id="3">TUNGSTEN
1859 <notes>Incandescent light</notes></value>
1860 <value id="4">FLASH</value>
1861 <value id="9">FINE_WEATHER</value>
1862 <value id="10">CLOUDY_WEATHER</value>
1863 <value id="11">SHADE</value>
1864 <value id="12">DAYLIGHT_FLUORESCENT
1865 <notes>D 5700 - 7100K</notes></value>
1866 <value id="13">DAY_WHITE_FLUORESCENT
1867 <notes>N 4600 - 5400K</notes></value>
1868 <value id="14">COOL_WHITE_FLUORESCENT
1869 <notes>W 3900 - 4500K</notes></value>
1870 <value id="15">WHITE_FLUORESCENT
1871 <notes>WW 3200 - 3700K</notes></value>
1872 <value id="17">STANDARD_A</value>
1873 <value id="18">STANDARD_B</value>
1874 <value id="19">STANDARD_C</value>
1875 <value id="20">D55</value>
1876 <value id="21">D65</value>
1877 <value id="22">D75</value>
1878 <value id="23">D50</value>
1879 <value id="24">ISO_STUDIO_TUNGSTEN</value>
1880 </enum>
1881 <description>Light source used to define transform
1882 1</description>
Igor Murashkincd6ebaa2012-11-09 16:15:02 -08001883 <notes>[EXIF LightSource tag] Must all these be
1884 supported? Need CCT for each!</notes>
1885 <tag id="DNG" />
1886 <tag id="EXIF" />
1887 </entry>
1888 <entry name="referenceIlluminant2" type="byte">
1889 <description>Light source used to define transform
1890 2</description>
1891 <units>Same as illuminant 1</units>
1892 </entry>
1893 </static>
1894 <dynamic>
1895 <clone entry="android.sensor.exposureTime" kind="controls">
1896 </clone>
1897 <clone entry="android.sensor.frameDuration"
1898 kind="controls"></clone>
1899 <clone entry="android.sensor.sensitivity" kind="controls">
1900 </clone>
1901 <entry name="timestamp" type="int64">
1902 <description>Time at start of exposure of first
1903 row</description>
1904 <units>nanoseconds</units>
1905 <range>&gt; 0</range>
1906 <notes>Monotonic, should be synced to other timestamps in
1907 system</notes>
1908 <tag id="BC" />
1909 </entry>
1910 </dynamic>
1911 </section>
1912 <section name="shading">
1913 <controls>
1914 <entry name="mode" type="enum">
1915 <enum>
1916 <value>OFF
1917 <notes>No shading correction is applied</notes></value>
1918 <value>FAST
1919 <notes>Must not slow down frame rate relative to raw
1920 bayer output</notes></value>
1921 <value>HIGH_QUALITY
1922 <notes>Frame rate may be reduced by high
1923 quality</notes></value>
1924 </enum>
1925 <description>Quality of lens shading correction applied
1926 to the image data</description>
1927 <units>enum:</units>
1928 </entry>
1929 <entry name="strength" type="byte">
1930 <description>Control the amount of shading correction
1931 applied to the images</description>
1932 <units>unitless: 1-10; 10 is full shading
1933 compensation</units>
1934 <tag id="ADV" />
1935 </entry>
1936 </controls>
1937 <dynamic>
1938 <clone entry="android.shading.mode" kind="controls">
1939 </clone>
1940 </dynamic>
1941 </section>
1942 <section name="statistics">
1943 <controls>
1944 <entry name="faceDetectMode" type="enum">
1945 <enum>
1946 <value>OFF</value>
1947 <value>SIMPLE
1948 <notes>Optional Return rectangle and confidence
1949 only</notes></value>
1950 <value>FULL
1951 <notes>Optional Return all face
1952 metadata</notes></value>
1953 </enum>
1954 <description>State of the face detector
1955 unit</description>
1956 <units>enum</units>
1957 <range>
1958 android.statistics.availableFaceDetectModes</range>
1959 <tag id="BC" />
1960 </entry>
1961 <entry name="histogramMode" type="enum">
1962 <enum>
1963 <value>OFF</value>
1964 <value>ON</value>
1965 </enum>
1966 <description>Operating mode for histogram
1967 generation</description>
1968 <units>enum</units>
1969 <tag id="V1" />
1970 </entry>
1971 <entry name="sharpnessMapMode" type="enum">
1972 <enum>
1973 <value>OFF</value>
1974 <value>ON</value>
1975 </enum>
1976 <description>Operating mode for sharpness map
1977 generation</description>
1978 <units>enum</units>
1979 <tag id="V1" />
1980 </entry>
1981 </controls>
1982 <static>
1983 <namespace name="info">
1984 <entry name="availableFaceDetectModes" type="byte"
1985 type_notes="List of enums" container="array">
1986 <array>
1987 <size>n</size>
1988 </array>
1989 <description>Which face detection modes are available,
1990 if any</description>
1991 <range>OFF</range>
1992 </entry>
1993 <entry name="histogramBucketCount" type="int32">
1994 <description>Number of histogram buckets
1995 supported</description>
1996 <range>&gt;= 64</range>
1997 </entry>
1998 <entry name="maxFaceCount" type="int32">
1999 <description>If face detection is supported, how many
2000 faces can be detected at once</description>
2001 <range>&gt;= 4 if availableFaceDetectionModes lists
2002 modes besides OFF, otherwise 0</range>
2003 </entry>
2004 <entry name="maxHistogramCount" type="int32">
2005 <description>Maximum value possible for a histogram
2006 bucket</description>
2007 </entry>
2008 <entry name="maxSharpnessMapValue" type="int32">
2009 <description>Maximum value possible for a sharpness map
2010 region.</description>
2011 </entry>
2012 <entry name="sharpnessMapSize" type="int32"
2013 type_notes="width x height" container="array">
2014 <array>
2015 <size>2</size>
2016 </array>
2017 <description>Dimensions of the sharpness
2018 map</description>
2019 <range>Must be at least 32 x 32</range>
2020 </entry>
2021 </namespace>
2022 </static>
2023 <dynamic>
2024 <clone entry="android.statistics.faceDetectMode"
2025 kind="controls"></clone>
2026 <entry name="faceIds" type="int32" container="array">
2027 <array>
2028 <size>n</size>
2029 </array>
2030 <description>List of unique IDs for detected
2031 faces</description>
2032 <notes>Only available if faceDetectMode == FULL</notes>
2033 <tag id="BC" />
2034 </entry>
2035 <entry name="faceLandmarks" type="int32"
2036 type_notes="(leftEyeX, leftEyeY, rightEyeX, rightEyeY, mouthX, mouthY)"
2037 container="array">
2038 <array>
2039 <size>n</size>
2040 <size>6</size>
2041 </array>
2042 <description>List of landmarks for detected
2043 faces</description>
2044 <notes>Only available if faceDetectMode == FULL</notes>
2045 <tag id="BC" />
2046 </entry>
2047 <entry name="faceRectangles" type="int32"
2048 type_notes="(xmin, ymin, xmax, ymax). (0,0) is top-left of active pixel area"
2049 container="array">
2050 <array>
2051 <size>n</size>
2052 <size>4</size>
2053 </array>
2054 <description>List of the bounding rectangles for detected
2055 faces</description>
2056 <notes>Only available if faceDetectMode != OFF</notes>
2057 <tag id="BC" />
2058 </entry>
2059 <entry name="faceScores" type="byte" container="array">
2060 <array>
2061 <size>n</size>
2062 </array>
2063 <description>List of the face confidence scores for
2064 detected faces</description>
2065 <range>0-100</range>
2066 <notes>Only available if faceDetectMode != OFF</notes>
2067 <tag id="BC" />
2068 </entry>
2069 <entry name="histogram" type="int32"
2070 type_notes="count of pixels for each color channel that fall into each histogram bucket, scaled to be between 0 and maxHistogramCount"
2071 container="array">
2072 <array>
2073 <size>n</size>
2074 <size>3</size>
2075 </array>
2076 <description>A 3-channel histogram based on the raw
2077 sensor data</description>
2078 <notes>The k'th bucket (0-based) covers the input range
2079 (with w = android.sensor.info.whiteLevel) of [ k * w/N,
2080 (k + 1) * w / N ). If only a monochrome sharpness map is
2081 supported, all channels should have the same data</notes>
2082 <tag id="V1" />
2083 </entry>
2084 <clone entry="android.statistics.histogramMode"
2085 kind="controls"></clone>
2086 <entry name="sharpnessMap" type="int32"
2087 type_notes="estimated sharpness for each region of the input image. Normalized to be between 0 and maxSharpnessMapValue. Higher values mean sharper (better focused)"
2088 container="array">
2089 <array>
2090 <size>n</size>
2091 <size>m</size>
2092 <size>3</size>
2093 </array>
2094 <description>A 3-channel sharpness map, based on the raw
2095 sensor data</description>
2096 <notes>If only a monochrome sharpness map is supported,
2097 all channels should have the same data</notes>
2098 <tag id="V1" />
2099 </entry>
2100 <clone entry="android.statistics.sharpnessMapMode"
2101 kind="controls"></clone>
2102 </dynamic>
2103 </section>
2104 <section name="tonemap">
2105 <controls>
2106 <entry name="curveBlue" type="byte">
2107 <description>Table mapping blue input values to output
2108 values</description>
2109 <units>same as android.tonemap.curveRed</units>
2110 <range>same as android.tonemap.curveRed</range>
2111 </entry>
2112 <entry name="curveGreen" type="byte">
2113 <description>Table mapping green input values to output
2114 values</description>
2115 <units>same as android.tonemap.curveRed</units>
2116 <range>same as android.tonemap.curveRed</range>
2117 </entry>
2118 <entry name="curveRed" type="float"
2119 type_notes="A 1D array of pairs of floats. mapping a 0-1 input range to a 0-1 output range."
2120 container="array">
2121 <array>
2122 <size>n</size>
2123 <size>2</size>
2124 </array>
2125 <description>Table mapping red input values to output
2126 values</description>
2127 <range>0-1 on input and output coordinates. Max entry
2128 count speciied by android.tonemap.maxCurvePoints</range>
2129 <notes>.The input range must be monotonically increasing
2130 with N, and values between entries should be linearly
2131 interpolated. For example, if the array is: [0.0, 0.0,
2132 0.3, 0.5, 1.0, 1.0], then the input-&gt;output mapping
2133 for a few sample points would be: 0 -&gt; 0, 0.15 -&gt;
2134 0.25, 0.3 -&gt; 0.5, 0.5 -&gt; 0.64</notes>
2135 <tag id="DNG" />
2136 </entry>
2137 <entry name="mode" type="enum">
2138 <enum>
2139 <value>CONTRAST_CURVE
2140 <notes>Use the tone mapping curve specified in
2141 android.tonemap.curve</notes></value>
2142 <value>FAST
2143 <notes>Must not slow down frame rate relative to raw
2144 bayer output</notes></value>
2145 <value>HIGH_QUALITY
2146 <notes>Frame rate may be reduced by high
2147 quality</notes></value>
2148 </enum>
2149 <units>enum:</units>
2150 </entry>
2151 </controls>
2152 <static>
2153 <entry name="maxCurvePoints" type="int32">
2154 <description>Maximum number of supported points in the
2155 tonemap curve</description>
2156 <range>&gt;= 128</range>
2157 </entry>
2158 </static>
2159 <dynamic>
2160 <clone entry="android.tonemap.curveBlue" kind="controls">
2161 </clone>
2162 <clone entry="android.tonemap.curveGreen" kind="controls">
2163 </clone>
2164 <clone entry="android.tonemap.curveRed" kind="controls">
2165 </clone>
2166 <clone entry="android.tonemap.mode" kind="controls">
2167 </clone>
2168 </dynamic>
2169 </section>
2170 </namespace>
2171</metadata>