<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
-->
<metadata xmlns="http://schemas.android.com/service/camera/metadata/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata_properties.xsd">

  <tags>
    <tag id="AWB">
      <!-- TODO: fill the tag description -->
    </tag>
    <tag id="BC">
      <!-- TODO: fill the tag description -->
    </tag>
    <tag id="V1">
      <!-- TODO: fill the tag description -->
    </tag>
    <tag id="ADV">
      <!-- TODO: fill the tag description -->
    </tag>
    <tag id="DNG">
      <!-- TODO: fill the tag description -->
    </tag>
    <tag id="EXIF">
      <!-- TODO: fill the tag description -->
    </tag>
  </tags>
  <namespace name="android">
    <section name="colorCorrection">
      <controls>
        <entry name="mode" type="enum">
          <enum>
            <value>TRANSFORM_MATRIX
            <notes>Use the android.colorCorrection.transform matrix
            to do color conversion</notes></value>
            <value>FAST
            <notes>Must not slow down frame rate relative to raw
            bayer output</notes></value>
            <value>HIGH_QUALITY
            <notes>Frame rate may be reduced by high
            quality</notes></value>
          </enum>
          <description>enum</description>
          <units>enum:</units>
        </entry>
        <entry name="transform" type="float"
        type_notes="3x3 float matrix in row-major order"
        container="array">
          <array>
            <size>9</size>
          </array>
          <description>A transform matrix to chromatically adapt
          pixels in the CIE XYZ (1931) color space from the scene
          illuminant to the sRGB-standard
          D65-illuminant</description>
          <range>Output values are expected to be in the range
          (0,1)</range>
          <notes>Values outside (0,1) should be clamped. Need to
          provide utilities to go from CCT (+hue?), or (x,y) white
          point, (or AWB mode) to matrix; use linear Bradford
          algorithm.</notes>
        </entry>
      </controls>
      <dynamic>
        <clone entry="android.colorCorrection.mode"
        kind="controls"></clone>
      </dynamic>
    </section>
    <section name="control">
      <controls>
        <entry name="aeAntibandingMode" type="enum">
          <enum>
            <value>ANTIBANDING_OFF</value>
            <value>ANTIBANDING_50HZ</value>
            <value>ANTIBANDING_60HZ</value>
            <value>ANTIBANDING_AUTO</value>
          </enum>
          <description>Enum for controlling
          antibanding</description>
          <range>
          android.control.aeAvailableAntibandingModes</range>
        </entry>
        <entry name="aeExposureCompensation" type="int32">
          <description>Adjustment to AE target image
          brightness</description>
          <units>count of positive/negative EV steps</units>
          <notes>For example, if EV step is 0.333, '6' will mean an
          exposure compensation of +2 EV; -3 will mean an exposure
          compensation of -1</notes>
          <tag id="BC" />
        </entry>
        <entry name="aeLock" type="enum">
          <enum>
            <value>ON
            <notes>Autoexposure lock is enabled; the AE algorithm
            must not update the exposure and sensitivity parameters
            while the lock is active</notes></value>
            <value>OFF
            <notes>Autoexposure lock is disabled; the AE algorithm
            is free to update its parameters.</notes></value>
          </enum>
          <description>Whether AE is currently locked to its latest
          calculated values</description>
          <notes>Note that even when AE is locked, the flash may be
          fired if the AE mode is ON_AUTO_FLASH / ON_ALWAYS_FLASH /
          ON_AUTO_FLASH_REDEYE.</notes>
          <tag id="BC" />
        </entry>
        <entry name="aeMode" type="enum">
          <enum>
            <value>OFF
            <notes>Autoexposure is disabled; sensor.exposureTime
            and sensor.sensitivity are used</notes></value>
            <value>ON
            <notes>Autoexposure is active, no flash
            control</notes></value>
            <value>ON_AUTO_FLASH
            <notes>if flash exists Autoexposure is active, auto
            flash control; flash may be fired when precapture
            trigger is activated, and for captures for which
            captureIntent = STILL_CAPTURE</notes></value>
            <value>ON_ALWAYS_FLASH
            <notes>if flash exists Autoexposure is active, auto
            flash control for precapture trigger and always flash
            when captureIntent = STILL_CAPTURE</notes></value>
            <value>ON_AUTO_FLASH_REDEYE
            <notes>optional Automatic red eye reduction with flash.
            If deemed necessary, red eye reduction sequence should
            fire when precapture trigger is activated, and final
            flash should fire when captureIntent =
            STILL_CAPTURE</notes></value>
          </enum>
          <description>Whether AE is currently updating the sensor
          exposure and sensitivity fields</description>
          <range>android.control.aeAvailableModes</range>
          <notes>Only effective if android.control.mode =
          AUTO</notes>
          <tag id="BC" />
        </entry>
        <entry name="aeRegions" type="int32" container="array">
          <array>
            <size>5</size>
            <size>area_count</size>
          </array>
          <description>List of areas to use for
          metering</description>
          <notes>Each area is a rectangle plus weight: xmin, ymin,
          xmax, ymax, weight. The coordinate system is based on the
          active pixel array, with (0,0) being the top-left of the
          active pixel array, and
          (android.sensor.info.activeArraySize.width,
          android.sensor.info.activeArraySize.height) being the
          bottom-right point of the active pixel array. The weight
          should be nonnegative. If all regions have 0 weight, then
          no specific metering area needs to be used by the HAL. If
          the metering region is outside the current
          android.scaler.cropRegion, the HAL should ignore the
          sections outside the region and output the used sections
          in the frame metadata</notes>
          <tag id="BC" />
        </entry>
        <entry name="aeTargetFpsRange" type="int32"
        container="array">
          <array>
            <size>2</size>
          </array>
          <description>Range over which fps can be adjusted to
          maintain exposure</description>
          <range>android.control.aeAvailableTargetFpsRanges</range>
          <notes>Only constrains AE algorithm, not manual control
          of android.sensor.exposureTime</notes>
          <tag id="BC" />
        </entry>
        <entry name="afMode" type="enum">
          <enum>
            <value>OFF
            <notes>The 3A routines do not control the lens;
            android.lens.focusPosition is controlled by the
            application</notes></value>
            <value>AUTO
            <notes>if lens is not fixed focus. Use
            android.lens.minimumFocusDistance to determine if lens
            is fixed focus In this mode, the lens does not move
            unless the autofocus trigger action is called. When
            that trigger is activated, AF must transition to
            ACTIVE_SCAN, then to the outcome of the scan (FOCUSED
            or NOT_FOCUSED). Triggering cancel AF resets the lens
            position to default, and sets the AF state to
            INACTIVE.</notes></value>
            <value>MACRO
            <notes>In this mode, the lens does not move unless the
            autofocus trigger action is called. When that trigger
            is activated, AF must transition to ACTIVE_SCAN, then
            to the outcome of the scan (FOCUSED or NOT_FOCUSED).
            Triggering cancel AF resets the lens position to
            default, and sets the AF state to
            INACTIVE.</notes></value>
            <value>CONTINUOUS_VIDEO
            <notes>In this mode, the AF algorithm modifies the lens
            position continually to attempt to provide a
            constantly-in-focus image stream. The focusing behavior
            should be suitable for good quality video recording;
            typically this means slower focus movement and no
            overshoots. When the AF trigger is not involved, the AF
            algorithm should start in INACTIVE state, and then
            transition into PASSIVE_SCAN and PASSIVE_FOCUSED states
            as appropriate. When the AF trigger is activated, the
            algorithm should immediately transition into AF_FOCUSED
            or AF_NOT_FOCUSED as appropriate, and lock the lens
            position until a cancel AF trigger is received. Once
            cancel is received, the algorithm should transition
            back to INACTIVE and resume passive scan. Note that
            this behavior is not identical to CONTINUOUS_PICTURE,
            since an ongoing PASSIVE_SCAN must immediately be
            canceled.</notes></value>
            <value>CONTINUOUS_PICTURE
            <notes>In this mode, the AF algorithm modifies the lens
            position continually to attempt to provide a
            constantly-in-focus image stream. The focusing behavior
            should be suitable for still image capture; typically
            this means focusing as fast as possible. When the AF
            trigger is not involved, the AF algorithm should start
            in INACTIVE state, and then transition into
            PASSIVE_SCAN and PASSIVE_FOCUSED states as appropriate
            as it attempts to maintain focus. When the AF trigger
            is activated, the algorithm should finish its
            PASSIVE_SCAN if active, and then transition into
            AF_FOCUSED or AF_NOT_FOCUSED as appropriate, and lock
            the lens position until a cancel AF trigger is
            received. When the AF cancel trigger is activated, the
            algorithm should transition back to INACTIVE and then
            act as if it has just been started.</notes></value>
            <value>EDOF
            <notes>Extended depth of field (digital focus). AF
            trigger is ignored, AF state should always be
            INACTIVE.</notes></value>
          </enum>
          <description>Whether AF is currently enabled, and what
          mode it is set to</description>
          <tag id="BC" />
        </entry>
        <entry name="afRegions" type="int32" container="array">
          <array>
            <size>5</size>
            <size>area_count</size>
          </array>
          <description>List of areas to use for focus
          estimation</description>
          <notes>Each area is a rectangle plus weight: xmin, ymin,
          xmax, ymax, weight. The coordinate system is based on the
          active pixel array, with (0,0) being the top-left of the
          active pixel array, and
          (android.sensor.info.activeArraySize.width,
          android.sensor.info.activeArraySize.height) being the
          bottom-right point of the active pixel array. The weight
          should be nonnegative. If all regions have 0 weight, then
          no specific focus area needs to be used by the HAL. If
          the focusing region is outside the current
          android.scaler.cropRegion, the HAL should ignore the
          sections outside the region and output the used sections
          in the frame metadata</notes>
          <tag id="BC" />
        </entry>
        <entry name="awbLock" type="enum">
          <enum>
            <value>ON
            <notes>Auto-whitebalance lock is enabled; the AWB
            algorithm must not update the exposure and sensitivity
            parameters while the lock is active</notes></value>
            <value>OFF
            <notes>Auto-whitebalance lock is disabled; the AWB
            algorithm is free to update its parameters if in AUTO
            mode.</notes></value>
          </enum>
          <description>Whether AWB is currently locked to its
          latest calculated values</description>
          <notes>Note that AWB lock is only meaningful for AUTO
          mode; in other modes, AWB is already fixed to a specific
          setting</notes>
          <tag id="BC" />
        </entry>
        <entry name="awbMode" type="enum">
          <enum>
            <value>OFF</value>
            <value>AUTO</value>
            <value>INCANDESCENT</value>
            <value>FLUORESCENT</value>
            <value>WARM_FLUORESCENT</value>
            <value>DAYLIGHT</value>
            <value>CLOUDY_DAYLIGHT</value>
            <value>TWILIGHT</value>
            <value>SHADE</value>
          </enum>
          <description>Whether AWB is currently setting the color
          transform fields, and what its illumination target
          is</description>
          <notes>[BC - AWB lock,AWB modes]</notes>
          <tag id="BC" />
          <tag id="AWB" />
        </entry>
        <entry name="awbRegions" type="int32" container="array">
          <array>
            <size>5</size>
            <size>area_count</size>
          </array>
          <description>List of areas to use for illuminant
          estimation</description>
          <notes>Only used in AUTO mode. Each area is a rectangle
          plus weight: xmin, ymin, xmax, ymax, weight. The
          coordinate system is based on the active pixel array,
          with (0,0) being the top-left of the active pixel array,
          and (android.sensor.info.activeArraySize.width,
          android.sensor.info.activeArraySize.height) being the
          bottom-right point of the active pixel array. The weight
          should be nonnegative. If all regions have 0 weight, then
          no specific metering area needs to be used by the HAL. If
          the metering region is outside the current
          android.scaler.cropRegion, the HAL should ignore the
          sections outside the region and output the used sections
          in the frame metadata</notes>
          <tag id="BC" />
        </entry>
        <entry name="captureIntent" type="enum">
          <enum>
            <value>INTENT_CUSTOM
            <notes>This request doesn't fall into the other
            categories. Default to preview-like
            behavior.</notes></value>
            <value>INTENT_PREVIEW
            <notes>This request is for a preview-like usecase. The
            precapture trigger may be used to start off a metering
            w/flash sequence</notes></value>
            <value>INTENT_STILL_CAPTURE
            <notes>This request is for a still capture-type
            usecase.</notes></value>
            <value>INTENT_VIDEO_RECORD
            <notes>This request is for a video recording
            usecase.</notes></value>
            <value>INTENT_VIDEO_SNAPSHOT
            <notes>This request is for a video snapshot (still
            image while recording video) usecase</notes></value>
            <value>INTENT_ZERO_SHUTTER_LAG
            <notes>This request is for a ZSL usecase; the
            application will stream full-resolution images and
            reprocess one or several later for a final
            capture</notes></value>
          </enum>
          <description>Information to 3A routines about the purpose
          of this capture, to help decide optimal 3A
          strategy</description>
          <range>all must be supported</range>
          <notes>Only used if android.control.mode != OFF.</notes>
          <tag id="BC" />
        </entry>
        <entry name="effectMode" type="enum">
          <enum>
            <value>EFFECT_OFF</value>
            <value optional="true">EFFECT_MONO</value>
            <value optional="true">EFFECT_NEGATIVE</value>
            <value optional="true">EFFECT_SOLARIZE</value>
            <value optional="true">EFFECT_SEPIA</value>
            <value optional="true">EFFECT_POSTERIZE</value>
            <value optional="true">EFFECT_WHITEBOARD</value>
            <value optional="true">EFFECT_BLACKBOARD</value>
            <value optional="true">EFFECT_AQUA</value>
          </enum>
          <description>Whether any special color effect is in use.
          Only used if android.control.mode != OFF</description>
          <range>android.control.availableEffects</range>
          <tag id="BC" />
        </entry>
        <entry name="mode" type="enum">
          <enum>
            <value>OFF
            <notes>Full application control of pipeline. All 3A
            routines are disabled, no other settings in
            android.control.* have any effect</notes></value>
            <value>AUTO
            <notes>Use settings for each individual 3A routine.
            Manual control of capture parameters is disabled. All
            controls in android.control.* besides sceneMode take
            effect</notes></value>
            <value>USE_SCENE_MODE
            <notes>Use specific scene mode. Enabling this disables
            control.aeMode, control.awbMode and control.afMode
            controls; the HAL must ignore those settings while
            USE_SCENE_MODE is active (except for FACE_PRIORITY
            scene mode). Other control entries are still active.
            This setting can only be used if availableSceneModes !=
            UNSUPPORTED</notes></value>
          </enum>
          <description>Overall mode of 3A control
          routines</description>
          <range>all must be supported</range>
          <tag id="BC" />
        </entry>
        <entry name="sceneMode" type="enum">
          <enum>
            <value>SCENE_MODE_FACE_PRIORITY
            <notes>if face detection support exists Use face
            detection data to drive 3A routines. If face detection
            statistics are disabled, should still operate correctly
            (but not return face detection statistics to the
            framework). Unlike the other scene modes, aeMode,
            awbMode, and afMode remain active when FACE_PRIORITY is
            set. This is due to compatibility concerns with the old
            camera API</notes></value>
            <value optional="true">SCENE_MODE_ACTION</value>
            <value optional="true">SCENE_MODE_PORTRAIT</value>
            <value optional="true">SCENE_MODE_LANDSCAPE</value>
            <value optional="true">SCENE_MODE_NIGHT</value>
            <value optional="true">
            SCENE_MODE_NIGHT_PORTRAIT</value>
            <value optional="true">SCENE_MODE_THEATRE</value>
            <value optional="true">SCENE_MODE_BEACH</value>
            <value optional="true">SCENE_MODE_SNOW</value>
            <value optional="true">SCENE_MODE_SUNSET</value>
            <value optional="true">SCENE_MODE_STEADYPHOTO</value>
            <value optional="true">SCENE_MODE_FIREWORKS</value>
            <value optional="true">SCENE_MODE_SPORTS</value>
            <value optional="true">SCENE_MODE_PARTY</value>
            <value optional="true">SCENE_MODE_CANDLELIGHT</value>
            <value optional="true">SCENE_MODE_BARCODE</value>
          </enum>
          <description>Which scene mode is active when
          android.control.mode = SCENE_MODE</description>
          <range>android.control.availableSceneModes</range>
          <tag id="BC" />
        </entry>
        <entry name="videoStabilizationMode" type="enum">
          <enum>
            <value>OFF</value>
            <value>ON</value>
          </enum>
          <description>Whether video stabilization is
          active</description>
          <notes>If enabled, video stabilization can modify the
          android.scaler.cropRegion to keep the video stream
          stabilized</notes>
          <tag id="BC" />
        </entry>
      </controls>
      <static>
        <entry name="aeAvailableAntibandingModes" type="byte"
        type_notes="list of enums" container="array">
          <array>
            <size>n</size>
          </array>
          <description>Which set of antibanding modes are
          supported</description>
        </entry>
        <entry name="aeAvailableModes" type="byte"
        type_notes="list of enums" container="array">
          <array>
            <size>n</size>
          </array>
          <description>Which subset of AE modes is
          supported</description>
          <range>OFF, ON must be supported.
          ON_AUTO_FLASH/ON_ALWAYS_FLASH must be supported if flash
          unit is available</range>
        </entry>
        <entry name="aeAvailableTargetFpsRanges" type="int32"
        type_notes="list of pairs of frame rates"
        container="array">
          <array>
            <size>2</size>
            <size>n</size>
          </array>
          <description>List of frame rate ranges supported by the
          AE algorithm/hardware</description>
        </entry>
        <entry name="aeCompensationRange" type="int32"
        container="array">
          <array>
            <size>2</size>
          </array>
          <description>Maximum and minimum exposure compensation
          setting, in counts of
          android.control.aeCompensationStepSize</description>
          <range>At least (-2,2)/(exp compensation step
          size)</range>
          <tag id="BC" />
        </entry>
        <entry name="aeCompensationStep" type="rational">
          <description>Smallest step by which exposure compensation
          can be changed</description>
          <range>&lt;= 1/2</range>
          <tag id="BC" />
        </entry>
        <entry name="afAvailableModes" type="byte"
        type_notes="List of enums" container="array">
          <array>
            <size>n</size>
          </array>
          <description>List of AF modes that can be
          selected</description>
          <range>OFF must be included. AUTO must be supported if
          lens allows for changing focus</range>
          <tag id="BC" />
        </entry>
        <entry name="availableEffects" type="byte"
        type_notes="list of enums" container="array">
          <array>
            <size>n</size>
          </array>
          <description>what subset of the full color effect enum
          list is supported</description>
          <range>OFF must be listed</range>
          <tag id="BC" />
        </entry>
        <entry name="availableSceneModes" type="byte"
        type_notes="list of enums from android.control.sceneMode, plus UNSUPPORTED to indicate no scene modes are supported"
        container="array">
          <array>
            <size>n</size>
          </array>
          <description>what subset of the scene mode enum list is
          supported.</description>
          <range>SCENE_MODE_FACE_PRIORITY must be supported if face
          detection is supported</range>
          <tag id="BC" />
        </entry>
        <entry name="availableVideoStabilizationModes" type="byte"
        type_notes="List of enums." container="array">
          <array>
            <size>n</size>
          </array>
          <description>List of video stabilization modes that can
          be supported</description>
          <range>OFF must be included</range>
          <tag id="BC" />
        </entry>
        <entry name="awbAvailableModes" type="byte">
          <units>List of enums (android.control.awbMode)</units>
          <range>OFF, AUTO must be included</range>
          <tag id="BC" />
        </entry>
        <entry name="maxRegions" type="int32">
          <description>For AE, AWB, and AF, how many individual
          regions can be listed for metering?</description>
          <range>&gt;= 1</range>
          <tag id="BC" />
        </entry>
        <entry name="sceneModeOverrides" type="byte"
        container="array">
          <array>
            <size>3</size>
            <size>lengthavailablescenemodes</size>
          </array>
          <description>List of AE, AWB, and AF modes to use for
          each available scene mode</description>
          <range>For each listed scene mode, lists the aeMode,
          awbMode, and afMode that the HAL wants to use for that
          scene mode. For each entry, the order is {aeMode,
          awbMode, afMode} in order of increasing index</range>
          <notes>When a scene mode is enabled, the HAL is expected
          to override aeMode, awbMode, and afMode with its
          preferred settings for that scene mode. To simplify
          communication with old camera API applications, the
          service wants this override list in the static metadata.
          The order of this list matches that of
          availableSceneModes, with 3 entires for each scene mode.
          The overrides listed for SCENE_MODE_FACE_PRIORITY are
          ignored, since for that mode, the application-set aeMode,
          awbMode, and afMode are used instead, like they are when
          android.control.mode is AUTO. It is recommended that for
          FACE_PRIORITY, the overrides should be set to 0. As an
          example, if availableSceneModes is { FACE_PRIORITY,
          ACTION, NIGHT }, then the service expects this field to
          have 9 entries; for example { 0 , 0, 0, ON_AUTO_FLASH,
          AUTO, CONTINUOUS_PICTURE, ON_AUTO_FLASH, INCANDESCENT,
          AUTO }</notes>
          <tag id="BC" />
        </entry>
      </static>
      <dynamic>
        <entry name="aePrecaptureId" type="int32">
          <description>The ID sent with the latest
          CAMERA2_TRIGGER_PRECAPTURE_METERING call</description>
          <notes>Must be 0 if no
          CAMERA2_TRIGGER_PRECAPTURE_METERING trigger received yet
          by HAL. Always updated even if AE algorithm ignores the
          trigger</notes>
        </entry>
        <clone entry="android.control.aeRegions" kind="controls">
        </clone>
        <entry name="aeState" type="enum">
          <enum>
            <value>INACTIVE
            <notes>AE is off</notes></value>
            <value>SEARCHING
            <notes>AE doesn't yet have a good set of control values
            for the current scene</notes></value>
            <value>CONVERGED
            <notes>AE has a good set of control values for the
            current scene</notes></value>
            <value>LOCKED
            <notes>AE has been locked (aeMode =
            LOCKED)</notes></value>
            <value>FLASH_REQUIRED
            <notes>AE has a good set of control values, but flash
            needs to be fired for good quality still
            capture</notes></value>
            <value>PRECAPTURE
            <notes>AE has been asked to do a precapture sequence
            (through the
            trigger_action(CAMERA2_TRIGGER_PRECAPTURE_METERING)
            call), and is currently executing it. Once PRECAPTURE
            completes, AE will transition to CONVERGED or
            FLASH_REQUIRED as appropriate</notes></value>
          </enum>
          <description>Current state of AE algorithm</description>
          <notes>Whenever the AE algorithm state changes, a
          MSG_AUTOEXPOSURE notification must be send if a
          notification callback is registered.</notes>
        </entry>
        <clone entry="android.control.afMode" kind="controls">
        </clone>
        <clone entry="android.control.afRegions" kind="controls">
        </clone>
        <entry name="afState" type="enum">
          <enum>
            <value>INACTIVE
            <notes>AF off or has not yet tried to scan/been asked
            to scan</notes></value>
            <value>PASSIVE_SCAN
            <notes>if CONTINUOUS_* modes are supported AF is
            currently doing an AF scan initiated by a continuous
            autofocus mode</notes></value>
            <value>PASSIVE_FOCUSED
            <notes>if CONTINUOUS_* modes are supported AF currently
            believes it is in focus, but may restart scanning at
            any time.</notes></value>
            <value>ACTIVE_SCAN
            <notes>if AUTO or MACRO modes are supported AF is doing
            an AF scan because it was triggered by AF
            trigger</notes></value>
            <value>AF_FOCUSED_LOCKED
            <notes>if any AF mode besides OFF is supported AF
            believes it is focused correctly and is
            locked</notes></value>
            <value>AF_NOT_FOCUSED_LOCKED
            <notes>if any AF mode besides OFF is supported AF has
            failed to focus successfully and is
            locked</notes></value>
          </enum>
          <description>Current state of AF algorithm</description>
          <notes>Whenever the AF algorithm state changes, a
          MSG_AUTOFOCUS notification must be send if a notification
          callback is registered.</notes>
        </entry>
        <entry name="afTriggerId" type="int32">
          <description>The ID sent with the latest
          CAMERA2_TRIGGER_AUTOFOCUS call</description>
          <notes>Must be 0 if no CAMERA2_TRIGGER_AUTOFOCUS trigger
          received yet by HAL. Always updated even if AF algorithm
          ignores the trigger</notes>
        </entry>
        <clone entry="android.control.awbMode" kind="controls">
        </clone>
        <clone entry="android.control.awbRegions" kind="controls">
        </clone>
        <entry name="awbState" type="enum">
          <enum>
            <value>INACTIVE
            <notes>AWB is not in auto mode</notes></value>
            <value>SEARCHING
            <notes>AWB doesn't yet have a good set of control
            values for the current scene</notes></value>
            <value>CONVERGED
            <notes>AWB has a good set of control values for the
            current scene</notes></value>
            <value>LOCKED
            <notes>AE has been locked (aeMode =
            LOCKED)</notes></value>
          </enum>
          <description>Current state of AWB algorithm</description>
          <notes>Whenever the AWB algorithm state changes, a
          MSG_AUTOWHITEBALANCE notification must be send if a
          notification callback is registered.</notes>
        </entry>
        <clone entry="android.control.mode" kind="controls">
        </clone>
      </dynamic>
    </section>
    <section name="demosaic">
      <controls>
        <entry name="mode" type="enum">
          <enum>
            <value>FAST
            <notes>Minimal or no slowdown of frame rate compared to
            Bayer RAW output</notes></value>
            <value>HIGH_QUALITY
            <notes>High-quality may reduce output frame
            rate</notes></value>
          </enum>
          <description>Controls the quality of the demosaicing
          processing</description>
          <units>Enum:</units>
          <tag id="V1" />
        </entry>
      </controls>
    </section>
    <section name="edge">
      <controls>
        <entry name="mode" type="enum">
          <enum>
            <value>OFF
            <notes>No edge enhancement is applied</notes></value>
            <value>FAST
            <notes>Must not slow down frame rate relative to raw
            bayer output</notes></value>
            <value>HIGH_QUALITY
            <notes>Frame rate may be reduced by high
            quality</notes></value>
          </enum>
          <description>Operation mode for edge
          enhancement</description>
          <units>enum:</units>
        </entry>
        <entry name="strength" type="byte">
          <description>Control the amount of edge enhancement
          applied to the images</description>
          <units>1-10; 10 is maximum sharpening</units>
        </entry>
      </controls>
      <dynamic>
        <clone entry="android.edge.mode" kind="controls"></clone>
      </dynamic>
    </section>
    <section name="flash">
      <controls>
        <entry name="firingPower" type="byte">
          <description>Power for flash firing/torch</description>
          <units>10 is max power; 0 is no flash. Linear</units>
          <range>0 - 10</range>
          <notes>Power for snapshot may use a different scale than
          for torch mode. Only one entry for torch mode will be
          used</notes>
          <tag id="V1" />
        </entry>
        <entry name="firingTime" type="int64">
          <description>Firing time of flash relative to start of
          exposure</description>
          <units>nanoseconds</units>
          <range>0-(exposure time-flash duration)</range>
          <notes>Clamped to (0, exposure time - flash
          duration).</notes>
          <tag id="V1" />
        </entry>
        <entry name="mode" type="enum">
          <enum>
            <value>OFF
            <notes>Do not fire the flash for this
            capture</notes></value>
            <value>SINGLE
            <notes>if android.flash.available is true Fire flash
            for this capture based on firingPower,
            firingTime.</notes></value>
            <value>TORCH
            <notes>if android.flash.available is true Flash
            continuously on, power set by
            firingPower</notes></value>
          </enum>
          <description>Select flash operation mode</description>
          <units>enum</units>
          <tag id="BC" />
        </entry>
      </controls>
      <static>
        <namespace name="info">
          <entry name="available" type="byte">
            <description>Whether this camera has a
            flash</description>
            <units>boolean (0 = false, otherwise true)</units>
            <notes>If no flash, none of the flash controls do
            anything. All other metadata should return 0</notes>
            <tag id="BC" />
          </entry>
          <entry name="chargeDuration" type="int64">
            <description>Time taken before flash can fire
            again</description>
            <units>nanoseconds</units>
            <range>0-1e9</range>
            <notes>1 second too long/too short for recharge? Should
            this be power-dependent?</notes>
            <tag id="V1" />
          </entry>
        </namespace>
        <entry name="colorTemperature" type="byte">
          <description>The x,y whitepoint of the
          flash</description>
          <units>pair of floats</units>
          <range>0-1 for both</range>
          <tag id="ADV" />
        </entry>
        <entry name="maxEnergy" type="byte">
          <description>Max energy output of the flash for a full
          power single flash</description>
          <units>lumen-seconds</units>
          <range>&gt;= 0</range>
          <tag id="ADV" />
        </entry>
      </static>
      <dynamic>
        <clone entry="android.flash.firingPower" kind="controls">
        </clone>
        <clone entry="android.flash.firingTime" kind="controls">
        </clone>
        <clone entry="android.flash.mode" kind="controls"></clone>
        <entry name="state" type="enum">
          <enum>
            <value>UNAVAILABLE
            <notes>No flash on camera</notes></value>
            <value>CHARGING
            <notes>if android.flash.available is true Flash is
            charging and cannot be fired</notes></value>
            <value>READY
            <notes>if android.flash.available is true Flash is
            ready to fire</notes></value>
            <value>FIRED
            <notes>if android.flash.available is true Flash fired
            for this capture</notes></value>
          </enum>
          <description>Current state of the flash
          unit</description>
          <units>enum</units>
        </entry>
      </dynamic>
    </section>
    <section name="geometric">
      <controls>
        <entry name="mode" type="enum">
          <enum>
            <value>OFF
            <notes>No geometric correction is
            applied</notes></value>
            <value>FAST
            <notes>Must not slow down frame rate relative to raw
            bayer output</notes></value>
            <value>HIGH_QUALITY
            <notes>Frame rate may be reduced by high
            quality</notes></value>
          </enum>
          <description>Operating mode of geometric
          correction</description>
          <units>enum:</units>
        </entry>
        <entry name="strength" type="byte">
          <description>Control the amount of shading correction
          applied to the images</description>
          <units>unitless: 1-10; 10 is full shading
          compensation</units>
          <tag id="ADV" />
        </entry>
      </controls>
    </section>
    <section name="hotPIxel">
      <static>
        <namespace name="info">
          <entry name="map" type="int32"
          type_notes="list of coordinates based on android.sensor.pixelArraySize"
          container="array">
            <array>
              <size>2</size>
              <size>n</size>
            </array>
            <description>Location of hot/defective pixels on
            sensor</description>
            <tag id="ADV" />
          </entry>
        </namespace>
      </static>
    </section>
    <section name="hotPixel">
      <controls>
        <entry name="mode" type="enum">
          <enum>
            <value>OFF
            <notes>No hot pixel correction can be
            applied</notes></value>
            <value>FAST
            <notes>Frame rate must not be reduced compared to raw
            Bayer output</notes></value>
            <value>HIGH_QUALITY
            <notes>Frame rate may be reduced by high
            quality</notes></value>
          </enum>
          <description>Set operational mode for hot pixel
          correction</description>
          <units>Enum:</units>
          <tag id="V1" />
        </entry>
      </controls>
      <dynamic>
        <clone entry="android.hotPixel.mode" kind="controls">
          <tag id="V1" />
        </clone>
      </dynamic>
    </section>
    <section name="jpeg">
      <controls>
        <entry name="gpsCoordinates" type="double"
        type_notes="latitude, longitude, altitude. First two in degrees, the third in meters"
        container="array">
          <array>
            <size>3</size>
          </array>
          <description>GPS coordinates to include in output JPEG
          EXIF</description>
          <range>(-180 - 180], [-90,90], [-inf, inf]</range>
          <tag id="BC" />
        </entry>
        <entry name="gpsProcessingMethod" type="byte">
          <description>32 characters describing GPS algorithm to
          include in EXIF</description>
          <units>UTF-8 null-terminated string</units>
          <tag id="BC" />
        </entry>
        <entry name="gpsTimestamp" type="int64">
          <description>Time GPS fix was made to include in
          EXIF</description>
          <units>UTC in seconds since January 1, 1970</units>
          <tag id="BC" />
        </entry>
        <entry name="orientation" type="int32">
          <description>Orientation of JPEG image to
          write</description>
          <units>Degrees in multiples of 90</units>
          <range>0, 90, 180, 270</range>
          <tag id="BC" />
        </entry>
        <entry name="quality" type="byte">
          <description>Compression quality of the final JPEG
          image</description>
          <range>1-100; larger is higher quality</range>
          <notes>85-95 is typical usage range</notes>
          <tag id="BC" />
        </entry>
        <entry name="thumbnailQuality" type="byte">
          <description>Compression quality of JPEG
          thumbnail</description>
          <range>1-100; larger is higher quality</range>
          <tag id="BC" />
        </entry>
        <entry name="thumbnailSize" type="int32" container="array">
          <array>
            <size>2</size>
          </array>
          <description>Resolution of embedded JPEG
          thumbnail</description>
          <range>from android.jpeg.availableThumbnailSizes</range>
          <tag id="BC" />
        </entry>
      </controls>
      <static>
        <entry name="availableThumbnailSizes" type="int32"
        type_notes="list of resolution pairs" container="array">
          <array>
            <size>2</size>
            <size>n</size>
          </array>
          <description>Supported resolutions for the JPEG
          thumbnail</description>
          <range>Must include at least one valid resolution, plus
          (0,0) for no thumbnail generation</range>
          <tag id="BC" />
        </entry>
        <entry name="maxSize" type="int32">
          <description>Maximum size in bytes for the compressed
          JPEG buffer</description>
          <range>Must be large enough to fit any JPEG produced by
          the camera</range>
          <notes>This is used for sizing the gralloc buffers for
          JPEG</notes>
        </entry>
      </static>
      <dynamic>
        <clone entry="android.jpeg.gpsCoordinates" kind="controls">
        </clone>
        <clone entry="android.jpeg.gpsProcessingMethod"
        kind="controls"></clone>
        <clone entry="android.jpeg.gpsTimestamp" kind="controls">
        </clone>
        <clone entry="android.jpeg.orientation" kind="controls">
        </clone>
        <clone entry="android.jpeg.quality" kind="controls">
        </clone>
        <entry name="size" type="int32">
          <description>The size of the compressed JPEG image, in
          bytes</description>
          <range>&gt;= 0</range>
          <notes>If no JPEG output is produced for the request,
          this must be 0. Otherwise, this describes the real size
          of the compressed JPEG image placed in the output stream.
          More specifically, if android.jpeg.maxSize = 1000000, and
          a specific capture has android.jpeg.size = 500000, then
          the output buffer from the JPEG stream will be 1000000
          bytes, of which the first 500000 make up the real
          data.</notes>
        </entry>
        <clone entry="android.jpeg.thumbnailQuality"
        kind="controls"></clone>
        <clone entry="android.jpeg.thumbnailSize" kind="controls">
        </clone>
      </dynamic>
    </section>
    <section name="lens">
      <controls>
        <entry name="aperture" type="float">
          <description>Size of the lens aperture</description>
          <units>f-number (f/NNN)</units>
          <range>android.lens.info.availableApertures</range>
          <notes>Will not be supported on most devices. Can only
          pick from supported list</notes>
          <tag id="V1" />
        </entry>
        <entry name="filterDensity" type="float">
          <description>State of lens neutral density
          filter(s)</description>
          <units>number of stops of filtering</units>
          <range>android.lens.info.availableFilterDensities</range>
          <notes>Will not be supported on most devices. Can only
          pick from supported list</notes>
          <tag id="V1" />
        </entry>
        <entry name="focalLength" type="float">
          <description>Lens optical zoom setting</description>
          <units>focal length in mm</units>
          <range>&gt; 0</range>
          <notes>Will not be supported on most devices.</notes>
          <tag id="V1" />
        </entry>
        <entry name="focusDistance" type="float">
          <description>Distance to plane of sharpest focus,
          measured from frontmost surface of the lens</description>
          <units>diopters (1/m)</units>
          <range>&gt;= 0</range>
          <notes>0 = infinity focus. Used value should be clamped
          to (0,minimum focus distance)</notes>
          <tag id="BC" />
          <tag id="V1" />
        </entry>
        <entry name="opticalStabilizationMode" type="enum">
          <enum>
            <value>OFF</value>
            <value optional="true">ON</value>
          </enum>
          <description>Whether optical image stabilization is
          enabled.</description>
          <units>enum</units>
          <range>android.lens.availableOpticalStabilization</range>
          <notes>Will not be supported on most devices.</notes>
          <tag id="V1" />
        </entry>
      </controls>
      <static>
        <namespace name="info">
          <entry name="availableApertures" type="float"
          container="array">
            <array>
              <size>n</size>
            </array>
            <description>List of supported aperture
            values</description>
            <range>one entry required, &gt; 0</range>
            <notes>If variable aperture not available, only setting
            should be for the fixed aperture</notes>
            <tag id="V1" />
          </entry>
          <entry name="availableFilterDensities" type="float"
          container="array">
            <array>
              <size>n</size>
            </array>
            <description>List of supported ND filter
            values</description>
            <range>one entry required, &gt;= 0</range>
            <notes>If not available, only setting is 0. Otherwise,
            lists the available exposure index values for dimming
            (2 would mean the filter is set to reduce incoming
            light by two stops)</notes>
            <tag id="V1" />
          </entry>
          <entry name="availableFocalLengths" type="float"
          type_notes="the list of available focal lengths"
          container="array">
            <array>
              <size>n</size>
            </array>
            <description>If fitted with optical zoom, what focal
            lengths are available. If not, the static focal
            length</description>
            <range>&gt; 0</range>
            <notes>If optical zoom not supported, only one value
            should be reported</notes>
            <tag id="BC" />
            <tag id="V1" />
          </entry>
          <entry name="availableOpticalStabilization" type="byte"
          type_notes="list of enums" container="array">
            <array>
              <size>n</size>
            </array>
            <description>List of supported optical image
            stabilization modes</description>
            <tag id="V1" />
          </entry>
          <entry name="geometricCorrectionMap" type="float"
          type_notes="2D array of destination coordinate pairs for uniform grid points in source image, per color channel. Size in the range of 2x3x40x30"
          container="array">
            <array>
              <size>2</size>
              <size>3</size>
              <size>n</size>
              <size>m</size>
            </array>
            <description>A low-resolution map for correction of
            geometric distortions and chromatic aberrations, per
            color channel</description>
            <range>N, M &gt;= 2</range>
            <notes>[DNG wants a function instead]. What's easiest
            for implementers? With an array size (M, N), entry (i,
            j) provides the destination for pixel (i/(M-1) * width,
            j/(N-1) * height). Data is row-major, with each array
            entry being ( (X, Y)_r, (X, Y)_g, (X, Y)_b ) )</notes>
            <tag id="DNG" />
          </entry>
          <entry name="geometricCorrectionMapSize" type="int32"
          type_notes="width and height of geometric correction map"
          container="array">
            <array>
              <size>2</size>
            </array>
            <description>Dimensions of geometric correction
            map</description>
            <range>Both values &gt;= 2</range>
            <tag id="V1" />
          </entry>
          <entry name="hyperfocalDistance" type="float">
            <description>Hyperfocal distance for this lens; set to
            0 if fixed focus</description>
            <units>diopters</units>
            <range>&gt;= 0</range>
            <notes>The hyperfocal distance is used for the old
            API's 'fixed' setting</notes>
            <tag id="BC" />
          </entry>
          <entry name="minimumFocusDistance" type="float">
            <description>Shortest distance from frontmost surface
            of the lens that can be focused correctly</description>
            <units>diopters</units>
            <range>&gt;= 0</range>
            <notes>If the lens is fixed-focus, this should be
            0</notes>
            <tag id="V1" />
          </entry>
          <entry name="shadingMap" type="float"
          type_notes="2D array of float gain factors per channel to correct for lens falloff. Should be on the order of 3x40x30"
          container="array">
            <array>
              <size>3</size>
              <size>n</size>
              <size>m</size>
            </array>
            <description>A low-resolution map of lens shading, per
            color channel</description>
            <range>Each gain factor is &gt;= 1</range>
            <notes>Assume bilinear interpolation of map. The least
            shaded section of the image should have a gain factor
            of 1; all other sections should have gains above
            1.</notes>
            <tag id="DNG" />
          </entry>
          <entry name="shadingMapSize" type="int32"
          type_notes="width and height of lens shading map"
          container="array">
            <array>
              <size>2</size>
            </array>
            <description>Dimensions of lens shading
            map</description>
            <range>Both values &gt;= 1</range>
            <tag id="V1" />
          </entry>
        </namespace>
        <entry name="facing" type="enum">
          <enum>
            <value>FACING_FRONT</value>
            <value>FACING_BACK</value>
          </enum>
          <description>Direction the camera faces relative to
          device screen</description>
          <units>enum</units>
          <notes>}</notes>
        </entry>
        <entry name="opticalAxisAngle" type="float"
        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."
        container="array">
          <array>
            <size>2</size>
          </array>
          <description>Relative angle of camera optical axis to the
          perpendicular axis from the display</description>
          <range>[0-90) for first angle, [0-360) for second</range>
          <notes>Examples: (0,0) means that the camera optical axis
          is perpendicular to the display surface; (45,0) means
          that the camera points 45 degrees up when device is held
          upright; (45,90) means the camera points 45 degrees to
          the right when the device is held upright. Use FACING
          field to determine perpendicular outgoing
          direction</notes>
          <tag id="ADV" />
        </entry>
        <entry name="position" type="float" container="array">
          <array>
            <size>3, location in mm, in the sensor coordinate
            system</size>
          </array>
          <description>Coordinates of camera optical axis on
          device</description>
          <tag id="V1" />
        </entry>
      </static>
      <dynamic>
        <clone entry="android.lens.aperture" kind="controls">
          <tag id="V1" />
        </clone>
        <clone entry="android.lens.filterDensity" kind="controls">
          <tag id="V1" />
        </clone>
        <clone entry="android.lens.focalLength" kind="controls">
          <tag id="BC" />
        </clone>
        <clone entry="android.lens.focusDistance" kind="controls">
          <notes>Should be zero for fixed-focus cameras</notes>
          <tag id="BC" />
        </clone>
        <entry name="focusRange" type="float">
          <description>The range of scene distances that are in
          sharp focus (depth of field)</description>
          <units>pair of focus distances in diopters: (near,
          far)</units>
          <range>&gt;=0</range>
          <notes>If variable focus not supported, can still report
          fixed depth of field range</notes>
          <tag id="BC" />
        </entry>
        <clone entry="android.lens.opticalStabilizationMode"
        kind="controls">
          <tag id="V1" />
        </clone>
        <entry name="state" type="enum">
          <enum>
            <value>STATIONARY</value>
          </enum>
          <description>Current lens status</description>
          <tag id="V1" />
        </entry>
      </dynamic>
    </section>
    <section name="noiseReduction">
      <controls>
        <entry name="mode" type="enum">
          <enum>
            <value>OFF
            <notes>No noise reduction is applied</notes></value>
            <value>FAST
            <notes>Must not slow down frame rate relative to raw
            bayer output</notes></value>
            <value>HIGH_QUALITY
            <notes>May slow down frame rate to provide highest
            quality</notes></value>
          </enum>
          <description>Mode of operation for the noise reduction
          algorithm</description>
          <units>enum:</units>
          <range>android.noiseReduction.availableModes</range>
          <tag id="V1" />
        </entry>
        <entry name="strength" type="byte">
          <description>Control the amount of noise reduction
          applied to the images</description>
          <units>1-10; 10 is max noise reduction</units>
          <range>1 - 10</range>
        </entry>
      </controls>
      <dynamic>
        <clone entry="android.noiseReduction.mode" kind="controls">
        </clone>
      </dynamic>
    </section>
    <section name="quirks">
      <static>
        <entry name="meteringCropRegion" type="byte">
          <description>If set to 1, the camera service does not
          scale 'normalized' coordinates with respect to the crop
          region. This applies to metering input (a{e,f,wb}Region
          and output (face rectangles).</description>
          <notes>Normalized coordinates refer to those in the
          (-1000,1000) range mentioned in the
          android.hardware.Camera API. HAL implementations should
          instead always use and emit sensor array-relative
          coordinates for all region data. Does not need to be
          listed in static metadata. Support will be removed in
          future versions of camera service.</notes>
        </entry>
        <entry name="triggerAfWithAuto" type="byte">
          <description>If set to 1, then the camera service always
          switches to FOCUS_MODE_AUTO before issuing a AF
          trigger.</description>
          <notes>HAL implementations should implement AF trigger
          modes for AUTO, MACRO, CONTINUOUS_FOCUS, and
          CONTINUOUS_PICTURE modes instead of using this flag. Does
          not need to be listed in static metadata. Support will be
          removed in future versions of camera service</notes>
        </entry>
        <entry name="useZslFormat" type="byte">
          <description>If set to 1, the camera service uses
          CAMERA2_PIXEL_FORMAT_ZSL instead of
          HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED for the zero
          shutter lag stream</description>
          <notes>HAL implementations should use gralloc usage flags
          to determine that a stream will be used for
          zero-shutter-lag, instead of relying on an explicit
          format setting. Does not need to be listed in static
          metadata. Support will be removed in future versions of
          camera service.</notes>
        </entry>
      </static>
    </section>
    <section name="request">
      <controls>
        <entry name="frameCount" type="int32">
          <description>A frame counter set by the framework. Must
          be maintained unchanged in output frame</description>
          <units>incrementing integer</units>
          <range>Any int</range>
        </entry>
        <entry name="id" type="int32">
          <description>An application-specified ID for the current
          request. Must be maintained unchanged in output
          frame</description>
          <units>arbitrary integer assigned by application</units>
          <range>Any int</range>
          <tag id="V1" />
        </entry>
        <entry name="inputStreams" type="byte">
          <description>List which camera reprocess stream is used
          for the source of reprocessing data.</description>
          <units>List of camera reprocess stream IDs</units>
          <range>Typically, only one entry allowed, must be a valid
          reprocess stream ID. If android.jpeg.needsThumbnail is
          set, then multiple reprocess streams may be included in a
          single request; they must be different scaled versions of
          the same image.</range>
          <notes>Only meaningful when android.request.type ==
          REPROCESS. Ignored otherwise</notes>
        </entry>
        <entry name="metadataMode" type="enum">
          <enum>
            <value>NONE
            <notes>No metadata should be produced on output, except
            for application-bound buffer data. If no
            application-bound streams exist, no frame should be
            placed in the output frame queue. If such streams
            exist, a frame should be placed on the output queue
            with null metadata but with the necessary output buffer
            information. Timestamp information should still be
            included with any output stream buffers</notes></value>
            <value>FULL
            <notes>All metadata should be produced. Statistics will
            only be produced if they are separately
            enabled</notes></value>
          </enum>
          <description>How much metadata to produce on
          output</description>
          <units>Enum:</units>
        </entry>
        <entry name="outputStreams" type="byte">
          <description>Lists which camera output streams image data
          from this capture must be sent to</description>
          <units>List of camera stream IDs</units>
          <range>List must only include streams that have been
          created</range>
          <notes>If no output streams are listed, then the image
          data should simply be discarded. The image data must
          still be captured for metadata and statistics production,
          and the lens and flash must operate as requested.</notes>
        </entry>
        <entry name="type" type="enum">
          <enum>
            <value>CAPTURE
            <notes>Capture a new image from the imaging hardware,
            and process it according to the
            settings</notes></value>
            <value>REPROCESS
            <notes>Process previously captured data; the
            android.request.inputStream parameter determines the
            source reprocessing stream. TODO: Mark dynamic metadata
            needed for reprocessing with [RP]</notes></value>
          </enum>
          <description>The type of the request; either CAPTURE or
          REPROCESS</description>
          <units>Enum:</units>
        </entry>
      </controls>
      <static>
        <entry name="maxNumOutputStreams" type="int32"
        container="array">
          <array>
            <size>3</size>
          </array>
          <description>How many output streams can be allocated at
          the same time for each type of stream</description>
          <units>The number of raw sensor streams; the number of
          processed, uncompressed streams; and the number of
          JPEG-compressed streams</units>
          <range>&gt;=1 for Raw and JPEG-compressed stream. &gt;= 3
          for processed, uncompressed streams</range>
          <notes>Video snapshot with preview callbacks requires 3
          processed streams (preview, record, app callbacks) and
          one JPEG stream (snapshot)</notes>
          <tag id="BC" />
        </entry>
        <entry name="maxNumReprocessStreams" type="int32"
        container="array">
          <array>
            <size>1</size>
          </array>
          <description>How many reprocessing streams of any type
          can be allocated at the same time</description>
          <range>&gt;= 1</range>
        </entry>
      </static>
      <dynamic>
        <entry name="frameCount" type="int32">
          <description>Number of frames captured since
          open()</description>
          <units>count of frames</units>
          <range>&gt; 0</range>
          <notes>Reset on release()</notes>
        </entry>
        <clone entry="android.request.id" kind="controls"></clone>
        <clone entry="android.request.metadataMode"
        kind="controls"></clone>
        <clone entry="android.request.outputStreams"
        kind="controls"></clone>
      </dynamic>
    </section>
    <section name="scaler">
      <controls>
        <entry name="cropRegion" type="int32" container="array">
          <array>
            <size>3</size>
          </array>
          <description>Top-left corner and width of the output
          region to select from the active pixel
          array</description>
          <units>(x,y) of top-left corner, width of region in
          pixels; (0,0) is top-left corner of
          android.sensor.activePixelArray</units>
          <notes>[BC - zoom] Height determined based on width and
          aspect ratio of output stream. Negative values for corner
          are allowed for raw output if full pixel array is larger
          than active pixel array. Width may be rounded to nearest
          larger supportable width, especially for raw output,
          where only a few fixed scales may be possible</notes>
          <tag id="BC" />
        </entry>
      </controls>
      <static>
        <entry name="availableFormats" type="enum"
        type_notes="values from HAL_PIXEL_FORMAT_* in /system/core/include/system/graphics.h"
        container="array">
          <array>
            <size>n</size>
          </array>
          <enum>
            <value id="0x20">RAW_SENSOR
            </value>
            <value id="0x32315659">YV12
                <notes>YCrCb 4:2:0 Planar</notes>
            </value>
            <value id="0x11">YCbCr_420_SP
                <notes>NV21</notes>
            </value>
            <value id="0x21">JPEG
                <notes>BLOB</notes>
            </value>
          </enum>
          <description>List of app-visible formats</description>
          <tag id="BC" />
        </entry>
        <entry name="availableJpegMinDurations" type="int64"
        container="array">
          <array>
            <size>n</size>
          </array>
          <description>The minimum frame duration that is supported
          for each resolution in availableJpegSizes. Should
          correspond to the frame duration when only that JPEG
          stream is active, with all processing set to
          FAST</description>
          <notes>When multiple streams are configured, the minimum
          frame duration will be &gt;= max(individual stream min
          durations)</notes>
          <tag id="BC" />
        </entry>
        <entry name="availableJpegSizes" type="int32"
        container="array">
          <array>
            <size>n</size>
            <size>2</size>
          </array>
          <description>The resolutions available for output from
          the JPEG block. Listed as width x height</description>
          <range>Must include: - sensor maximum resolution Should
          include: - half/quarter max resolution</range>
          <tag id="BC" />
        </entry>
        <entry name="availableProcessedMinDurations" type="int64"
        container="array">
          <array>
            <size>n</size>
          </array>
          <description>The minimum frame duration that is supported
          for each resolution in availableProcessedSizes. Should
          correspond to the frame duration when only that processed
          stream is active, with all processing set to
          FAST</description>
          <notes>When multiple streams are configured, the minimum
          frame duration will be &gt;= max(individual stream min
          durations)</notes>
          <tag id="BC" />
        </entry>
        <entry name="availableProcessedSizes" type="int32"
        container="array">
          <array>
            <size>n</size>
            <size>2</size>
          </array>
          <description>The resolutions available for use with
          processed output streams, such as YV12, NV12, and
          platform opaque YUV/RGB streams to the GPU or video
          encoders. Listed as width, height</description>
          <range>Must include: - sensor maximum resolution -
          standard QCIF, 240p, 480p, 720p, and 1080p
          resolutions</range>
          <tag id="BC" />
        </entry>
        <entry name="availableRawMinDurations" type="int64"
        container="array">
          <array>
            <size>n</size>
          </array>
          <description>The minimum frame duration that is supported
          for each raw resolution in availableRawSizes. Should
          correspond to the frame duration when only the raw stream
          is active.</description>
          <notes>When multiple streams are configured, the minimum
          frame duration will be &gt;= max(individual stream min
          durations)</notes>
          <tag id="BC" />
        </entry>
        <entry name="availableRawSizes" type="int32"
        container="array">
          <array>
            <size>n</size>
            <size>2</size>
          </array>
          <description>The resolutions available for use with raw
          sensor output streams, listed as width,
          height</description>
          <range>Must include: - sensor maximum resolution</range>
        </entry>
        <entry name="maxDigitalZoom" type="float">
          <description>The maximum ratio between active area width
          and crop region width, or between active area height and
          crop region height, if the crop region height is larger
          than width</description>
          <range>&gt;=1</range>
          <tag id="BC" />
        </entry>
      </static>
      <dynamic>
        <clone entry="android.scaler.cropRegion" kind="controls">
        </clone>
      </dynamic>
    </section>
    <section name="sensor">
      <controls>
        <entry name="exposureTime" type="int64">
          <description>Duration each pixel is exposed to
          light</description>
          <units>nanoseconds</units>
          <range>android.sensor.info.exposureTimeRange</range>
          <notes>1/10000 - 30 sec range. No bulb mode</notes>
          <tag id="V1" />
        </entry>
        <entry name="frameDuration" type="int64">
          <description>Duration from start of frame exposure to
          start of next frame exposure</description>
          <units>nanoseconds</units>
          <range>see android.sensor.info.maxFrameDuration,
          android.scaler.info.availableMinFrameDurations</range>
          <notes>Exposure time has priority, so duration is set to
          max(duration, exposure time + overhead)</notes>
          <tag id="V1" />
          <tag id="BC" />
        </entry>
        <entry name="sensitivity" type="int32">
          <description>Gain applied to image data. Must be
          implemented through analog gain only if set to values
          below 'maximum analog sensitivity'.</description>
          <units>ISO arithmetic units</units>
          <range>android.sensor.info.sensitivityRange</range>
          <notes>ISO 12232:2006 REI method</notes>
          <tag id="V1" />
        </entry>
      </controls>
      <static>
        <namespace name="info">
          <entry name="activeArraySize" type="int32"
          type_notes="Four ints defining the active pixel rectangle"
          container="array">
            <array>
              <size>4</size>
            </array>
            <description>Area of raw data which corresponds to only
            active pixels; smaller or equal to
            pixelArraySize.</description>
            <units>xmin, ymin, width, height. Top left of full
            pixel array is (0,0)</units>
            <tag id="DNG" />
          </entry>
          <entry name="availableSensitivities" type="int32"
          type_notes="List of supported sensitivity values"
          container="array">
            <array>
              <size>n</size>
            </array>
            <description>Range of valid sensitivities</description>
            <range>Must at least include 100, 200, 400, 800,
            1600</range>
            <tag id="BC" />
            <tag id="V1" />
          </entry>
          <entry name="colorFilterArrangement" type="enum">
            <enum>
              <value>RGGB</value>
              <value>GRBG</value>
              <value>GBRG</value>
              <value>BGGR</value>
              <value>RGB
              <notes>Sensor is not Bayer; output has 3 16-bit
              values for each pixel, instead of just 1 16-bit value
              per pixel.</notes></value>
            </enum>
            <description>Arrangement of color filters on sensor;
            represents the colors in the top-left 2x2 section of
            the sensor, in reading order</description>
            <tag id="DNG" />
          </entry>
          <entry name="exposureTimeRange" type="int64"
          type_notes="nanoseconds" container="array">
            <array>
              <size>2</size>
            </array>
            <description>Range of valid exposure
            times</description>
            <range>Min &lt;= 100e3 (100 us), Max &gt;= 30e9 (30
            sec)</range>
            <tag id="V1" />
          </entry>
          <entry name="maxFrameDuration" type="int64">
            <description>Maximum frame duration (minimum frame
            rate)</description>
            <units>nanoseconds</units>
            <range>&gt;= 30e9</range>
            <notes>Minimum duration is a function of resolution,
            processing settings. See
            android.scaler.info.availableMinFrameDurations</notes>
            <tag id="BC" />
            <tag id="V1" />
          </entry>
          <entry name="physicalSize" type="float"
          type_notes="width x height in millimeters"
          container="array">
            <array>
              <size>2</size>
            </array>
            <description>The physical dimensions of the full pixel
            array</description>
            <notes>Needed for FOV calculation for old API</notes>
            <tag id="V1" />
            <tag id="BC" />
          </entry>
          <entry name="pixelArraySize" type="int32"
          container="array">
            <array>
              <size>2</size>
            </array>
            <description>Dimensions of full pixel array, possibly
            including black calibration pixels</description>
            <notes>Maximum output resolution for raw format must
            match this in
            android.scaler.info.availableSizesPerFormat</notes>
            <tag id="DNG" />
            <tag id="BC" />
          </entry>
          <entry name="whiteLevel" type="int32">
            <description>Maximum raw value output by
            sensor</description>
            <range>&gt; 1024 (10-bit output)</range>
            <notes>Defines sensor bit depth (10-14 bits is
            expected)</notes>
            <tag id="DNG" />
          </entry>
        </namespace>
        <entry name="baseGainFactor" type="rational">
          <description>Gain factor from electrons to raw units when
          ISO=100</description>
          <tag id="V1" />
        </entry>
        <entry name="blackLevelPattern" type="int32"
        type_notes="2x2 raw count block" container="array">
          <array>
            <size>4</size>
          </array>
          <description>A fixed black level offset for each of the
          Bayer mosaic channels</description>
          <range>&gt;= 0 each</range>
          <notes>As per DNG BlackLevelRepeatDim / BlackLevel
          tags</notes>
          <tag id="DNG" />
        </entry>
        <entry name="calibrationTransform1" type="rational"
        type_notes="3x3 matrix in row-major-order"
        container="array">
          <array>
            <size>9</size>
          </array>
          <description>Per-device calibration on top of color space
          transform 1</description>
          <tag id="DNG" />
        </entry>
        <entry name="calibrationTransform2" type="rational"
        type_notes="3x3 matrix in row-major-order"
        container="array">
          <array>
            <size>9</size>
          </array>
          <description>Per-device calibration on top of color space
          transform 2</description>
          <tag id="DNG" />
        </entry>
        <entry name="colorTransform1" type="rational"
        type_notes="3x3 matrix in row-major-order"
        container="array">
          <array>
            <size>9</size>
          </array>
          <description>Linear mapping from XYZ (D50) color space to
          reference linear sensor color, for first reference
          illuminant</description>
          <notes>Use as follows XYZ = inv(transform) * clip( (raw -
          black level(raw) ) / ( white level - max black level) ).
          At least in the simple case</notes>
          <tag id="DNG" />
        </entry>
        <entry name="colorTransform2" type="rational"
        type_notes="3x3 matrix in row-major-order"
        container="array">
          <array>
            <size>9</size>
          </array>
          <description>Linear mapping from XYZ (D50) color space to
          reference linear sensor color, for second reference
          illuminant</description>
          <tag id="DNG" />
        </entry>
        <entry name="forwardMatrix1" type="rational"
        type_notes="3x3 matrix in row-major-order"
        container="array">
          <array>
            <size>9</size>
          </array>
          <description>Used by DNG for better WB
          adaptation</description>
          <tag id="DNG" />
        </entry>
        <entry name="forwardMatrix2" type="rational"
        type_notes="3x3 matrix in row-major-order"
        container="array">
          <array>
            <size>9</size>
          </array>
          <description>Used by DNG for better WB
          adaptation</description>
          <tag id="DNG" />
        </entry>
        <entry name="maxAnalogSensitivity" type="int32">
          <description>Maximum sensitivity that is implemented
          purely through analog gain</description>
          <notes>For android.sensor.sensitivity values less than or
          equal to this, all applied gain must be analog. For
          values above this, it can be a mix of analog and
          digital</notes>
          <tag id="V1" />
        </entry>
        <entry name="noiseModelCoefficients" type="float"
        type_notes="float constants A, B for the noise variance model"
        container="array">
          <array>
            <size>2</size>
          </array>
          <description>Estimation of sensor noise
          characteristics</description>
          <units>var(raw pixel value) = electrons * (baseGainFactor
          * iso/100)^2 + A * (baseGainFactor * iso/100)^2 +
          B</units>
          <notes>A represents sensor read noise before analog
          amplification; B represents noise from A/D conversion and
          other circuits after amplification. Both noise sources
          are assumed to be gaussian, independent, and not to vary
          across the sensor</notes>
          <tag id="V1" />
        </entry>
        <entry name="orientation" type="int32">
          <description>Clockwise angle through which the output
          image needs to be rotated to be upright on the device
          screen in its native orientation. Also defines the
          direction of rolling shutter readout, which is from top
          to bottom in the sensor's coordinate system</description>
          <units>degrees clockwise rotation, only multiples of
          90</units>
          <range>0,90,180,270</range>
          <tag id="BC" />
        </entry>
        <entry name="referenceIlluminant1" type="enum">
          <enum>
            <value id="1">DAYLIGHT</value>
            <value id="2">FLUORESCENT</value>
            <value id="3">TUNGSTEN
            <notes>Incandescent light</notes></value>
            <value id="4">FLASH</value>
            <value id="9">FINE_WEATHER</value>
            <value id="10">CLOUDY_WEATHER</value>
            <value id="11">SHADE</value>
            <value id="12">DAYLIGHT_FLUORESCENT
            <notes>D 5700 - 7100K</notes></value>
            <value id="13">DAY_WHITE_FLUORESCENT
            <notes>N 4600 - 5400K</notes></value>
            <value id="14">COOL_WHITE_FLUORESCENT
            <notes>W 3900 - 4500K</notes></value>
            <value id="15">WHITE_FLUORESCENT
            <notes>WW 3200 - 3700K</notes></value>
            <value id="17">STANDARD_A</value>
            <value id="18">STANDARD_B</value>
            <value id="19">STANDARD_C</value>
            <value id="20">D55</value>
            <value id="21">D65</value>
            <value id="22">D75</value>
            <value id="23">D50</value>
            <value id="24">ISO_STUDIO_TUNGSTEN</value>
          </enum>
          <description>Light source used to define transform
          1</description>
          <notes>[EXIF LightSource tag] Must all these be
          supported? Need CCT for each!</notes>
          <tag id="DNG" />
          <tag id="EXIF" />
        </entry>
        <entry name="referenceIlluminant2" type="byte">
          <description>Light source used to define transform
          2</description>
          <units>Same as illuminant 1</units>
        </entry>
      </static>
      <dynamic>
        <clone entry="android.sensor.exposureTime" kind="controls">
        </clone>
        <clone entry="android.sensor.frameDuration"
        kind="controls"></clone>
        <clone entry="android.sensor.sensitivity" kind="controls">
        </clone>
        <entry name="timestamp" type="int64">
          <description>Time at start of exposure of first
          row</description>
          <units>nanoseconds</units>
          <range>&gt; 0</range>
          <notes>Monotonic, should be synced to other timestamps in
          system</notes>
          <tag id="BC" />
        </entry>
      </dynamic>
    </section>
    <section name="shading">
      <controls>
        <entry name="mode" type="enum">
          <enum>
            <value>OFF
            <notes>No shading correction is applied</notes></value>
            <value>FAST
            <notes>Must not slow down frame rate relative to raw
            bayer output</notes></value>
            <value>HIGH_QUALITY
            <notes>Frame rate may be reduced by high
            quality</notes></value>
          </enum>
          <description>Quality of lens shading correction applied
          to the image data</description>
          <units>enum:</units>
        </entry>
        <entry name="strength" type="byte">
          <description>Control the amount of shading correction
          applied to the images</description>
          <units>unitless: 1-10; 10 is full shading
          compensation</units>
          <tag id="ADV" />
        </entry>
      </controls>
      <dynamic>
        <clone entry="android.shading.mode" kind="controls">
        </clone>
      </dynamic>
    </section>
    <section name="statistics">
      <controls>
        <entry name="faceDetectMode" type="enum">
          <enum>
            <value>OFF</value>
            <value>SIMPLE
            <notes>Optional Return rectangle and confidence
            only</notes></value>
            <value>FULL
            <notes>Optional Return all face
            metadata</notes></value>
          </enum>
          <description>State of the face detector
          unit</description>
          <units>enum</units>
          <range>
          android.statistics.availableFaceDetectModes</range>
          <tag id="BC" />
        </entry>
        <entry name="histogramMode" type="enum">
          <enum>
            <value>OFF</value>
            <value>ON</value>
          </enum>
          <description>Operating mode for histogram
          generation</description>
          <units>enum</units>
          <tag id="V1" />
        </entry>
        <entry name="sharpnessMapMode" type="enum">
          <enum>
            <value>OFF</value>
            <value>ON</value>
          </enum>
          <description>Operating mode for sharpness map
          generation</description>
          <units>enum</units>
          <tag id="V1" />
        </entry>
      </controls>
      <static>
        <namespace name="info">
          <entry name="availableFaceDetectModes" type="byte"
          type_notes="List of enums" container="array">
            <array>
              <size>n</size>
            </array>
            <description>Which face detection modes are available,
            if any</description>
            <range>OFF</range>
          </entry>
          <entry name="histogramBucketCount" type="int32">
            <description>Number of histogram buckets
            supported</description>
            <range>&gt;= 64</range>
          </entry>
          <entry name="maxFaceCount" type="int32">
            <description>If face detection is supported, how many
            faces can be detected at once</description>
            <range>&gt;= 4 if availableFaceDetectionModes lists
            modes besides OFF, otherwise 0</range>
          </entry>
          <entry name="maxHistogramCount" type="int32">
            <description>Maximum value possible for a histogram
            bucket</description>
          </entry>
          <entry name="maxSharpnessMapValue" type="int32">
            <description>Maximum value possible for a sharpness map
            region.</description>
          </entry>
          <entry name="sharpnessMapSize" type="int32"
          type_notes="width x height" container="array">
            <array>
              <size>2</size>
            </array>
            <description>Dimensions of the sharpness
            map</description>
            <range>Must be at least 32 x 32</range>
          </entry>
        </namespace>
      </static>
      <dynamic>
        <clone entry="android.statistics.faceDetectMode"
        kind="controls"></clone>
        <entry name="faceIds" type="int32" container="array">
          <array>
            <size>n</size>
          </array>
          <description>List of unique IDs for detected
          faces</description>
          <notes>Only available if faceDetectMode == FULL</notes>
          <tag id="BC" />
        </entry>
        <entry name="faceLandmarks" type="int32"
        type_notes="(leftEyeX, leftEyeY, rightEyeX, rightEyeY, mouthX, mouthY)"
        container="array">
          <array>
            <size>n</size>
            <size>6</size>
          </array>
          <description>List of landmarks for detected
          faces</description>
          <notes>Only available if faceDetectMode == FULL</notes>
          <tag id="BC" />
        </entry>
        <entry name="faceRectangles" type="int32"
        type_notes="(xmin, ymin, xmax, ymax). (0,0) is top-left of active pixel area"
        container="array">
          <array>
            <size>n</size>
            <size>4</size>
          </array>
          <description>List of the bounding rectangles for detected
          faces</description>
          <notes>Only available if faceDetectMode != OFF</notes>
          <tag id="BC" />
        </entry>
        <entry name="faceScores" type="byte" container="array">
          <array>
            <size>n</size>
          </array>
          <description>List of the face confidence scores for
          detected faces</description>
          <range>0-100</range>
          <notes>Only available if faceDetectMode != OFF</notes>
          <tag id="BC" />
        </entry>
        <entry name="histogram" type="int32"
        type_notes="count of pixels for each color channel that fall into each histogram bucket, scaled to be between 0 and maxHistogramCount"
        container="array">
          <array>
            <size>n</size>
            <size>3</size>
          </array>
          <description>A 3-channel histogram based on the raw
          sensor data</description>
          <notes>The k'th bucket (0-based) covers the input range
          (with w = android.sensor.info.whiteLevel) of [ k * w/N,
          (k + 1) * w / N ). If only a monochrome sharpness map is
          supported, all channels should have the same data</notes>
          <tag id="V1" />
        </entry>
        <clone entry="android.statistics.histogramMode"
        kind="controls"></clone>
        <entry name="sharpnessMap" type="int32"
        type_notes="estimated sharpness for each region of the input image. Normalized to be between 0 and maxSharpnessMapValue. Higher values mean sharper (better focused)"
        container="array">
          <array>
            <size>n</size>
            <size>m</size>
            <size>3</size>
          </array>
          <description>A 3-channel sharpness map, based on the raw
          sensor data</description>
          <notes>If only a monochrome sharpness map is supported,
          all channels should have the same data</notes>
          <tag id="V1" />
        </entry>
        <clone entry="android.statistics.sharpnessMapMode"
        kind="controls"></clone>
      </dynamic>
    </section>
    <section name="tonemap">
      <controls>
        <entry name="curveBlue" type="byte">
          <description>Table mapping blue input values to output
          values</description>
          <units>same as android.tonemap.curveRed</units>
          <range>same as android.tonemap.curveRed</range>
        </entry>
        <entry name="curveGreen" type="byte">
          <description>Table mapping green input values to output
          values</description>
          <units>same as android.tonemap.curveRed</units>
          <range>same as android.tonemap.curveRed</range>
        </entry>
        <entry name="curveRed" type="float"
        type_notes="A 1D array of pairs of floats. mapping a 0-1 input range to a 0-1 output range."
        container="array">
          <array>
            <size>n</size>
            <size>2</size>
          </array>
          <description>Table mapping red input values to output
          values</description>
          <range>0-1 on input and output coordinates. Max entry
          count speciied by android.tonemap.maxCurvePoints</range>
          <notes>.The input range must be monotonically increasing
          with N, and values between entries should be linearly
          interpolated. For example, if the array is: [0.0, 0.0,
          0.3, 0.5, 1.0, 1.0], then the input-&gt;output mapping
          for a few sample points would be: 0 -&gt; 0, 0.15 -&gt;
          0.25, 0.3 -&gt; 0.5, 0.5 -&gt; 0.64</notes>
          <tag id="DNG" />
        </entry>
        <entry name="mode" type="enum">
          <enum>
            <value>CONTRAST_CURVE
            <notes>Use the tone mapping curve specified in
            android.tonemap.curve</notes></value>
            <value>FAST
            <notes>Must not slow down frame rate relative to raw
            bayer output</notes></value>
            <value>HIGH_QUALITY
            <notes>Frame rate may be reduced by high
            quality</notes></value>
          </enum>
          <units>enum:</units>
        </entry>
      </controls>
      <static>
        <entry name="maxCurvePoints" type="int32">
          <description>Maximum number of supported points in the
          tonemap curve</description>
          <range>&gt;= 128</range>
        </entry>
      </static>
      <dynamic>
        <clone entry="android.tonemap.curveBlue" kind="controls">
        </clone>
        <clone entry="android.tonemap.curveGreen" kind="controls">
        </clone>
        <clone entry="android.tonemap.curveRed" kind="controls">
        </clone>
        <clone entry="android.tonemap.mode" kind="controls">
        </clone>
      </dynamic>
    </section>
  </namespace>
</metadata>
