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