<?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"
        type_notes="List of enums (android.control.awbMode)"
        container="array">
          <array>
            <size>n</size>
          </array>
          <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>
