<?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">
        Needed for auto white balance
    </tag>
    <tag id="BC">
        Needed for backwards compatibility with old Java API
    </tag>
    <tag id="V1">
        New features for first camera 2 release (API1)
    </tag>
    <tag id="ADV">
      <!-- TODO: fill the tag description -->
    </tag>
    <tag id="DNG">
        Needed for DNG file support
    </tag>
    <tag id="EXIF">
      <!-- TODO: fill the tag description -->
    </tag>
  </tags>
  <namespace name="android">
    <section name="colorCorrection">
      <controls>
        <entry name="mode" type="byte" enum="true">
          <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>
        </entry>
        <entry name="transform" type="float"
        type_notes="3x3 float matrix in row-major order"
        container="array">
          <array>
            <size>3</size>
            <size>3</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="byte" enum="true">
          <enum>
            <value>OFF</value>
            <value>50HZ</value>
            <value>60HZ</value>
            <value>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="byte" enum="true">
          <enum>
            <value>OFF
            <notes>Autoexposure lock is disabled; the AE algorithm
            is free to update its parameters.</notes></value>
            <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>
          </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="byte" enum="true">
          <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="aePrecaptureTrigger" type="byte" enum="true">
          <enum>
            <value>IDLE
              <notes>The trigger is idle.</notes>
            </value>
            <value>START
              <notes>The precapture metering sequence
              must be started. The exact effect of the precapture
              trigger depends on the current AE mode and
              state.</notes>
            </value>
          </enum>
          <description>Whether the HAL must trigger precapture
          metering.</description>
          <notes>This entry is normally set to IDLE, or is not
          included at all in the request settings. When included and
          set to START, the HAL must trigger the autoexposure
          precapture metering sequence. The effect of AE precapture
          trigger depends on the current AE mode and state; see the
          camera HAL device v3 header for details.</notes>
          <tag id="BC" />
        </entry>
        <entry name="afMode" type="byte" enum="true">
          <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="afTrigger" type="byte" enum="true">
          <enum>
            <value>IDLE
              <notes>The trigger is idle.</notes>
            </value>
            <value>START
              <notes>Autofocus must trigger now.</notes>
            </value>
            <value>CANCEL
              <notes>Autofocus must return to initial
              state, and cancel any active trigger.</notes>
            </value>
          </enum>
          <description>Whether the HAL must trigger autofocus.</description>
          <notes>This entry is normally set to IDLE, or is not
          included at all in the request settings. When included and
          set to START, the HAL must trigger the autofocus
          algorithm. The effect of AF trigger depends on the current
          AF mode and state; see the camera HAL device v3 header for
          details. When set to CANCEL, the HAL must cancel any active
          trigger, and return to initial AF state.</notes>
          <tag id="BC" />
        </entry>
        <entry name="awbLock" type="byte" enum="true">
          <enum>
            <value>OFF
            <notes>Auto-whitebalance lock is disabled; the AWB
            algorithm is free to update its parameters if in AUTO
            mode.</notes></value>
            <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>
          </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="byte" enum="true">
          <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="byte" enum="true">
          <enum>
            <value>CUSTOM
            <notes>This request doesn't fall into the other
            categories. Default to preview-like
            behavior.</notes></value>
            <value>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>STILL_CAPTURE
            <notes>This request is for a still capture-type
            usecase.</notes></value>
            <value>VIDEO_RECORD
            <notes>This request is for a video recording
            usecase.</notes></value>
            <value>VIDEO_SNAPSHOT
            <notes>This request is for a video snapshot (still
            image while recording video) usecase</notes></value>
            <value>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="byte" enum="true">
          <enum>
            <value>OFF</value>
            <value optional="true">MONO</value>
            <value optional="true">NEGATIVE</value>
            <value optional="true">SOLARIZE</value>
            <value optional="true">SEPIA</value>
            <value optional="true">POSTERIZE</value>
            <value optional="true">WHITEBOARD</value>
            <value optional="true">BLACKBOARD</value>
            <value optional="true">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="byte" enum="true">
          <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="byte" enum="true">
          <enum>
            <value id="0">UNSUPPORTED</value>
            <value>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">ACTION</value>
            <value optional="true">PORTRAIT</value>
            <value optional="true">LANDSCAPE</value>
            <value optional="true">NIGHT</value>
            <value optional="true">NIGHT_PORTRAIT</value>
            <value optional="true">THEATRE</value>
            <value optional="true">BEACH</value>
            <value optional="true">SNOW</value>
            <value optional="true">SUNSET</value>
            <value optional="true">STEADYPHOTO</value>
            <value optional="true">FIREWORKS</value>
            <value optional="true">SPORTS</value>
            <value optional="true">PARTY</value>
            <value optional="true">CANDLELIGHT</value>
            <value optional="true">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="byte" enum="true">
          <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="byte" enum="true">
          <enum>
            <value>INACTIVE
            <notes>AE is off.  When a camera device is opened, it starts in
            this state.</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="byte" enum="true">
          <enum>
            <value>INACTIVE
            <notes>AF off or has not yet tried to scan/been asked
            to scan.  When a camera device is opened, it starts in
            this state.</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>FOCUSED_LOCKED
            <notes>if any AF mode besides OFF is supported AF
            believes it is focused correctly and is
            locked</notes></value>
            <value>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="byte" enum="true">
          <enum>
            <value>INACTIVE
            <notes>AWB is not in auto mode.  When a camera device is opened, it
            starts in this state.</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="byte" enum="true">
          <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>
          <tag id="V1" />
        </entry>
      </controls>
    </section>
    <section name="edge">
      <controls>
        <entry name="mode" type="byte" enum="true">
          <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>
        </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="byte" enum="true">
          <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>
          <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="byte" enum="true">
          <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>
        </entry>
      </dynamic>
    </section>
    <section name="geometric">
      <controls>
        <entry name="mode" type="byte" enum="true">
          <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>
        </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">
      <controls>
        <entry name="mode" type="byte" enum="true">
          <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>
          <tag id="V1" />
        </entry>
      </controls>
      <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>
      <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="byte" enum="true">
          <enum>
            <value>OFF</value>
            <value optional="true">ON</value>
          </enum>
          <description>Whether optical image stabilization is
          enabled.</description>
          <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="byte" enum="true">
          <enum>
            <value>FRONT</value>
            <value>BACK</value>
          </enum>
          <description>Direction the camera faces relative to
          device screen</description>
        </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="byte" enum="true">
          <enum>
            <value>STATIONARY</value>
          </enum>
          <description>Current lens status</description>
          <tag id="V1" />
        </entry>
      </dynamic>
    </section>
    <section name="noiseReduction">
      <controls>
        <entry name="mode" type="byte" enum="true">
          <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>
          <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="byte" enum="true">
          <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>
        </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="byte" enum="true">
          <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>
        </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="int32" enum="true"
        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="availableMaxDigitalZoom" 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>
        <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>
      </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="byte" enum="true">
            <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="byte" enum="true">
          <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="byte" enum="true">
          <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>
        </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="byte" enum="true">
          <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>
          <range>
          android.statistics.availableFaceDetectModes</range>
          <tag id="BC" />
        </entry>
        <entry name="histogramMode" type="byte" enum="true">
          <enum>
            <value>OFF</value>
            <value>ON</value>
          </enum>
          <description>Operating mode for histogram
          generation</description>
          <tag id="V1" />
        </entry>
        <entry name="sharpnessMapMode" type="byte" enum="true">
          <enum>
            <value>OFF</value>
            <value>ON</value>
          </enum>
          <description>Operating mode for sharpness map
          generation</description>
          <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="float">
          <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="float">
          <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="byte" enum="true">
          <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>
        </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>
    <section name="led">
      <controls>
        <entry name="transmit" type="byte" enum="true">
          <enum>
            <value>OFF</value>
            <value>ON</value>
          </enum>
          <description>This LED is nominally used to indicate to the user
          that the camera is powered on and may be streaming images back to the
          Application Processor. In certain rare circumstances, the OS may
          disable this when video is processed locally and not transmitted to
          any untrusted applications.

          In particular, the LED *must* always be on when the data could be
          transmitted off the device. The LED *should* always be on whenever
          data is stored locally on the device.

          The LED *may* be off if a trusted application is using the data that
          doesn't violate the above rules.
          </description>
        </entry>
      </controls>
      <dynamic>
        <clone entry="android.led.transmit" kind="controls"></clone>
      </dynamic>
      <static>
        <entry name="availableLeds" type="byte" enum="true" container="array">
          <array>
            <size>n</size>
          </array>
          <enum>
            <value>TRANSMIT
              <notes>android.led.transmit control is used</notes>
            </value>
          </enum>
          <description>A list of camera LEDs that are available on this system.
          </description>
        </entry>
      </static>
    </section>
  </namespace>
</metadata>
