Camera: Generate camera_metadata_tags and HTML docs from XML

Change-Id: Ib7e9bf4855adff91a317c910aaec960f1422302a
diff --git a/camera/docs/docs.html b/camera/docs/docs.html
new file mode 100644
index 0000000..bcf28c8
--- /dev/null
+++ b/camera/docs/docs.html
@@ -0,0 +1,9727 @@
+<!DOCTYPE html>
+<html>
+<!-- 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.
+-->
+<head>
+  <!-- automatically generated from html.mako. do NOT edit directly -->
+  <meta charset="utf-8" />
+  <title>Android Camera HAL2.0 Properties</title>
+  <style type="text/css">
+    .section { font-size: 1.5em; font-weight: bold; background-color: beige; padding: 0.5em 0em 0.5em 0.1em }
+    .kind { font-size: 1.2em; font-weight: bold; padding-left: 0.5em; background-color: gray }
+    .entry { background-color: burlywood }
+
+    /* table column sizes */
+    table { table-layout: fixed; width: 100%; word-wrap: break-word }
+    td,th { border: 1px solid;  }
+    .th_name { width: 20% }
+    .th_units { width: 10% }
+    .th_tags { width: 5% }
+    .th_notes { width: 30% }
+    .th_type { width: 20% }
+    td { font-size: 0.9em; }
+
+    /* hide the first thead, we need it there only to enforce column sizes */
+    .thead_dummy { visibility: hidden; }
+
+    /* Entry flair */
+    .entry_name { font-family: monospace; font-style: italic; }
+
+    /* Entry type flair */
+    .entry_type_name { color: darkgreen; font-weight: bold; }
+    .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
+    .entry_type_enum_notes:before { content:" - " }
+    .entry_type_enum_value:before { content:" = " }
+    .entry_type_enum_value { font-family: monospace; }
+    .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
+    .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
+
+    /* Entry tags flair */
+    .entry_tags ul { list-style-type: none; }
+
+
+    /* TODO: generate abbr element for each tag link? */
+    /* TODO for each x.y.z try to link it to the entry */
+
+  </style>
+
+  <style>
+
+    {
+      /* broken...
+         supposedly there is a bug in chrome that it lays out tables before
+         it knows its being printed, so the page-break-* styles are ignored
+         */
+        tr { page-break-after: always; page-break-inside: avoid; }
+    }
+
+  </style>
+</head>
+
+
+
+
+<body>
+  <h1>Android Camera HAL2.0 Properties</h1>
+
+  <h2>Table of Contents</h2>
+  <ul class="toc">
+    <li><a href="#tag_index">Tags</a></li>
+
+
+    <li><p class="toc_section"><a href="#section_colorCorrection">colorCorrection</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a> (controls)</li>
+        <li><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a> (controls)</li>
+        <li><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_control">control</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
+        <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
+        <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
+        <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
+        <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
+        <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
+        <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
+        <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
+        <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
+        <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
+        <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
+        <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
+        <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
+        <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
+        <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
+        <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
+        <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
+        <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
+        <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
+        <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
+        <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
+        <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
+        <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
+        <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
+        <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
+        <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
+        <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
+        <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
+        <li><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.aeState">android.control.aeState</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.afMode">android.control.afMode</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.afRegions">android.control.afRegions</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.afState">android.control.afState</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.awbMode">android.control.awbMode</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.awbState">android.control.awbState</a> (dynamic)</li>
+        <li><a href="#dynamic_android.control.mode">android.control.mode</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_demosaic">demosaic</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_edge">edge</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
+        <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
+        <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_flash">flash</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
+        <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
+        <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
+        <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
+        <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
+        <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
+        <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
+        <li><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a> (dynamic)</li>
+        <li><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a> (dynamic)</li>
+        <li><a href="#dynamic_android.flash.mode">android.flash.mode</a> (dynamic)</li>
+        <li><a href="#dynamic_android.flash.state">android.flash.state</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_geometric">geometric</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.geometric.mode">android.geometric.mode</a> (controls)</li>
+        <li><a href="#controls_android.geometric.strength">android.geometric.strength</a> (controls)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_hotPixel">hotPixel</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
+        <li><a href="#static_android.hotPixel.info.map">android.hotPixel.info.map</a> (static)</li>
+        <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_jpeg">jpeg</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
+        <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
+        <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
+        <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
+        <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
+        <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
+        <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
+        <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
+        <li><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a> (static)</li>
+        <li><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (dynamic)</li>
+        <li><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (dynamic)</li>
+        <li><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (dynamic)</li>
+        <li><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a> (dynamic)</li>
+        <li><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a> (dynamic)</li>
+        <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
+        <li><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (dynamic)</li>
+        <li><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_lens">lens</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
+        <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
+        <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
+        <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
+        <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
+        <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
+        <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
+        <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
+        <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
+        <li><a href="#static_android.lens.info.geometricCorrectionMap">android.lens.info.geometricCorrectionMap</a> (static)</li>
+        <li><a href="#static_android.lens.info.geometricCorrectionMapSize">android.lens.info.geometricCorrectionMapSize</a> (static)</li>
+        <li><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a> (static)</li>
+        <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
+        <li><a href="#static_android.lens.info.shadingMap">android.lens.info.shadingMap</a> (static)</li>
+        <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
+        <li><a href="#static_android.lens.facing">android.lens.facing</a> (static)</li>
+        <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a> (static)</li>
+        <li><a href="#static_android.lens.position">android.lens.position</a> (static)</li>
+        <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
+        <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
+        <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
+        <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
+        <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
+        <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
+        <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_noiseReduction">noiseReduction</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
+        <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
+        <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_quirks">quirks</a></p>
+    <ul class="toc_section">
+        <li><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a> (static)</li>
+        <li><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a> (static)</li>
+        <li><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a> (static)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_request">request</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.request.frameCount">android.request.frameCount</a> (controls)</li>
+        <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
+        <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
+        <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
+        <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
+        <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
+        <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
+        <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
+        <li><a href="#dynamic_android.request.frameCount">android.request.frameCount</a> (dynamic)</li>
+        <li><a href="#dynamic_android.request.id">android.request.id</a> (dynamic)</li>
+        <li><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a> (dynamic)</li>
+        <li><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_scaler">scaler</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
+        <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
+        <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
+        <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
+        <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
+        <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
+        <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
+        <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
+        <li><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a> (static)</li>
+        <li><a href="#static_android.scaler.maxDigitalZoom">android.scaler.maxDigitalZoom</a> (static)</li>
+        <li><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_sensor">sensor</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
+        <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
+        <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
+        <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
+        <li><a href="#static_android.sensor.info.availableSensitivities">android.sensor.info.availableSensitivities</a> (static)</li>
+        <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
+        <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
+        <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
+        <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
+        <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
+        <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
+        <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
+        <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
+        <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
+        <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
+        <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
+        <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
+        <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
+        <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
+        <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
+        <li><a href="#static_android.sensor.noiseModelCoefficients">android.sensor.noiseModelCoefficients</a> (static)</li>
+        <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
+        <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
+        <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
+        <li><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a> (dynamic)</li>
+        <li><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a> (dynamic)</li>
+        <li><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a> (dynamic)</li>
+        <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_shading">shading</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.shading.mode">android.shading.mode</a> (controls)</li>
+        <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
+        <li><a href="#dynamic_android.shading.mode">android.shading.mode</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_statistics">statistics</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
+        <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
+        <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
+        <li><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a> (static)</li>
+        <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
+        <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
+        <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
+        <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
+        <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
+        <li><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (dynamic)</li>
+        <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
+        <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
+        <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
+        <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
+        <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
+        <li><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a> (dynamic)</li>
+        <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
+        <li><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+    <li><p class="toc_section"><a href="#section_tonemap">tonemap</a></p>
+    <ul class="toc_section">
+        <li><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a> (controls)</li>
+        <li><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a> (controls)</li>
+        <li><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a> (controls)</li>
+        <li><a href="#controls_android.tonemap.mode">android.tonemap.mode</a> (controls)</li>
+        <li><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a> (static)</li>
+        <li><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a> (dynamic)</li>
+        <li><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a> (dynamic)</li>
+        <li><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a> (dynamic)</li>
+        <li><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a> (dynamic)</li>
+    </ul>
+    </li> <!-- toc_section -->
+  </ul>
+
+  <h1>Properties</h1>
+  <table class="properties">
+
+    <thead class="thead_dummy">
+      <tr>
+        <th class="th_name">Property Name</th>
+        <th class="th_type">Type</th>
+        <th class="th_description">Description</th>
+        <th class="th_units">Units</th>
+        <th class="th_range">Range</th>
+        <th class="th_notes">Notes</th>
+        <th class="th_tags">Tags</th>
+      </tr>
+    </thead> <!-- so that the first occurrence of thead is not
+                         above the first occurrence of tr -->
+<!-- <namespace name="android"> -->
+  <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.colorCorrection.mode">
+            <td class="entry_name">android.<wbr>color<wbr>Correction.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
+                    <span class="entry_type_enum_notes">Use the android.<wbr>color<wbr>Correction.<wbr>transform matrix
+              to do color conversion</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+              bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+              quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.colorCorrection.transform">
+            <td class="entry_name">android.<wbr>color<wbr>Correction.<wbr>transform</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  3 x 3
+                </span>
+
+                <div class="entry_type_notes">3x3 float matrix in row-major order</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_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
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Output values are expected to be in the range
+          (0,<wbr>1)
+            </td>
+
+            <td class="entry_notes">
+              Values outside (0,<wbr>1) should be clamped.<wbr> Need to
+          provide utilities to go from CCT (+hue?),<wbr> or (x,<wbr>y) white
+          point,<wbr> (or AWB mode) to matrix; use linear Bradford
+          algorithm.<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.colorCorrection.mode">
+            <td class="entry_name">android.<wbr>color<wbr>Correction.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
+                    <span class="entry_type_enum_notes">Use the android.<wbr>color<wbr>Correction.<wbr>transform matrix
+              to do color conversion</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+              bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+              quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_control" class="section">control</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.control.aeAntibandingMode">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Antibanding<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">50HZ</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">60HZ</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">AUTO</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Enum for controlling
+          antibanding
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              
+          android.<wbr>control.<wbr>ae<wbr>Available<wbr>Antibanding<wbr>Modes
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.aeExposureCompensation">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Exposure<wbr>Compensation</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Adjustment to AE target image
+          brightness
+            </td>
+
+            <td class="entry_units">
+              count of positive/<wbr>negative EV steps
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              For example,<wbr> if EV step is 0.<wbr>333,<wbr> '6' will mean an
+          exposure compensation of +2 EV; -3 will mean an exposure
+          compensation of -1
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.aeLock">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Lock</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                    <span class="entry_type_enum_notes">Autoexposure lock is enabled; the AE algorithm
+            must not update the exposure and sensitivity parameters
+            while the lock is active</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">Autoexposure lock is disabled; the AE algorithm
+            is free to update its parameters.<wbr></span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether AE is currently locked to its latest
+          calculated values
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Note that even when AE is locked,<wbr> the flash may be
+          fired if the AE mode is ON_<wbr>AUTO_<wbr>FLASH /<wbr> ON_<wbr>ALWAYS_<wbr>FLASH /<wbr>
+          ON_<wbr>AUTO_<wbr>FLASH_<wbr>REDEYE.<wbr>
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.aeMode">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">Autoexposure is disabled; sensor.<wbr>exposureTime
+              and sensor.<wbr>sensitivity are used</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                    <span class="entry_type_enum_notes">Autoexposure is active,<wbr> no flash
+              control</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
+                    <span class="entry_type_enum_notes">if flash exists Autoexposure is active,<wbr> auto
+            flash control; flash may be fired when precapture
+            trigger is activated,<wbr> and for captures for which
+            captureIntent = STILL_<wbr>CAPTURE</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
+                    <span class="entry_type_enum_notes">if flash exists Autoexposure is active,<wbr> auto
+            flash control for precapture trigger and always flash
+            when captureIntent = STILL_<wbr>CAPTURE</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
+                    <span class="entry_type_enum_notes">optional Automatic red eye reduction with flash.<wbr>
+            If deemed necessary,<wbr> red eye reduction sequence should
+            fire when precapture trigger is activated,<wbr> and final
+            flash should fire when captureIntent =
+            STILL_<wbr>CAPTURE</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether AE is currently updating the sensor
+          exposure and sensitivity fields
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>control.<wbr>ae<wbr>Available<wbr>Modes
+            </td>
+
+            <td class="entry_notes">
+              Only effective if android.<wbr>control.<wbr>mode =
+          AUTO
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.aeRegions">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Regions</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  5 x area_count
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of areas to use for
+          metering
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Each area is a rectangle plus weight: xmin,<wbr> ymin,<wbr>
+          xmax,<wbr> ymax,<wbr> weight.<wbr> The coordinate system is based on the
+          active pixel array,<wbr> with (0,<wbr>0) being the top-left of the
+          active pixel array,<wbr> and
+          (android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>width,<wbr>
+          android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>height) being the
+          bottom-right point of the active pixel array.<wbr> The weight
+          should be nonnegative.<wbr> If all regions have 0 weight,<wbr> then
+          no specific metering area needs to be used by the HAL.<wbr> If
+          the metering region is outside the current
+          android.<wbr>scaler.<wbr>crop<wbr>Region,<wbr> the HAL should ignore the
+          sections outside the region and output the used sections
+          in the frame metadata
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Target<wbr>Fps<wbr>Range</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Range over which fps can be adjusted to
+          maintain exposure
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>control.<wbr>ae<wbr>Available<wbr>Target<wbr>Fps<wbr>Ranges
+            </td>
+
+            <td class="entry_notes">
+              Only constrains AE algorithm,<wbr> not manual control
+          of android.<wbr>sensor.<wbr>exposure<wbr>Time
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.afMode">
+            <td class="entry_name">android.<wbr>control.<wbr>af<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">The 3A routines do not control the lens;
+            android.<wbr>lens.<wbr>focus<wbr>Position is controlled by the
+            application</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">AUTO</span>
+                    <span class="entry_type_enum_notes">if lens is not fixed focus.<wbr> Use
+            android.<wbr>lens.<wbr>minimum<wbr>Focus<wbr>Distance to determine if lens
+            is fixed focus In this mode,<wbr> the lens does not move
+            unless the autofocus trigger action is called.<wbr> When
+            that trigger is activated,<wbr> AF must transition to
+            ACTIVE_<wbr>SCAN,<wbr> then to the outcome of the scan (FOCUSED
+            or NOT_<wbr>FOCUSED).<wbr> Triggering cancel AF resets the lens
+            position to default,<wbr> and sets the AF state to
+            INACTIVE.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">MACRO</span>
+                    <span class="entry_type_enum_notes">In this mode,<wbr> the lens does not move unless the
+            autofocus trigger action is called.<wbr> When that trigger
+            is activated,<wbr> AF must transition to ACTIVE_<wbr>SCAN,<wbr> then
+            to the outcome of the scan (FOCUSED or NOT_<wbr>FOCUSED).<wbr>
+            Triggering cancel AF resets the lens position to
+            default,<wbr> and sets the AF state to
+            INACTIVE.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
+                    <span class="entry_type_enum_notes">In this mode,<wbr> the AF algorithm modifies the lens
+            position continually to attempt to provide a
+            constantly-in-focus image stream.<wbr> The focusing behavior
+            should be suitable for good quality video recording;
+            typically this means slower focus movement and no
+            overshoots.<wbr> When the AF trigger is not involved,<wbr> the AF
+            algorithm should start in INACTIVE state,<wbr> and then
+            transition into PASSIVE_<wbr>SCAN and PASSIVE_<wbr>FOCUSED states
+            as appropriate.<wbr> When the AF trigger is activated,<wbr> the
+            algorithm should immediately transition into AF_<wbr>FOCUSED
+            or AF_<wbr>NOT_<wbr>FOCUSED as appropriate,<wbr> and lock the lens
+            position until a cancel AF trigger is received.<wbr> Once
+            cancel is received,<wbr> the algorithm should transition
+            back to INACTIVE and resume passive scan.<wbr> Note that
+            this behavior is not identical to CONTINUOUS_<wbr>PICTURE,<wbr>
+            since an ongoing PASSIVE_<wbr>SCAN must immediately be
+            canceled.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
+                    <span class="entry_type_enum_notes">In this mode,<wbr> the AF algorithm modifies the lens
+            position continually to attempt to provide a
+            constantly-in-focus image stream.<wbr> The focusing behavior
+            should be suitable for still image capture; typically
+            this means focusing as fast as possible.<wbr> When the AF
+            trigger is not involved,<wbr> the AF algorithm should start
+            in INACTIVE state,<wbr> and then transition into
+            PASSIVE_<wbr>SCAN and PASSIVE_<wbr>FOCUSED states as appropriate
+            as it attempts to maintain focus.<wbr> When the AF trigger
+            is activated,<wbr> the algorithm should finish its
+            PASSIVE_<wbr>SCAN if active,<wbr> and then transition into
+            AF_<wbr>FOCUSED or AF_<wbr>NOT_<wbr>FOCUSED as appropriate,<wbr> and lock
+            the lens position until a cancel AF trigger is
+            received.<wbr> When the AF cancel trigger is activated,<wbr> the
+            algorithm should transition back to INACTIVE and then
+            act as if it has just been started.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">EDOF</span>
+                    <span class="entry_type_enum_notes">Extended depth of field (digital focus).<wbr> AF
+            trigger is ignored,<wbr> AF state should always be
+            INACTIVE.<wbr></span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether AF is currently enabled,<wbr> and what
+          mode it is set to
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.afRegions">
+            <td class="entry_name">android.<wbr>control.<wbr>af<wbr>Regions</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  5 x area_count
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of areas to use for focus
+          estimation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Each area is a rectangle plus weight: xmin,<wbr> ymin,<wbr>
+          xmax,<wbr> ymax,<wbr> weight.<wbr> The coordinate system is based on the
+          active pixel array,<wbr> with (0,<wbr>0) being the top-left of the
+          active pixel array,<wbr> and
+          (android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>width,<wbr>
+          android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>height) being the
+          bottom-right point of the active pixel array.<wbr> The weight
+          should be nonnegative.<wbr> If all regions have 0 weight,<wbr> then
+          no specific focus area needs to be used by the HAL.<wbr> If
+          the focusing region is outside the current
+          android.<wbr>scaler.<wbr>crop<wbr>Region,<wbr> the HAL should ignore the
+          sections outside the region and output the used sections
+          in the frame metadata
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.awbLock">
+            <td class="entry_name">android.<wbr>control.<wbr>awb<wbr>Lock</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                    <span class="entry_type_enum_notes">Auto-whitebalance lock is enabled; the AWB
+            algorithm must not update the exposure and sensitivity
+            parameters while the lock is active</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">Auto-whitebalance lock is disabled; the AWB
+            algorithm is free to update its parameters if in AUTO
+            mode.<wbr></span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether AWB is currently locked to its
+          latest calculated values
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Note that AWB lock is only meaningful for AUTO
+          mode; in other modes,<wbr> AWB is already fixed to a specific
+          setting
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.awbMode">
+            <td class="entry_name">android.<wbr>control.<wbr>awb<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">AUTO</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">INCANDESCENT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FLUORESCENT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">DAYLIGHT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">TWILIGHT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SHADE</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether AWB is currently setting the color
+          transform fields,<wbr> and what its illumination target
+          is
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              [BC - AWB lock,<wbr>AWB modes]
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.awbRegions">
+            <td class="entry_name">android.<wbr>control.<wbr>awb<wbr>Regions</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  5 x area_count
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of areas to use for illuminant
+          estimation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Only used in AUTO mode.<wbr> Each area is a rectangle
+          plus weight: xmin,<wbr> ymin,<wbr> xmax,<wbr> ymax,<wbr> weight.<wbr> The
+          coordinate system is based on the active pixel array,<wbr>
+          with (0,<wbr>0) being the top-left of the active pixel array,<wbr>
+          and (android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>width,<wbr>
+          android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>height) being the
+          bottom-right point of the active pixel array.<wbr> The weight
+          should be nonnegative.<wbr> If all regions have 0 weight,<wbr> then
+          no specific metering area needs to be used by the HAL.<wbr> If
+          the metering region is outside the current
+          android.<wbr>scaler.<wbr>crop<wbr>Region,<wbr> the HAL should ignore the
+          sections outside the region and output the used sections
+          in the frame metadata
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.captureIntent">
+            <td class="entry_name">android.<wbr>control.<wbr>capture<wbr>Intent</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">CUSTOM</span>
+                    <span class="entry_type_enum_notes">This request doesn't fall into the other
+            categories.<wbr> Default to preview-like
+            behavior.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">PREVIEW</span>
+                    <span class="entry_type_enum_notes">This request is for a preview-like usecase.<wbr> The
+            precapture trigger may be used to start off a metering
+            w/<wbr>flash sequence</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
+                    <span class="entry_type_enum_notes">This request is for a still capture-type
+            usecase.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
+                    <span class="entry_type_enum_notes">This request is for a video recording
+            usecase.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
+                    <span class="entry_type_enum_notes">This request is for a video snapshot (still
+            image while recording video) usecase</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
+                    <span class="entry_type_enum_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</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Information to 3A routines about the purpose
+          of this capture,<wbr> to help decide optimal 3A
+          strategy
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              all must be supported
+            </td>
+
+            <td class="entry_notes">
+              Only used if android.<wbr>control.<wbr>mode != OFF.<wbr>
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.effectMode">
+            <td class="entry_name">android.<wbr>control.<wbr>effect<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">MONO</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">NEGATIVE</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SOLARIZE</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SEPIA</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">POSTERIZE</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">WHITEBOARD</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">BLACKBOARD</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">AQUA</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether any special color effect is in use.<wbr>
+          Only used if android.<wbr>control.<wbr>mode != OFF
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>control.<wbr>available<wbr>Effects
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.mode">
+            <td class="entry_name">android.<wbr>control.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">Full application control of pipeline.<wbr> All 3A
+            routines are disabled,<wbr> no other settings in
+            android.<wbr>control.<wbr>* have any effect</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">AUTO</span>
+                    <span class="entry_type_enum_notes">Use settings for each individual 3A routine.<wbr>
+            Manual control of capture parameters is disabled.<wbr> All
+            controls in android.<wbr>control.<wbr>* besides sceneMode take
+            effect</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
+                    <span class="entry_type_enum_notes">Use specific scene mode.<wbr> Enabling this disables
+            control.<wbr>aeMode,<wbr> control.<wbr>awbMode and control.<wbr>afMode
+            controls; the HAL must ignore those settings while
+            USE_<wbr>SCENE_<wbr>MODE is active (except for FACE_<wbr>PRIORITY
+            scene mode).<wbr> Other control entries are still active.<wbr>
+            This setting can only be used if availableSceneModes !=
+            UNSUPPORTED</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Overall mode of 3A control
+          routines
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              all must be supported
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.sceneMode">
+            <td class="entry_name">android.<wbr>control.<wbr>scene<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">UNSUPPORTED</span>
+                    <span class="entry_type_enum_value">0</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
+                    <span class="entry_type_enum_notes">if face detection support exists Use face
+            detection data to drive 3A routines.<wbr> If face detection
+            statistics are disabled,<wbr> should still operate correctly
+            (but not return face detection statistics to the
+            framework).<wbr> Unlike the other scene modes,<wbr> aeMode,<wbr>
+            awbMode,<wbr> and afMode remain active when FACE_<wbr>PRIORITY is
+            set.<wbr> This is due to compatibility concerns with the old
+            camera API</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ACTION</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">PORTRAIT</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">LANDSCAPE</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">NIGHT</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">THEATRE</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">BEACH</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SNOW</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SUNSET</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">STEADYPHOTO</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FIREWORKS</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SPORTS</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">PARTY</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CANDLELIGHT</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">BARCODE</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Which scene mode is active when
+          android.<wbr>control.<wbr>mode = SCENE_<wbr>MODE
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>control.<wbr>available<wbr>Scene<wbr>Modes
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.control.videoStabilizationMode">
+            <td class="entry_name">android.<wbr>control.<wbr>video<wbr>Stabilization<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether video stabilization is
+          active
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              If enabled,<wbr> video stabilization can modify the
+          android.<wbr>scaler.<wbr>crop<wbr>Region to keep the video stream
+          stabilized
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Available<wbr>Antibanding<wbr>Modes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">list of enums</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Which set of antibanding modes are
+          supported
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.aeAvailableModes">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Available<wbr>Modes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">list of enums</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Which subset of AE modes is
+          supported
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              OFF,<wbr> ON must be supported.<wbr>
+          ON_<wbr>AUTO_<wbr>FLASH/<wbr>ON_<wbr>ALWAYS_<wbr>FLASH must be supported if flash
+          unit is available
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Available<wbr>Target<wbr>Fps<wbr>Ranges</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2 x n
+                </span>
+
+                <div class="entry_type_notes">list of pairs of frame rates</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of frame rate ranges supported by the
+          AE algorithm/<wbr>hardware
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.aeCompensationRange">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Compensation<wbr>Range</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Maximum and minimum exposure compensation
+          setting,<wbr> in counts of
+          android.<wbr>control.<wbr>ae<wbr>Compensation<wbr>Step<wbr>Size
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              At least (-2,<wbr>2)/<wbr>(exp compensation step
+          size)
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.aeCompensationStep">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Compensation<wbr>Step</td>
+            <td class="entry_type">
+              <span class="entry_type_name">rational</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Smallest step by which exposure compensation
+          can be changed
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              <= 1/<wbr>2
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.afAvailableModes">
+            <td class="entry_name">android.<wbr>control.<wbr>af<wbr>Available<wbr>Modes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">List of enums</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of AF modes that can be
+          selected
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              OFF must be included.<wbr> AUTO must be supported if
+          lens allows for changing focus
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.availableEffects">
+            <td class="entry_name">android.<wbr>control.<wbr>available<wbr>Effects</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">list of enums</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              what subset of the full color effect enum
+          list is supported
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              OFF must be listed
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.availableSceneModes">
+            <td class="entry_name">android.<wbr>control.<wbr>available<wbr>Scene<wbr>Modes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">list of enums from android.<wbr>control.<wbr>scene<wbr>Mode,<wbr> plus UNSUPPORTED to indicate no scene modes are supported</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              what subset of the scene mode enum list is
+          supported.<wbr>
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              SCENE_<wbr>MODE_<wbr>FACE_<wbr>PRIORITY must be supported if face
+          detection is supported
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
+            <td class="entry_name">android.<wbr>control.<wbr>available<wbr>Video<wbr>Stabilization<wbr>Modes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">List of enums.<wbr></div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of video stabilization modes that can
+          be supported
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              OFF must be included
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.awbAvailableModes">
+            <td class="entry_name">android.<wbr>control.<wbr>awb<wbr>Available<wbr>Modes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+            </td>
+
+            <td class="entry_units">
+              List of enums (android.<wbr>control.<wbr>awb<wbr>Mode)
+            </td>
+
+            <td class="entry_range">
+              OFF,<wbr> AUTO must be included
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.maxRegions">
+            <td class="entry_name">android.<wbr>control.<wbr>max<wbr>Regions</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              For AE,<wbr> AWB,<wbr> and AF,<wbr> how many individual
+          regions can be listed for metering?
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              >= 1
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.control.sceneModeOverrides">
+            <td class="entry_name">android.<wbr>control.<wbr>scene<wbr>Mode<wbr>Overrides</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  3 x lengthavailablescenemodes
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of AE,<wbr> AWB,<wbr> and AF modes to use for
+          each available scene mode
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              For each listed scene mode,<wbr> lists the aeMode,<wbr>
+          awbMode,<wbr> and afMode that the HAL wants to use for that
+          scene mode.<wbr> For each entry,<wbr> the order is {aeMode,<wbr>
+          awbMode,<wbr> afMode} in order of increasing index
+            </td>
+
+            <td class="entry_notes">
+              When a scene mode is enabled,<wbr> the HAL is expected
+          to override aeMode,<wbr> awbMode,<wbr> and afMode with its
+          preferred settings for that scene mode.<wbr> To simplify
+          communication with old camera API applications,<wbr> the
+          service wants this override list in the static metadata.<wbr>
+          The order of this list matches that of
+          availableSceneModes,<wbr> with 3 entires for each scene mode.<wbr>
+          The overrides listed for SCENE_<wbr>MODE_<wbr>FACE_<wbr>PRIORITY are
+          ignored,<wbr> since for that mode,<wbr> the application-set aeMode,<wbr>
+          awbMode,<wbr> and afMode are used instead,<wbr> like they are when
+          android.<wbr>control.<wbr>mode is AUTO.<wbr> It is recommended that for
+          FACE_<wbr>PRIORITY,<wbr> the overrides should be set to 0.<wbr> As an
+          example,<wbr> if availableSceneModes is { FACE_<wbr>PRIORITY,<wbr>
+          ACTION,<wbr> NIGHT },<wbr> then the service expects this field to
+          have 9 entries; for example { 0 ,<wbr> 0,<wbr> 0,<wbr> ON_<wbr>AUTO_<wbr>FLASH,<wbr>
+          AUTO,<wbr> CONTINUOUS_<wbr>PICTURE,<wbr> ON_<wbr>AUTO_<wbr>FLASH,<wbr> INCANDESCENT,<wbr>
+          AUTO }
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Precapture<wbr>Id</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The ID sent with the latest
+          CAMERA2_<wbr>TRIGGER_<wbr>PRECAPTURE_<wbr>METERING call
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Must be 0 if no
+          CAMERA2_<wbr>TRIGGER_<wbr>PRECAPTURE_<wbr>METERING trigger received yet
+          by HAL.<wbr> Always updated even if AE algorithm ignores the
+          trigger
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.aeRegions">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>Regions</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  5 x area_count
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of areas to use for
+          metering
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Each area is a rectangle plus weight: xmin,<wbr> ymin,<wbr>
+          xmax,<wbr> ymax,<wbr> weight.<wbr> The coordinate system is based on the
+          active pixel array,<wbr> with (0,<wbr>0) being the top-left of the
+          active pixel array,<wbr> and
+          (android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>width,<wbr>
+          android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>height) being the
+          bottom-right point of the active pixel array.<wbr> The weight
+          should be nonnegative.<wbr> If all regions have 0 weight,<wbr> then
+          no specific metering area needs to be used by the HAL.<wbr> If
+          the metering region is outside the current
+          android.<wbr>scaler.<wbr>crop<wbr>Region,<wbr> the HAL should ignore the
+          sections outside the region and output the used sections
+          in the frame metadata
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.aeState">
+            <td class="entry_name">android.<wbr>control.<wbr>ae<wbr>State</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">INACTIVE</span>
+                    <span class="entry_type_enum_notes">AE is off</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SEARCHING</span>
+                    <span class="entry_type_enum_notes">AE doesn't yet have a good set of control values
+            for the current scene</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CONVERGED</span>
+                    <span class="entry_type_enum_notes">AE has a good set of control values for the
+            current scene</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">LOCKED</span>
+                    <span class="entry_type_enum_notes">AE has been locked (aeMode =
+            LOCKED)</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FLASH_REQUIRED</span>
+                    <span class="entry_type_enum_notes">AE has a good set of control values,<wbr> but flash
+            needs to be fired for good quality still
+            capture</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">PRECAPTURE</span>
+                    <span class="entry_type_enum_notes">AE has been asked to do a precapture sequence
+            (through the
+            trigger_<wbr>action(CAMERA2_<wbr>TRIGGER_<wbr>PRECAPTURE_<wbr>METERING)
+            call),<wbr> and is currently executing it.<wbr> Once PRECAPTURE
+            completes,<wbr> AE will transition to CONVERGED or
+            FLASH_<wbr>REQUIRED as appropriate</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Current state of AE algorithm
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Whenever the AE algorithm state changes,<wbr> a
+          MSG_<wbr>AUTOEXPOSURE notification must be send if a
+          notification callback is registered.<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.afMode">
+            <td class="entry_name">android.<wbr>control.<wbr>af<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">The 3A routines do not control the lens;
+            android.<wbr>lens.<wbr>focus<wbr>Position is controlled by the
+            application</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">AUTO</span>
+                    <span class="entry_type_enum_notes">if lens is not fixed focus.<wbr> Use
+            android.<wbr>lens.<wbr>minimum<wbr>Focus<wbr>Distance to determine if lens
+            is fixed focus In this mode,<wbr> the lens does not move
+            unless the autofocus trigger action is called.<wbr> When
+            that trigger is activated,<wbr> AF must transition to
+            ACTIVE_<wbr>SCAN,<wbr> then to the outcome of the scan (FOCUSED
+            or NOT_<wbr>FOCUSED).<wbr> Triggering cancel AF resets the lens
+            position to default,<wbr> and sets the AF state to
+            INACTIVE.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">MACRO</span>
+                    <span class="entry_type_enum_notes">In this mode,<wbr> the lens does not move unless the
+            autofocus trigger action is called.<wbr> When that trigger
+            is activated,<wbr> AF must transition to ACTIVE_<wbr>SCAN,<wbr> then
+            to the outcome of the scan (FOCUSED or NOT_<wbr>FOCUSED).<wbr>
+            Triggering cancel AF resets the lens position to
+            default,<wbr> and sets the AF state to
+            INACTIVE.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
+                    <span class="entry_type_enum_notes">In this mode,<wbr> the AF algorithm modifies the lens
+            position continually to attempt to provide a
+            constantly-in-focus image stream.<wbr> The focusing behavior
+            should be suitable for good quality video recording;
+            typically this means slower focus movement and no
+            overshoots.<wbr> When the AF trigger is not involved,<wbr> the AF
+            algorithm should start in INACTIVE state,<wbr> and then
+            transition into PASSIVE_<wbr>SCAN and PASSIVE_<wbr>FOCUSED states
+            as appropriate.<wbr> When the AF trigger is activated,<wbr> the
+            algorithm should immediately transition into AF_<wbr>FOCUSED
+            or AF_<wbr>NOT_<wbr>FOCUSED as appropriate,<wbr> and lock the lens
+            position until a cancel AF trigger is received.<wbr> Once
+            cancel is received,<wbr> the algorithm should transition
+            back to INACTIVE and resume passive scan.<wbr> Note that
+            this behavior is not identical to CONTINUOUS_<wbr>PICTURE,<wbr>
+            since an ongoing PASSIVE_<wbr>SCAN must immediately be
+            canceled.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
+                    <span class="entry_type_enum_notes">In this mode,<wbr> the AF algorithm modifies the lens
+            position continually to attempt to provide a
+            constantly-in-focus image stream.<wbr> The focusing behavior
+            should be suitable for still image capture; typically
+            this means focusing as fast as possible.<wbr> When the AF
+            trigger is not involved,<wbr> the AF algorithm should start
+            in INACTIVE state,<wbr> and then transition into
+            PASSIVE_<wbr>SCAN and PASSIVE_<wbr>FOCUSED states as appropriate
+            as it attempts to maintain focus.<wbr> When the AF trigger
+            is activated,<wbr> the algorithm should finish its
+            PASSIVE_<wbr>SCAN if active,<wbr> and then transition into
+            AF_<wbr>FOCUSED or AF_<wbr>NOT_<wbr>FOCUSED as appropriate,<wbr> and lock
+            the lens position until a cancel AF trigger is
+            received.<wbr> When the AF cancel trigger is activated,<wbr> the
+            algorithm should transition back to INACTIVE and then
+            act as if it has just been started.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">EDOF</span>
+                    <span class="entry_type_enum_notes">Extended depth of field (digital focus).<wbr> AF
+            trigger is ignored,<wbr> AF state should always be
+            INACTIVE.<wbr></span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether AF is currently enabled,<wbr> and what
+          mode it is set to
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.afRegions">
+            <td class="entry_name">android.<wbr>control.<wbr>af<wbr>Regions</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  5 x area_count
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of areas to use for focus
+          estimation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Each area is a rectangle plus weight: xmin,<wbr> ymin,<wbr>
+          xmax,<wbr> ymax,<wbr> weight.<wbr> The coordinate system is based on the
+          active pixel array,<wbr> with (0,<wbr>0) being the top-left of the
+          active pixel array,<wbr> and
+          (android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>width,<wbr>
+          android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>height) being the
+          bottom-right point of the active pixel array.<wbr> The weight
+          should be nonnegative.<wbr> If all regions have 0 weight,<wbr> then
+          no specific focus area needs to be used by the HAL.<wbr> If
+          the focusing region is outside the current
+          android.<wbr>scaler.<wbr>crop<wbr>Region,<wbr> the HAL should ignore the
+          sections outside the region and output the used sections
+          in the frame metadata
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.afState">
+            <td class="entry_name">android.<wbr>control.<wbr>af<wbr>State</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">INACTIVE</span>
+                    <span class="entry_type_enum_notes">AF off or has not yet tried to scan/<wbr>been asked
+            to scan</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">PASSIVE_SCAN</span>
+                    <span class="entry_type_enum_notes">if CONTINUOUS_<wbr>* modes are supported AF is
+            currently doing an AF scan initiated by a continuous
+            autofocus mode</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
+                    <span class="entry_type_enum_notes">if CONTINUOUS_<wbr>* modes are supported AF currently
+            believes it is in focus,<wbr> but may restart scanning at
+            any time.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ACTIVE_SCAN</span>
+                    <span class="entry_type_enum_notes">if AUTO or MACRO modes are supported AF is doing
+            an AF scan because it was triggered by AF
+            trigger</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
+                    <span class="entry_type_enum_notes">if any AF mode besides OFF is supported AF
+            believes it is focused correctly and is
+            locked</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
+                    <span class="entry_type_enum_notes">if any AF mode besides OFF is supported AF has
+            failed to focus successfully and is
+            locked</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Current state of AF algorithm
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Whenever the AF algorithm state changes,<wbr> a
+          MSG_<wbr>AUTOFOCUS notification must be send if a notification
+          callback is registered.<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.afTriggerId">
+            <td class="entry_name">android.<wbr>control.<wbr>af<wbr>Trigger<wbr>Id</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The ID sent with the latest
+          CAMERA2_<wbr>TRIGGER_<wbr>AUTOFOCUS call
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Must be 0 if no CAMERA2_<wbr>TRIGGER_<wbr>AUTOFOCUS trigger
+          received yet by HAL.<wbr> Always updated even if AF algorithm
+          ignores the trigger
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.awbMode">
+            <td class="entry_name">android.<wbr>control.<wbr>awb<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">AUTO</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">INCANDESCENT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FLUORESCENT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">DAYLIGHT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">TWILIGHT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SHADE</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether AWB is currently setting the color
+          transform fields,<wbr> and what its illumination target
+          is
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              [BC - AWB lock,<wbr>AWB modes]
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.awbRegions">
+            <td class="entry_name">android.<wbr>control.<wbr>awb<wbr>Regions</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  5 x area_count
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of areas to use for illuminant
+          estimation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Only used in AUTO mode.<wbr> Each area is a rectangle
+          plus weight: xmin,<wbr> ymin,<wbr> xmax,<wbr> ymax,<wbr> weight.<wbr> The
+          coordinate system is based on the active pixel array,<wbr>
+          with (0,<wbr>0) being the top-left of the active pixel array,<wbr>
+          and (android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>width,<wbr>
+          android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size.<wbr>height) being the
+          bottom-right point of the active pixel array.<wbr> The weight
+          should be nonnegative.<wbr> If all regions have 0 weight,<wbr> then
+          no specific metering area needs to be used by the HAL.<wbr> If
+          the metering region is outside the current
+          android.<wbr>scaler.<wbr>crop<wbr>Region,<wbr> the HAL should ignore the
+          sections outside the region and output the used sections
+          in the frame metadata
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.awbState">
+            <td class="entry_name">android.<wbr>control.<wbr>awb<wbr>State</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">INACTIVE</span>
+                    <span class="entry_type_enum_notes">AWB is not in auto mode</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SEARCHING</span>
+                    <span class="entry_type_enum_notes">AWB doesn't yet have a good set of control
+            values for the current scene</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CONVERGED</span>
+                    <span class="entry_type_enum_notes">AWB has a good set of control values for the
+            current scene</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">LOCKED</span>
+                    <span class="entry_type_enum_notes">AE has been locked (aeMode =
+            LOCKED)</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Current state of AWB algorithm
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Whenever the AWB algorithm state changes,<wbr> a
+          MSG_<wbr>AUTOWHITEBALANCE notification must be send if a
+          notification callback is registered.<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.control.mode">
+            <td class="entry_name">android.<wbr>control.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">Full application control of pipeline.<wbr> All 3A
+            routines are disabled,<wbr> no other settings in
+            android.<wbr>control.<wbr>* have any effect</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">AUTO</span>
+                    <span class="entry_type_enum_notes">Use settings for each individual 3A routine.<wbr>
+            Manual control of capture parameters is disabled.<wbr> All
+            controls in android.<wbr>control.<wbr>* besides sceneMode take
+            effect</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
+                    <span class="entry_type_enum_notes">Use specific scene mode.<wbr> Enabling this disables
+            control.<wbr>aeMode,<wbr> control.<wbr>awbMode and control.<wbr>afMode
+            controls; the HAL must ignore those settings while
+            USE_<wbr>SCENE_<wbr>MODE is active (except for FACE_<wbr>PRIORITY
+            scene mode).<wbr> Other control entries are still active.<wbr>
+            This setting can only be used if availableSceneModes !=
+            UNSUPPORTED</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Overall mode of 3A control
+          routines
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              all must be supported
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.demosaic.mode">
+            <td class="entry_name">android.<wbr>demosaic.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Minimal or no slowdown of frame rate compared to
+            Bayer RAW output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">High-quality may reduce output frame
+            rate</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Controls the quality of the demosaicing
+          processing
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.edge.mode">
+            <td class="entry_name">android.<wbr>edge.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">No edge enhancement is applied</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+            bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Operation mode for edge
+          enhancement
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.edge.strength">
+            <td class="entry_name">android.<wbr>edge.<wbr>strength</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Control the amount of edge enhancement
+          applied to the images
+            </td>
+
+            <td class="entry_units">
+              1-10; 10 is maximum sharpening
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.edge.mode">
+            <td class="entry_name">android.<wbr>edge.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">No edge enhancement is applied</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+            bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Operation mode for edge
+          enhancement
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.flash.firingPower">
+            <td class="entry_name">android.<wbr>flash.<wbr>firing<wbr>Power</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Power for flash firing/<wbr>torch
+            </td>
+
+            <td class="entry_units">
+              10 is max power; 0 is no flash.<wbr> Linear
+            </td>
+
+            <td class="entry_range">
+              0 - 10
+            </td>
+
+            <td class="entry_notes">
+              Power for snapshot may use a different scale than
+          for torch mode.<wbr> Only one entry for torch mode will be
+          used
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.flash.firingTime">
+            <td class="entry_name">android.<wbr>flash.<wbr>firing<wbr>Time</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Firing time of flash relative to start of
+          exposure
+            </td>
+
+            <td class="entry_units">
+              nanoseconds
+            </td>
+
+            <td class="entry_range">
+              0-(exposure time-flash duration)
+            </td>
+
+            <td class="entry_notes">
+              Clamped to (0,<wbr> exposure time - flash
+          duration).<wbr>
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.flash.mode">
+            <td class="entry_name">android.<wbr>flash.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">Do not fire the flash for this
+            capture</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SINGLE</span>
+                    <span class="entry_type_enum_notes">if android.<wbr>flash.<wbr>available is true Fire flash
+            for this capture based on firingPower,<wbr>
+            firingTime.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">TORCH</span>
+                    <span class="entry_type_enum_notes">if android.<wbr>flash.<wbr>available is true Flash
+            continuously on,<wbr> power set by
+            firingPower</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Select flash operation mode
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+                
+            
+
+                
+          <tr class="entry" id="static_android.flash.info.available">
+            <td class="entry_name">android.<wbr>flash.<wbr>info.<wbr>available</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether this camera has a
+            flash
+            </td>
+
+            <td class="entry_units">
+              boolean (0 = false,<wbr> otherwise true)
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              If no flash,<wbr> none of the flash controls do
+            anything.<wbr> All other metadata should return 0
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.flash.info.chargeDuration">
+            <td class="entry_name">android.<wbr>flash.<wbr>info.<wbr>charge<wbr>Duration</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Time taken before flash can fire
+            again
+            </td>
+
+            <td class="entry_units">
+              nanoseconds
+            </td>
+
+            <td class="entry_range">
+              0-1e9
+            </td>
+
+            <td class="entry_notes">
+              1 second too long/<wbr>too short for recharge? Should
+            this be power-dependent?
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+        
+
+                
+          <tr class="entry" id="static_android.flash.colorTemperature">
+            <td class="entry_name">android.<wbr>flash.<wbr>color<wbr>Temperature</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The x,<wbr>y whitepoint of the
+          flash
+            </td>
+
+            <td class="entry_units">
+              pair of floats
+            </td>
+
+            <td class="entry_range">
+              0-1 for both
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.flash.maxEnergy">
+            <td class="entry_name">android.<wbr>flash.<wbr>max<wbr>Energy</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Max energy output of the flash for a full
+          power single flash
+            </td>
+
+            <td class="entry_units">
+              lumen-seconds
+            </td>
+
+            <td class="entry_range">
+              >= 0
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.flash.firingPower">
+            <td class="entry_name">android.<wbr>flash.<wbr>firing<wbr>Power</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Power for flash firing/<wbr>torch
+            </td>
+
+            <td class="entry_units">
+              10 is max power; 0 is no flash.<wbr> Linear
+            </td>
+
+            <td class="entry_range">
+              0 - 10
+            </td>
+
+            <td class="entry_notes">
+              Power for snapshot may use a different scale than
+          for torch mode.<wbr> Only one entry for torch mode will be
+          used
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.flash.firingTime">
+            <td class="entry_name">android.<wbr>flash.<wbr>firing<wbr>Time</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Firing time of flash relative to start of
+          exposure
+            </td>
+
+            <td class="entry_units">
+              nanoseconds
+            </td>
+
+            <td class="entry_range">
+              0-(exposure time-flash duration)
+            </td>
+
+            <td class="entry_notes">
+              Clamped to (0,<wbr> exposure time - flash
+          duration).<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.flash.mode">
+            <td class="entry_name">android.<wbr>flash.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">Do not fire the flash for this
+            capture</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SINGLE</span>
+                    <span class="entry_type_enum_notes">if android.<wbr>flash.<wbr>available is true Fire flash
+            for this capture based on firingPower,<wbr>
+            firingTime.<wbr></span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">TORCH</span>
+                    <span class="entry_type_enum_notes">if android.<wbr>flash.<wbr>available is true Flash
+            continuously on,<wbr> power set by
+            firingPower</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Select flash operation mode
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.flash.state">
+            <td class="entry_name">android.<wbr>flash.<wbr>state</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">UNAVAILABLE</span>
+                    <span class="entry_type_enum_notes">No flash on camera</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CHARGING</span>
+                    <span class="entry_type_enum_notes">if android.<wbr>flash.<wbr>available is true Flash is
+            charging and cannot be fired</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">READY</span>
+                    <span class="entry_type_enum_notes">if android.<wbr>flash.<wbr>available is true Flash is
+            ready to fire</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FIRED</span>
+                    <span class="entry_type_enum_notes">if android.<wbr>flash.<wbr>available is true Flash fired
+            for this capture</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Current state of the flash
+          unit
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_geometric" class="section">geometric</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.geometric.mode">
+            <td class="entry_name">android.<wbr>geometric.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">No geometric correction is
+            applied</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+            bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Operating mode of geometric
+          correction
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.geometric.strength">
+            <td class="entry_name">android.<wbr>geometric.<wbr>strength</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Control the amount of shading correction
+          applied to the images
+            </td>
+
+            <td class="entry_units">
+              unitless: 1-10; 10 is full shading
+          compensation
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.hotPixel.mode">
+            <td class="entry_name">android.<wbr>hot<wbr>Pixel.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">No hot pixel correction can be
+            applied</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Frame rate must not be reduced compared to raw
+            Bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Set operational mode for hot pixel
+          correction
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+                
+            
+
+                
+          <tr class="entry" id="static_android.hotPixel.info.map">
+            <td class="entry_name">android.<wbr>hot<wbr>Pixel.<wbr>info.<wbr>map</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2 x n
+                </span>
+
+                <div class="entry_type_notes">list of coordinates based on android.<wbr>sensor.<wbr>pixel<wbr>Array<wbr>Size</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Location of hot/<wbr>defective pixels on
+            sensor
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+        
+
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.hotPixel.mode">
+            <td class="entry_name">android.<wbr>hot<wbr>Pixel.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">No hot pixel correction can be
+            applied</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Frame rate must not be reduced compared to raw
+            Bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Set operational mode for hot pixel
+          correction
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>gps<wbr>Coordinates</td>
+            <td class="entry_type">
+              <span class="entry_type_name">double</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  3
+                </span>
+
+                <div class="entry_type_notes">latitude,<wbr> longitude,<wbr> altitude.<wbr> First two in degrees,<wbr> the third in meters</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              GPS coordinates to include in output JPEG
+          EXIF
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              (-180 - 180],<wbr> [-90,<wbr>90],<wbr> [-inf,<wbr> inf]
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>gps<wbr>Processing<wbr>Method</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              32 characters describing GPS algorithm to
+          include in EXIF
+            </td>
+
+            <td class="entry_units">
+              UTF-8 null-terminated string
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>gps<wbr>Timestamp</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Time GPS fix was made to include in
+          EXIF
+            </td>
+
+            <td class="entry_units">
+              UTC in seconds since January 1,<wbr> 1970
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.jpeg.orientation">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>orientation</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Orientation of JPEG image to
+          write
+            </td>
+
+            <td class="entry_units">
+              Degrees in multiples of 90
+            </td>
+
+            <td class="entry_range">
+              0,<wbr> 90,<wbr> 180,<wbr> 270
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.jpeg.quality">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>quality</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Compression quality of the final JPEG
+          image
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              1-100; larger is higher quality
+            </td>
+
+            <td class="entry_notes">
+              85-95 is typical usage range
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>thumbnail<wbr>Quality</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Compression quality of JPEG
+          thumbnail
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              1-100; larger is higher quality
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>thumbnail<wbr>Size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Resolution of embedded JPEG
+          thumbnail
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              from android.<wbr>jpeg.<wbr>available<wbr>Thumbnail<wbr>Sizes
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>available<wbr>Thumbnail<wbr>Sizes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2 x n
+                </span>
+
+                <div class="entry_type_notes">list of resolution pairs</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Supported resolutions for the JPEG
+          thumbnail
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Must include at least one valid resolution,<wbr> plus
+          (0,<wbr>0) for no thumbnail generation
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.jpeg.maxSize">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>max<wbr>Size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Maximum size in bytes for the compressed
+          JPEG buffer
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Must be large enough to fit any JPEG produced by
+          the camera
+            </td>
+
+            <td class="entry_notes">
+              This is used for sizing the gralloc buffers for
+          JPEG
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>gps<wbr>Coordinates</td>
+            <td class="entry_type">
+              <span class="entry_type_name">double</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  3
+                </span>
+
+                <div class="entry_type_notes">latitude,<wbr> longitude,<wbr> altitude.<wbr> First two in degrees,<wbr> the third in meters</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              GPS coordinates to include in output JPEG
+          EXIF
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              (-180 - 180],<wbr> [-90,<wbr>90],<wbr> [-inf,<wbr> inf]
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>gps<wbr>Processing<wbr>Method</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              32 characters describing GPS algorithm to
+          include in EXIF
+            </td>
+
+            <td class="entry_units">
+              UTF-8 null-terminated string
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>gps<wbr>Timestamp</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Time GPS fix was made to include in
+          EXIF
+            </td>
+
+            <td class="entry_units">
+              UTC in seconds since January 1,<wbr> 1970
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.jpeg.orientation">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>orientation</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Orientation of JPEG image to
+          write
+            </td>
+
+            <td class="entry_units">
+              Degrees in multiples of 90
+            </td>
+
+            <td class="entry_range">
+              0,<wbr> 90,<wbr> 180,<wbr> 270
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.jpeg.quality">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>quality</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Compression quality of the final JPEG
+          image
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              1-100; larger is higher quality
+            </td>
+
+            <td class="entry_notes">
+              85-95 is typical usage range
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.jpeg.size">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The size of the compressed JPEG image,<wbr> in
+          bytes
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              >= 0
+            </td>
+
+            <td class="entry_notes">
+              If no JPEG output is produced for the request,<wbr>
+          this must be 0.<wbr> Otherwise,<wbr> this describes the real size
+          of the compressed JPEG image placed in the output stream.<wbr>
+          More specifically,<wbr> if android.<wbr>jpeg.<wbr>max<wbr>Size = 1000000,<wbr> and
+          a specific capture has android.<wbr>jpeg.<wbr>size = 500000,<wbr> then
+          the output buffer from the JPEG stream will be 1000000
+          bytes,<wbr> of which the first 500000 make up the real
+          data.<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>thumbnail<wbr>Quality</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Compression quality of JPEG
+          thumbnail
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              1-100; larger is higher quality
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
+            <td class="entry_name">android.<wbr>jpeg.<wbr>thumbnail<wbr>Size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Resolution of embedded JPEG
+          thumbnail
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              from android.<wbr>jpeg.<wbr>available<wbr>Thumbnail<wbr>Sizes
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.lens.aperture">
+            <td class="entry_name">android.<wbr>lens.<wbr>aperture</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Size of the lens aperture
+            </td>
+
+            <td class="entry_units">
+              f-number (f/<wbr>NNN)
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>lens.<wbr>info.<wbr>available<wbr>Apertures
+            </td>
+
+            <td class="entry_notes">
+              Will not be supported on most devices.<wbr> Can only
+          pick from supported list
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.lens.filterDensity">
+            <td class="entry_name">android.<wbr>lens.<wbr>filter<wbr>Density</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              State of lens neutral density
+          filter(s)
+            </td>
+
+            <td class="entry_units">
+              number of stops of filtering
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>lens.<wbr>info.<wbr>available<wbr>Filter<wbr>Densities
+            </td>
+
+            <td class="entry_notes">
+              Will not be supported on most devices.<wbr> Can only
+          pick from supported list
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.lens.focalLength">
+            <td class="entry_name">android.<wbr>lens.<wbr>focal<wbr>Length</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Lens optical zoom setting
+            </td>
+
+            <td class="entry_units">
+              focal length in mm
+            </td>
+
+            <td class="entry_range">
+              > 0
+            </td>
+
+            <td class="entry_notes">
+              Will not be supported on most devices.<wbr>
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.lens.focusDistance">
+            <td class="entry_name">android.<wbr>lens.<wbr>focus<wbr>Distance</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Distance to plane of sharpest focus,<wbr>
+          measured from frontmost surface of the lens
+            </td>
+
+            <td class="entry_units">
+              diopters (1/<wbr>m)
+            </td>
+
+            <td class="entry_range">
+              >= 0
+            </td>
+
+            <td class="entry_notes">
+              0 = infinity focus.<wbr> Used value should be clamped
+          to (0,<wbr>minimum focus distance)
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
+            <td class="entry_name">android.<wbr>lens.<wbr>optical<wbr>Stabilization<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether optical image stabilization is
+          enabled.<wbr>
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>lens.<wbr>available<wbr>Optical<wbr>Stabilization
+            </td>
+
+            <td class="entry_notes">
+              Will not be supported on most devices.<wbr>
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+                
+            
+
+                
+          <tr class="entry" id="static_android.lens.info.availableApertures">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>available<wbr>Apertures</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of supported aperture
+            values
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              one entry required,<wbr> > 0
+            </td>
+
+            <td class="entry_notes">
+              If variable aperture not available,<wbr> only setting
+            should be for the fixed aperture
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>available<wbr>Filter<wbr>Densities</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of supported ND filter
+            values
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              one entry required,<wbr> >= 0
+            </td>
+
+            <td class="entry_notes">
+              If not available,<wbr> only setting is 0.<wbr> Otherwise,<wbr>
+            lists the available exposure index values for dimming
+            (2 would mean the filter is set to reduce incoming
+            light by two stops)
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>available<wbr>Focal<wbr>Lengths</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">the list of available focal lengths</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              If fitted with optical zoom,<wbr> what focal
+            lengths are available.<wbr> If not,<wbr> the static focal
+            length
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              > 0
+            </td>
+
+            <td class="entry_notes">
+              If optical zoom not supported,<wbr> only one value
+            should be reported
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>available<wbr>Optical<wbr>Stabilization</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">list of enums</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of supported optical image
+            stabilization modes
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.info.geometricCorrectionMap">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>geometric<wbr>Correction<wbr>Map</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2 x 3 x n x m
+                </span>
+
+                <div class="entry_type_notes">2D array of destination coordinate pairs for uniform grid points in source image,<wbr> per color channel.<wbr> Size in the range of 2x3x40x30</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              A low-resolution map for correction of
+            geometric distortions and chromatic aberrations,<wbr> per
+            color channel
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              N,<wbr> M >= 2
+            </td>
+
+            <td class="entry_notes">
+              [DNG wants a function instead].<wbr> What's easiest
+            for implementers? With an array size (M,<wbr> N),<wbr> entry (i,<wbr>
+            j) provides the destination for pixel (i/<wbr>(M-1) * width,<wbr>
+            j/<wbr>(N-1) * height).<wbr> Data is row-major,<wbr> with each array
+            entry being ( (X,<wbr> Y)_<wbr>r,<wbr> (X,<wbr> Y)_<wbr>g,<wbr> (X,<wbr> Y)_<wbr>b ) )
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.info.geometricCorrectionMapSize">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>geometric<wbr>Correction<wbr>Map<wbr>Size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+                <div class="entry_type_notes">width and height of geometric correction map</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Dimensions of geometric correction
+            map
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Both values >= 2
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>hyperfocal<wbr>Distance</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Hyperfocal distance for this lens; set to
+            0 if fixed focus
+            </td>
+
+            <td class="entry_units">
+              diopters
+            </td>
+
+            <td class="entry_range">
+              >= 0
+            </td>
+
+            <td class="entry_notes">
+              The hyperfocal distance is used for the old
+            API's 'fixed' setting
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>minimum<wbr>Focus<wbr>Distance</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Shortest distance from frontmost surface
+            of the lens that can be focused correctly
+            </td>
+
+            <td class="entry_units">
+              diopters
+            </td>
+
+            <td class="entry_range">
+              >= 0
+            </td>
+
+            <td class="entry_notes">
+              If the lens is fixed-focus,<wbr> this should be
+            0
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.info.shadingMap">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>shading<wbr>Map</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  3 x n x m
+                </span>
+
+                <div class="entry_type_notes">2D array of float gain factors per channel to correct for lens falloff.<wbr> Should be on the order of 3x40x30</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              A low-resolution map of lens shading,<wbr> per
+            color channel
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Each gain factor is >= 1
+            </td>
+
+            <td class="entry_notes">
+              Assume bilinear interpolation of map.<wbr> The least
+            shaded section of the image should have a gain factor
+            of 1; all other sections should have gains above
+            1.<wbr>
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.info.shadingMapSize">
+            <td class="entry_name">android.<wbr>lens.<wbr>info.<wbr>shading<wbr>Map<wbr>Size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+                <div class="entry_type_notes">width and height of lens shading map</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Dimensions of lens shading
+            map
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Both values >= 1
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+        
+
+                
+          <tr class="entry" id="static_android.lens.facing">
+            <td class="entry_name">android.<wbr>lens.<wbr>facing</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">FRONT</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">BACK</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Direction the camera faces relative to
+          device screen
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.opticalAxisAngle">
+            <td class="entry_name">android.<wbr>lens.<wbr>optical<wbr>Axis<wbr>Angle</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+                <div class="entry_type_notes">degrees.<wbr> First defines the angle of separation between the perpendicular to the screen and the camera optical axis.<wbr> The second then defines the clockwise rotation of the optical axis from native device up.<wbr></div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Relative angle of camera optical axis to the
+          perpendicular axis from the display
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              [0-90) for first angle,<wbr> [0-360) for second
+            </td>
+
+            <td class="entry_notes">
+              Examples: (0,<wbr>0) means that the camera optical axis
+          is perpendicular to the display surface; (45,<wbr>0) means
+          that the camera points 45 degrees up when device is held
+          upright; (45,<wbr>90) means the camera points 45 degrees to
+          the right when the device is held upright.<wbr> Use FACING
+          field to determine perpendicular outgoing
+          direction
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.lens.position">
+            <td class="entry_name">android.<wbr>lens.<wbr>position</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  3, location in mm, in the sensor coordinate
+            system
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Coordinates of camera optical axis on
+          device
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.lens.aperture">
+            <td class="entry_name">android.<wbr>lens.<wbr>aperture</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Size of the lens aperture
+            </td>
+
+            <td class="entry_units">
+              f-number (f/<wbr>NNN)
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>lens.<wbr>info.<wbr>available<wbr>Apertures
+            </td>
+
+            <td class="entry_notes">
+              Will not be supported on most devices.<wbr> Can only
+          pick from supported list
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.lens.filterDensity">
+            <td class="entry_name">android.<wbr>lens.<wbr>filter<wbr>Density</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              State of lens neutral density
+          filter(s)
+            </td>
+
+            <td class="entry_units">
+              number of stops of filtering
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>lens.<wbr>info.<wbr>available<wbr>Filter<wbr>Densities
+            </td>
+
+            <td class="entry_notes">
+              Will not be supported on most devices.<wbr> Can only
+          pick from supported list
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.lens.focalLength">
+            <td class="entry_name">android.<wbr>lens.<wbr>focal<wbr>Length</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Lens optical zoom setting
+            </td>
+
+            <td class="entry_units">
+              focal length in mm
+            </td>
+
+            <td class="entry_range">
+              > 0
+            </td>
+
+            <td class="entry_notes">
+              Will not be supported on most devices.<wbr>
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.lens.focusDistance">
+            <td class="entry_name">android.<wbr>lens.<wbr>focus<wbr>Distance</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Distance to plane of sharpest focus,<wbr>
+          measured from frontmost surface of the lens
+            </td>
+
+            <td class="entry_units">
+              diopters (1/<wbr>m)
+            </td>
+
+            <td class="entry_range">
+              >= 0
+            </td>
+
+            <td class="entry_notes">
+              Should be zero for fixed-focus cameras
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.lens.focusRange">
+            <td class="entry_name">android.<wbr>lens.<wbr>focus<wbr>Range</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The range of scene distances that are in
+          sharp focus (depth of field)
+            </td>
+
+            <td class="entry_units">
+              pair of focus distances in diopters: (near,<wbr>
+          far)
+            </td>
+
+            <td class="entry_range">
+              >=0
+            </td>
+
+            <td class="entry_notes">
+              If variable focus not supported,<wbr> can still report
+          fixed depth of field range
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
+            <td class="entry_name">android.<wbr>lens.<wbr>optical<wbr>Stabilization<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                    <span class="entry_type_enum_optional">optional</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Whether optical image stabilization is
+          enabled.<wbr>
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>lens.<wbr>available<wbr>Optical<wbr>Stabilization
+            </td>
+
+            <td class="entry_notes">
+              Will not be supported on most devices.<wbr>
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.lens.state">
+            <td class="entry_name">android.<wbr>lens.<wbr>state</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">STATIONARY</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Current lens status
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.noiseReduction.mode">
+            <td class="entry_name">android.<wbr>noise<wbr>Reduction.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">No noise reduction is applied</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+            bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">May slow down frame rate to provide highest
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Mode of operation for the noise reduction
+          algorithm
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>noise<wbr>Reduction.<wbr>available<wbr>Modes
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.noiseReduction.strength">
+            <td class="entry_name">android.<wbr>noise<wbr>Reduction.<wbr>strength</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Control the amount of noise reduction
+          applied to the images
+            </td>
+
+            <td class="entry_units">
+              1-10; 10 is max noise reduction
+            </td>
+
+            <td class="entry_range">
+              1 - 10
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.noiseReduction.mode">
+            <td class="entry_name">android.<wbr>noise<wbr>Reduction.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">No noise reduction is applied</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+            bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">May slow down frame rate to provide highest
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Mode of operation for the noise reduction
+          algorithm
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>noise<wbr>Reduction.<wbr>available<wbr>Modes
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
+
+
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="static_android.quirks.meteringCropRegion">
+            <td class="entry_name">android.<wbr>quirks.<wbr>metering<wbr>Crop<wbr>Region</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              If set to 1,<wbr> the camera service does not
+          scale 'normalized' coordinates with respect to the crop
+          region.<wbr> This applies to metering input (a{e,<wbr>f,<wbr>wb}Region
+          and output (face rectangles).<wbr>
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Normalized coordinates refer to those in the
+          (-1000,<wbr>1000) range mentioned in the
+          android.<wbr>hardware.<wbr><wbr>Camera API.<wbr> HAL implementations should
+          instead always use and emit sensor array-relative
+          coordinates for all region data.<wbr> Does not need to be
+          listed in static metadata.<wbr> Support will be removed in
+          future versions of camera service.<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
+            <td class="entry_name">android.<wbr>quirks.<wbr>trigger<wbr>Af<wbr>With<wbr>Auto</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              If set to 1,<wbr> then the camera service always
+          switches to FOCUS_<wbr>MODE_<wbr>AUTO before issuing a AF
+          trigger.<wbr>
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              HAL implementations should implement AF trigger
+          modes for AUTO,<wbr> MACRO,<wbr> CONTINUOUS_<wbr>FOCUS,<wbr> and
+          CONTINUOUS_<wbr>PICTURE modes instead of using this flag.<wbr> Does
+          not need to be listed in static metadata.<wbr> Support will be
+          removed in future versions of camera service
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.quirks.useZslFormat">
+            <td class="entry_name">android.<wbr>quirks.<wbr>use<wbr>Zsl<wbr>Format</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              If set to 1,<wbr> the camera service uses
+          CAMERA2_<wbr>PIXEL_<wbr>FORMAT_<wbr>ZSL instead of
+          HAL_<wbr>PIXEL_<wbr>FORMAT_<wbr>IMPLEMENTATION_<wbr>DEFINED for the zero
+          shutter lag stream
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              HAL implementations should use gralloc usage flags
+          to determine that a stream will be used for
+          zero-shutter-lag,<wbr> instead of relying on an explicit
+          format setting.<wbr> Does not need to be listed in static
+          metadata.<wbr> Support will be removed in future versions of
+          camera service.<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_request" class="section">request</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.request.frameCount">
+            <td class="entry_name">android.<wbr>request.<wbr>frame<wbr>Count</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              A frame counter set by the framework.<wbr> Must
+          be maintained unchanged in output frame
+            </td>
+
+            <td class="entry_units">
+              incrementing integer
+            </td>
+
+            <td class="entry_range">
+              Any int
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.request.id">
+            <td class="entry_name">android.<wbr>request.<wbr>id</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              An application-specified ID for the current
+          request.<wbr> Must be maintained unchanged in output
+          frame
+            </td>
+
+            <td class="entry_units">
+              arbitrary integer assigned by application
+            </td>
+
+            <td class="entry_range">
+              Any int
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.request.inputStreams">
+            <td class="entry_name">android.<wbr>request.<wbr>input<wbr>Streams</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List which camera reprocess stream is used
+          for the source of reprocessing data.<wbr>
+            </td>
+
+            <td class="entry_units">
+              List of camera reprocess stream IDs
+            </td>
+
+            <td class="entry_range">
+              Typically,<wbr> only one entry allowed,<wbr> must be a valid
+          reprocess stream ID.<wbr> If android.<wbr>jpeg.<wbr>needs<wbr>Thumbnail is
+          set,<wbr> then multiple reprocess streams may be included in a
+          single request; they must be different scaled versions of
+          the same image.<wbr>
+            </td>
+
+            <td class="entry_notes">
+              Only meaningful when android.<wbr>request.<wbr>type ==
+          REPROCESS.<wbr> Ignored otherwise
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.request.metadataMode">
+            <td class="entry_name">android.<wbr>request.<wbr>metadata<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">NONE</span>
+                    <span class="entry_type_enum_notes">No metadata should be produced on output,<wbr> except
+            for application-bound buffer data.<wbr> If no
+            application-bound streams exist,<wbr> no frame should be
+            placed in the output frame queue.<wbr> If such streams
+            exist,<wbr> a frame should be placed on the output queue
+            with null metadata but with the necessary output buffer
+            information.<wbr> Timestamp information should still be
+            included with any output stream buffers</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FULL</span>
+                    <span class="entry_type_enum_notes">All metadata should be produced.<wbr> Statistics will
+            only be produced if they are separately
+            enabled</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              How much metadata to produce on
+          output
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.request.outputStreams">
+            <td class="entry_name">android.<wbr>request.<wbr>output<wbr>Streams</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Lists which camera output streams image data
+          from this capture must be sent to
+            </td>
+
+            <td class="entry_units">
+              List of camera stream IDs
+            </td>
+
+            <td class="entry_range">
+              List must only include streams that have been
+          created
+            </td>
+
+            <td class="entry_notes">
+              If no output streams are listed,<wbr> then the image
+          data should simply be discarded.<wbr> The image data must
+          still be captured for metadata and statistics production,<wbr>
+          and the lens and flash must operate as requested.<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.request.type">
+            <td class="entry_name">android.<wbr>request.<wbr>type</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">CAPTURE</span>
+                    <span class="entry_type_enum_notes">Capture a new image from the imaging hardware,<wbr>
+            and process it according to the
+            settings</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">REPROCESS</span>
+                    <span class="entry_type_enum_notes">Process previously captured data; the
+            android.<wbr>request.<wbr>input<wbr>Stream parameter determines the
+            source reprocessing stream.<wbr> TODO: Mark dynamic metadata
+            needed for reprocessing with [RP]</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The type of the request; either CAPTURE or
+          REPROCESS
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="static_android.request.maxNumOutputStreams">
+            <td class="entry_name">android.<wbr>request.<wbr>max<wbr>Num<wbr>Output<wbr>Streams</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  3
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              How many output streams can be allocated at
+          the same time for each type of stream
+            </td>
+
+            <td class="entry_units">
+              The number of raw sensor streams; the number of
+          processed,<wbr> uncompressed streams; and the number of
+          JPEG-compressed streams
+            </td>
+
+            <td class="entry_range">
+              >=1 for Raw and JPEG-compressed stream.<wbr> >= 3
+          for processed,<wbr> uncompressed streams
+            </td>
+
+            <td class="entry_notes">
+              Video snapshot with preview callbacks requires 3
+          processed streams (preview,<wbr> record,<wbr> app callbacks) and
+          one JPEG stream (snapshot)
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
+            <td class="entry_name">android.<wbr>request.<wbr>max<wbr>Num<wbr>Reprocess<wbr>Streams</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  1
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              How many reprocessing streams of any type
+          can be allocated at the same time
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              >= 1
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.request.frameCount">
+            <td class="entry_name">android.<wbr>request.<wbr>frame<wbr>Count</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Number of frames captured since
+          open()
+            </td>
+
+            <td class="entry_units">
+              count of frames
+            </td>
+
+            <td class="entry_range">
+              > 0
+            </td>
+
+            <td class="entry_notes">
+              Reset on release()
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.request.id">
+            <td class="entry_name">android.<wbr>request.<wbr>id</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              An application-specified ID for the current
+          request.<wbr> Must be maintained unchanged in output
+          frame
+            </td>
+
+            <td class="entry_units">
+              arbitrary integer assigned by application
+            </td>
+
+            <td class="entry_range">
+              Any int
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.request.metadataMode">
+            <td class="entry_name">android.<wbr>request.<wbr>metadata<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">NONE</span>
+                    <span class="entry_type_enum_notes">No metadata should be produced on output,<wbr> except
+            for application-bound buffer data.<wbr> If no
+            application-bound streams exist,<wbr> no frame should be
+            placed in the output frame queue.<wbr> If such streams
+            exist,<wbr> a frame should be placed on the output queue
+            with null metadata but with the necessary output buffer
+            information.<wbr> Timestamp information should still be
+            included with any output stream buffers</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FULL</span>
+                    <span class="entry_type_enum_notes">All metadata should be produced.<wbr> Statistics will
+            only be produced if they are separately
+            enabled</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              How much metadata to produce on
+          output
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.request.outputStreams">
+            <td class="entry_name">android.<wbr>request.<wbr>output<wbr>Streams</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Lists which camera output streams image data
+          from this capture must be sent to
+            </td>
+
+            <td class="entry_units">
+              List of camera stream IDs
+            </td>
+
+            <td class="entry_range">
+              List must only include streams that have been
+          created
+            </td>
+
+            <td class="entry_notes">
+              If no output streams are listed,<wbr> then the image
+          data should simply be discarded.<wbr> The image data must
+          still be captured for metadata and statistics production,<wbr>
+          and the lens and flash must operate as requested.<wbr>
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.scaler.cropRegion">
+            <td class="entry_name">android.<wbr>scaler.<wbr>crop<wbr>Region</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  3
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Top-left corner and width of the output
+          region to select from the active pixel
+          array
+            </td>
+
+            <td class="entry_units">
+              (x,<wbr>y) of top-left corner,<wbr> width of region in
+          pixels; (0,<wbr>0) is top-left corner of
+          android.<wbr>sensor.<wbr>active<wbr>Pixel<wbr>Array
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              [BC - zoom] Height determined based on width and
+          aspect ratio of output stream.<wbr> Negative values for corner
+          are allowed for raw output if full pixel array is larger
+          than active pixel array.<wbr> Width may be rounded to nearest
+          larger supportable width,<wbr> especially for raw output,<wbr>
+          where only a few fixed scales may be possible
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="static_android.scaler.availableFormats">
+            <td class="entry_name">android.<wbr>scaler.<wbr>available<wbr>Formats</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">values from HAL_<wbr>PIXEL_<wbr>FORMAT_<wbr>* in /<wbr>system/<wbr>core/<wbr>include/<wbr>system/<wbr>graphics.<wbr>h</div>
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">RAW_SENSOR</span>
+                    <span class="entry_type_enum_value">0x20</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">YV12</span>
+                    <span class="entry_type_enum_value">0x32315659</span>
+                    <span class="entry_type_enum_notes">YCrCb 4:2:0 Planar</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">YCbCr_420_SP</span>
+                    <span class="entry_type_enum_value">0x11</span>
+                    <span class="entry_type_enum_notes">NV21</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">JPEG</span>
+                    <span class="entry_type_enum_value">0x21</span>
+                    <span class="entry_type_enum_notes">BLOB</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of app-visible formats
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
+            <td class="entry_name">android.<wbr>scaler.<wbr>available<wbr>Jpeg<wbr>Min<wbr>Durations</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The minimum frame duration that is supported
+          for each resolution in availableJpegSizes.<wbr> Should
+          correspond to the frame duration when only that JPEG
+          stream is active,<wbr> with all processing set to
+          FAST
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              When multiple streams are configured,<wbr> the minimum
+          frame duration will be >= max(individual stream min
+          durations)
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.scaler.availableJpegSizes">
+            <td class="entry_name">android.<wbr>scaler.<wbr>available<wbr>Jpeg<wbr>Sizes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n x 2
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The resolutions available for output from
+          the JPEG block.<wbr> Listed as width x height
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Must include: - sensor maximum resolution Should
+          include: - half/<wbr>quarter max resolution
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
+            <td class="entry_name">android.<wbr>scaler.<wbr>available<wbr>Max<wbr>Digital<wbr>Zoom</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              TODO: have a real description here
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
+            <td class="entry_name">android.<wbr>scaler.<wbr>available<wbr>Processed<wbr>Min<wbr>Durations</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The minimum frame duration that is supported
+          for each resolution in availableProcessedSizes.<wbr> Should
+          correspond to the frame duration when only that processed
+          stream is active,<wbr> with all processing set to
+          FAST
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              When multiple streams are configured,<wbr> the minimum
+          frame duration will be >= max(individual stream min
+          durations)
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
+            <td class="entry_name">android.<wbr>scaler.<wbr>available<wbr>Processed<wbr>Sizes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n x 2
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The resolutions available for use with
+          processed output streams,<wbr> such as YV12,<wbr> NV12,<wbr> and
+          platform opaque YUV/<wbr>RGB streams to the GPU or video
+          encoders.<wbr> Listed as width,<wbr> height
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Must include: - sensor maximum resolution -
+          standard QCIF,<wbr> 240p,<wbr> 480p,<wbr> 720p,<wbr> and 1080p
+          resolutions
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
+            <td class="entry_name">android.<wbr>scaler.<wbr>available<wbr>Raw<wbr>Min<wbr>Durations</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The minimum frame duration that is supported
+          for each raw resolution in availableRawSizes.<wbr> Should
+          correspond to the frame duration when only the raw stream
+          is active.<wbr>
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              When multiple streams are configured,<wbr> the minimum
+          frame duration will be >= max(individual stream min
+          durations)
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.scaler.availableRawSizes">
+            <td class="entry_name">android.<wbr>scaler.<wbr>available<wbr>Raw<wbr>Sizes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n x 2
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The resolutions available for use with raw
+          sensor output streams,<wbr> listed as width,<wbr>
+          height
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Must include: - sensor maximum resolution
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.scaler.maxDigitalZoom">
+            <td class="entry_name">android.<wbr>scaler.<wbr>max<wbr>Digital<wbr>Zoom</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The maximum ratio between active area width
+          and crop region width,<wbr> or between active area height and
+          crop region height,<wbr> if the crop region height is larger
+          than width
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              >=1
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.scaler.cropRegion">
+            <td class="entry_name">android.<wbr>scaler.<wbr>crop<wbr>Region</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  3
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Top-left corner and width of the output
+          region to select from the active pixel
+          array
+            </td>
+
+            <td class="entry_units">
+              (x,<wbr>y) of top-left corner,<wbr> width of region in
+          pixels; (0,<wbr>0) is top-left corner of
+          android.<wbr>sensor.<wbr>active<wbr>Pixel<wbr>Array
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              [BC - zoom] Height determined based on width and
+          aspect ratio of output stream.<wbr> Negative values for corner
+          are allowed for raw output if full pixel array is larger
+          than active pixel array.<wbr> Width may be rounded to nearest
+          larger supportable width,<wbr> especially for raw output,<wbr>
+          where only a few fixed scales may be possible
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.sensor.exposureTime">
+            <td class="entry_name">android.<wbr>sensor.<wbr>exposure<wbr>Time</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Duration each pixel is exposed to
+          light
+            </td>
+
+            <td class="entry_units">
+              nanoseconds
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>sensor.<wbr>info.<wbr>exposure<wbr>Time<wbr>Range
+            </td>
+
+            <td class="entry_notes">
+              1/<wbr>10000 - 30 sec range.<wbr> No bulb mode
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.sensor.frameDuration">
+            <td class="entry_name">android.<wbr>sensor.<wbr>frame<wbr>Duration</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Duration from start of frame exposure to
+          start of next frame exposure
+            </td>
+
+            <td class="entry_units">
+              nanoseconds
+            </td>
+
+            <td class="entry_range">
+              see android.<wbr>sensor.<wbr>info.<wbr>max<wbr>Frame<wbr>Duration,<wbr>
+          android.<wbr>scaler.<wbr>info.<wbr>available<wbr>Min<wbr>Frame<wbr>Durations
+            </td>
+
+            <td class="entry_notes">
+              Exposure time has priority,<wbr> so duration is set to
+          max(duration,<wbr> exposure time + overhead)
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.sensor.sensitivity">
+            <td class="entry_name">android.<wbr>sensor.<wbr>sensitivity</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Gain applied to image data.<wbr> Must be
+          implemented through analog gain only if set to values
+          below 'maximum analog sensitivity'.<wbr>
+            </td>
+
+            <td class="entry_units">
+              ISO arithmetic units
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>sensor.<wbr>info.<wbr>sensitivity<wbr>Range
+            </td>
+
+            <td class="entry_notes">
+              ISO 12232:2006 REI method
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+                
+            
+
+                
+          <tr class="entry" id="static_android.sensor.info.activeArraySize">
+            <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>active<wbr>Array<wbr>Size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  4
+                </span>
+
+                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Area of raw data which corresponds to only
+            active pixels; smaller or equal to
+            pixelArraySize.<wbr>
+            </td>
+
+            <td class="entry_units">
+              xmin,<wbr> ymin,<wbr> width,<wbr> height.<wbr> Top left of full
+            pixel array is (0,<wbr>0)
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.info.availableSensitivities">
+            <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>available<wbr>Sensitivities</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">List of supported sensitivity values</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Range of valid sensitivities
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Must at least include 100,<wbr> 200,<wbr> 400,<wbr> 800,<wbr>
+            1600
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
+            <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>color<wbr>Filter<wbr>Arrangement</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">RGGB</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">GRBG</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">GBRG</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">BGGR</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">RGB</span>
+                    <span class="entry_type_enum_notes">Sensor is not Bayer; output has 3 16-bit
+              values for each pixel,<wbr> instead of just 1 16-bit value
+              per pixel.<wbr></span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Arrangement of color filters on sensor;
+            represents the colors in the top-left 2x2 section of
+            the sensor,<wbr> in reading order
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
+            <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>exposure<wbr>Time<wbr>Range</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+                <div class="entry_type_notes">nanoseconds</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Range of valid exposure
+            times
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Min <= 100e3 (100 us),<wbr> Max >= 30e9 (30
+            sec)
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
+            <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>max<wbr>Frame<wbr>Duration</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Maximum frame duration (minimum frame
+            rate)
+            </td>
+
+            <td class="entry_units">
+              nanoseconds
+            </td>
+
+            <td class="entry_range">
+              >= 30e9
+            </td>
+
+            <td class="entry_notes">
+              Minimum duration is a function of resolution,<wbr>
+            processing settings.<wbr> See
+            android.<wbr>scaler.<wbr>info.<wbr>available<wbr>Min<wbr>Frame<wbr>Durations
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.info.physicalSize">
+            <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>physical<wbr>Size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+                <div class="entry_type_notes">width x height in millimeters</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              The physical dimensions of the full pixel
+            array
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Needed for FOV calculation for old API
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
+            <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>pixel<wbr>Array<wbr>Size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Dimensions of full pixel array,<wbr> possibly
+            including black calibration pixels
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Maximum output resolution for raw format must
+            match this in
+            android.<wbr>scaler.<wbr>info.<wbr>available<wbr>Sizes<wbr>Per<wbr>Format
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.info.whiteLevel">
+            <td class="entry_name">android.<wbr>sensor.<wbr>info.<wbr>white<wbr>Level</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Maximum raw value output by
+            sensor
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              > 1024 (10-bit output)
+            </td>
+
+            <td class="entry_notes">
+              Defines sensor bit depth (10-14 bits is
+            expected)
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+        
+
+                
+          <tr class="entry" id="static_android.sensor.baseGainFactor">
+            <td class="entry_name">android.<wbr>sensor.<wbr>base<wbr>Gain<wbr>Factor</td>
+            <td class="entry_type">
+              <span class="entry_type_name">rational</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Gain factor from electrons to raw units when
+          ISO=100
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.blackLevelPattern">
+            <td class="entry_name">android.<wbr>sensor.<wbr>black<wbr>Level<wbr>Pattern</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  4
+                </span>
+
+                <div class="entry_type_notes">2x2 raw count block</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              A fixed black level offset for each of the
+          Bayer mosaic channels
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              >= 0 each
+            </td>
+
+            <td class="entry_notes">
+              As per DNG BlackLevelRepeatDim /<wbr> BlackLevel
+          tags
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.calibrationTransform1">
+            <td class="entry_name">android.<wbr>sensor.<wbr>calibration<wbr>Transform1</td>
+            <td class="entry_type">
+              <span class="entry_type_name">rational</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  9
+                </span>
+
+                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Per-device calibration on top of color space
+          transform 1
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.calibrationTransform2">
+            <td class="entry_name">android.<wbr>sensor.<wbr>calibration<wbr>Transform2</td>
+            <td class="entry_type">
+              <span class="entry_type_name">rational</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  9
+                </span>
+
+                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Per-device calibration on top of color space
+          transform 2
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.colorTransform1">
+            <td class="entry_name">android.<wbr>sensor.<wbr>color<wbr>Transform1</td>
+            <td class="entry_type">
+              <span class="entry_type_name">rational</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  9
+                </span>
+
+                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Linear mapping from XYZ (D50) color space to
+          reference linear sensor color,<wbr> for first reference
+          illuminant
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Use as follows XYZ = inv(transform) * clip( (raw -
+          black level(raw) ) /<wbr> ( white level - max black level) ).<wbr>
+          At least in the simple case
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.colorTransform2">
+            <td class="entry_name">android.<wbr>sensor.<wbr>color<wbr>Transform2</td>
+            <td class="entry_type">
+              <span class="entry_type_name">rational</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  9
+                </span>
+
+                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Linear mapping from XYZ (D50) color space to
+          reference linear sensor color,<wbr> for second reference
+          illuminant
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.forwardMatrix1">
+            <td class="entry_name">android.<wbr>sensor.<wbr>forward<wbr>Matrix1</td>
+            <td class="entry_type">
+              <span class="entry_type_name">rational</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  9
+                </span>
+
+                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Used by DNG for better WB
+          adaptation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.forwardMatrix2">
+            <td class="entry_name">android.<wbr>sensor.<wbr>forward<wbr>Matrix2</td>
+            <td class="entry_type">
+              <span class="entry_type_name">rational</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  9
+                </span>
+
+                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Used by DNG for better WB
+          adaptation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
+            <td class="entry_name">android.<wbr>sensor.<wbr>max<wbr>Analog<wbr>Sensitivity</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Maximum sensitivity that is implemented
+          purely through analog gain
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              For android.<wbr>sensor.<wbr>sensitivity values less than or
+          equal to this,<wbr> all applied gain must be analog.<wbr> For
+          values above this,<wbr> it can be a mix of analog and
+          digital
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.noiseModelCoefficients">
+            <td class="entry_name">android.<wbr>sensor.<wbr>noise<wbr>Model<wbr>Coefficients</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+                <div class="entry_type_notes">float constants A,<wbr> B for the noise variance model</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Estimation of sensor noise
+          characteristics
+            </td>
+
+            <td class="entry_units">
+              var(raw pixel value) = electrons * (baseGainFactor
+          * iso/<wbr>100)^2 + A * (baseGainFactor * iso/<wbr>100)^2 +
+          B
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              A represents sensor read noise before analog
+          amplification; B represents noise from A/<wbr>D conversion and
+          other circuits after amplification.<wbr> Both noise sources
+          are assumed to be gaussian,<wbr> independent,<wbr> and not to vary
+          across the sensor
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.orientation">
+            <td class="entry_name">android.<wbr>sensor.<wbr>orientation</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Clockwise angle through which the output
+          image needs to be rotated to be upright on the device
+          screen in its native orientation.<wbr> Also defines the
+          direction of rolling shutter readout,<wbr> which is from top
+          to bottom in the sensor's coordinate system
+            </td>
+
+            <td class="entry_units">
+              degrees clockwise rotation,<wbr> only multiples of
+          90
+            </td>
+
+            <td class="entry_range">
+              0,<wbr>90,<wbr>180,<wbr>270
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
+            <td class="entry_name">android.<wbr>sensor.<wbr>reference<wbr>Illuminant1</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">DAYLIGHT</span>
+                    <span class="entry_type_enum_value">1</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FLUORESCENT</span>
+                    <span class="entry_type_enum_value">2</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">TUNGSTEN</span>
+                    <span class="entry_type_enum_value">3</span>
+                    <span class="entry_type_enum_notes">Incandescent light</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FLASH</span>
+                    <span class="entry_type_enum_value">4</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FINE_WEATHER</span>
+                    <span class="entry_type_enum_value">9</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
+                    <span class="entry_type_enum_value">10</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SHADE</span>
+                    <span class="entry_type_enum_value">11</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
+                    <span class="entry_type_enum_value">12</span>
+                    <span class="entry_type_enum_notes">D 5700 - 7100K</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
+                    <span class="entry_type_enum_value">13</span>
+                    <span class="entry_type_enum_notes">N 4600 - 5400K</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
+                    <span class="entry_type_enum_value">14</span>
+                    <span class="entry_type_enum_notes">W 3900 - 4500K</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
+                    <span class="entry_type_enum_value">15</span>
+                    <span class="entry_type_enum_notes">WW 3200 - 3700K</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">STANDARD_A</span>
+                    <span class="entry_type_enum_value">17</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">STANDARD_B</span>
+                    <span class="entry_type_enum_value">18</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">STANDARD_C</span>
+                    <span class="entry_type_enum_value">19</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">D55</span>
+                    <span class="entry_type_enum_value">20</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">D65</span>
+                    <span class="entry_type_enum_value">21</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">D75</span>
+                    <span class="entry_type_enum_value">22</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">D50</span>
+                    <span class="entry_type_enum_value">23</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
+                    <span class="entry_type_enum_value">24</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Light source used to define transform
+          1
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              [EXIF LightSource tag] Must all these be
+          supported? Need CCT for each!
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
+            <td class="entry_name">android.<wbr>sensor.<wbr>reference<wbr>Illuminant2</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Light source used to define transform
+          2
+            </td>
+
+            <td class="entry_units">
+              Same as illuminant 1
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.sensor.exposureTime">
+            <td class="entry_name">android.<wbr>sensor.<wbr>exposure<wbr>Time</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Duration each pixel is exposed to
+          light
+            </td>
+
+            <td class="entry_units">
+              nanoseconds
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>sensor.<wbr>info.<wbr>exposure<wbr>Time<wbr>Range
+            </td>
+
+            <td class="entry_notes">
+              1/<wbr>10000 - 30 sec range.<wbr> No bulb mode
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.sensor.frameDuration">
+            <td class="entry_name">android.<wbr>sensor.<wbr>frame<wbr>Duration</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Duration from start of frame exposure to
+          start of next frame exposure
+            </td>
+
+            <td class="entry_units">
+              nanoseconds
+            </td>
+
+            <td class="entry_range">
+              see android.<wbr>sensor.<wbr>info.<wbr>max<wbr>Frame<wbr>Duration,<wbr>
+          android.<wbr>scaler.<wbr>info.<wbr>available<wbr>Min<wbr>Frame<wbr>Durations
+            </td>
+
+            <td class="entry_notes">
+              Exposure time has priority,<wbr> so duration is set to
+          max(duration,<wbr> exposure time + overhead)
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.sensor.sensitivity">
+            <td class="entry_name">android.<wbr>sensor.<wbr>sensitivity</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Gain applied to image data.<wbr> Must be
+          implemented through analog gain only if set to values
+          below 'maximum analog sensitivity'.<wbr>
+            </td>
+
+            <td class="entry_units">
+              ISO arithmetic units
+            </td>
+
+            <td class="entry_range">
+              android.<wbr>sensor.<wbr>info.<wbr>sensitivity<wbr>Range
+            </td>
+
+            <td class="entry_notes">
+              ISO 12232:2006 REI method
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.sensor.timestamp">
+            <td class="entry_name">android.<wbr>sensor.<wbr>timestamp</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int64</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Time at start of exposure of first
+          row
+            </td>
+
+            <td class="entry_units">
+              nanoseconds
+            </td>
+
+            <td class="entry_range">
+              > 0
+            </td>
+
+            <td class="entry_notes">
+              Monotonic,<wbr> should be synced to other timestamps in
+          system
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.shading.mode">
+            <td class="entry_name">android.<wbr>shading.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">No shading correction is applied</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+            bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Quality of lens shading correction applied
+          to the image data
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.shading.strength">
+            <td class="entry_name">android.<wbr>shading.<wbr>strength</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Control the amount of shading correction
+          applied to the images
+            </td>
+
+            <td class="entry_units">
+              unitless: 1-10; 10 is full shading
+          compensation
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.shading.mode">
+            <td class="entry_name">android.<wbr>shading.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                    <span class="entry_type_enum_notes">No shading correction is applied</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+            bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Quality of lens shading correction applied
+          to the image data
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.statistics.faceDetectMode">
+            <td class="entry_name">android.<wbr>statistics.<wbr>face<wbr>Detect<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SIMPLE</span>
+                    <span class="entry_type_enum_notes">Optional Return rectangle and confidence
+            only</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FULL</span>
+                    <span class="entry_type_enum_notes">Optional Return all face
+            metadata</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              State of the face detector
+          unit
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              
+          android.<wbr>statistics.<wbr>available<wbr>Face<wbr>Detect<wbr>Modes
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.statistics.histogramMode">
+            <td class="entry_name">android.<wbr>statistics.<wbr>histogram<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Operating mode for histogram
+          generation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
+            <td class="entry_name">android.<wbr>statistics.<wbr>sharpness<wbr>Map<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Operating mode for sharpness map
+          generation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+                
+            
+
+                
+          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
+            <td class="entry_name">android.<wbr>statistics.<wbr>info.<wbr>available<wbr>Face<wbr>Detect<wbr>Modes</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+                <div class="entry_type_notes">List of enums</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Which face detection modes are available,<wbr>
+            if any
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              OFF
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
+            <td class="entry_name">android.<wbr>statistics.<wbr>info.<wbr>histogram<wbr>Bucket<wbr>Count</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Number of histogram buckets
+            supported
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              >= 64
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
+            <td class="entry_name">android.<wbr>statistics.<wbr>info.<wbr>max<wbr>Face<wbr>Count</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              If face detection is supported,<wbr> how many
+            faces can be detected at once
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              >= 4 if availableFaceDetectionModes lists
+            modes besides OFF,<wbr> otherwise 0
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
+            <td class="entry_name">android.<wbr>statistics.<wbr>info.<wbr>max<wbr>Histogram<wbr>Count</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Maximum value possible for a histogram
+            bucket
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
+            <td class="entry_name">android.<wbr>statistics.<wbr>info.<wbr>max<wbr>Sharpness<wbr>Map<wbr>Value</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Maximum value possible for a sharpness map
+            region.<wbr>
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
+            <td class="entry_name">android.<wbr>statistics.<wbr>info.<wbr>sharpness<wbr>Map<wbr>Size</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  2
+                </span>
+
+                <div class="entry_type_notes">width x height</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Dimensions of the sharpness
+            map
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              Must be at least 32 x 32
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+        
+
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
+            <td class="entry_name">android.<wbr>statistics.<wbr>face<wbr>Detect<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">SIMPLE</span>
+                    <span class="entry_type_enum_notes">Optional Return rectangle and confidence
+            only</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FULL</span>
+                    <span class="entry_type_enum_notes">Optional Return all face
+            metadata</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              State of the face detector
+          unit
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              
+          android.<wbr>statistics.<wbr>available<wbr>Face<wbr>Detect<wbr>Modes
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.statistics.faceIds">
+            <td class="entry_name">android.<wbr>statistics.<wbr>face<wbr>Ids</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of unique IDs for detected
+          faces
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Only available if faceDetectMode == FULL
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
+            <td class="entry_name">android.<wbr>statistics.<wbr>face<wbr>Landmarks</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n x 6
+                </span>
+
+                <div class="entry_type_notes">(leftEyeX,<wbr> leftEyeY,<wbr> rightEyeX,<wbr> rightEyeY,<wbr> mouthX,<wbr> mouthY)</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of landmarks for detected
+          faces
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Only available if faceDetectMode == FULL
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
+            <td class="entry_name">android.<wbr>statistics.<wbr>face<wbr>Rectangles</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n x 4
+                </span>
+
+                <div class="entry_type_notes">(xmin,<wbr> ymin,<wbr> xmax,<wbr> ymax).<wbr> (0,<wbr>0) is top-left of active pixel area</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of the bounding rectangles for detected
+          faces
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              Only available if faceDetectMode != OFF
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.statistics.faceScores">
+            <td class="entry_name">android.<wbr>statistics.<wbr>face<wbr>Scores</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n
+                </span>
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              List of the face confidence scores for
+          detected faces
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              0-100
+            </td>
+
+            <td class="entry_notes">
+              Only available if faceDetectMode != OFF
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.statistics.histogram">
+            <td class="entry_name">android.<wbr>statistics.<wbr>histogram</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n x 3
+                </span>
+
+                <div class="entry_type_notes">count of pixels for each color channel that fall into each histogram bucket,<wbr> scaled to be between 0 and maxHistogramCount</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              A 3-channel histogram based on the raw
+          sensor data
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              The k'th bucket (0-based) covers the input range
+          (with w = android.<wbr>sensor.<wbr>info.<wbr>white<wbr>Level) of [ k * w/<wbr>N,<wbr>
+          (k + 1) * w /<wbr> N ).<wbr> If only a monochrome sharpness map is
+          supported,<wbr> all channels should have the same data
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.statistics.histogramMode">
+            <td class="entry_name">android.<wbr>statistics.<wbr>histogram<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Operating mode for histogram
+          generation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
+            <td class="entry_name">android.<wbr>statistics.<wbr>sharpness<wbr>Map</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n x m x 3
+                </span>
+
+                <div class="entry_type_notes">estimated sharpness for each region of the input image.<wbr> Normalized to be between 0 and maxSharpnessMapValue.<wbr> Higher values mean sharper (better focused)</div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              A 3-channel sharpness map,<wbr> based on the raw
+          sensor data
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+              If only a monochrome sharpness map is supported,<wbr>
+          all channels should have the same data
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
+            <td class="entry_name">android.<wbr>statistics.<wbr>sharpness<wbr>Map<wbr>Mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">OFF</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">ON</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Operating mode for sharpness map
+          generation
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+  <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
+
+
+      <tr><td colspan="7" class="kind">controls</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="controls_android.tonemap.curveBlue">
+            <td class="entry_name">android.<wbr>tonemap.<wbr>curve<wbr>Blue</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Table mapping blue input values to output
+          values
+            </td>
+
+            <td class="entry_units">
+              same as android.<wbr>tonemap.<wbr>curve<wbr>Red
+            </td>
+
+            <td class="entry_range">
+              same as android.<wbr>tonemap.<wbr>curve<wbr>Red
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.tonemap.curveGreen">
+            <td class="entry_name">android.<wbr>tonemap.<wbr>curve<wbr>Green</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Table mapping green input values to output
+          values
+            </td>
+
+            <td class="entry_units">
+              same as android.<wbr>tonemap.<wbr>curve<wbr>Red
+            </td>
+
+            <td class="entry_range">
+              same as android.<wbr>tonemap.<wbr>curve<wbr>Red
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.tonemap.curveRed">
+            <td class="entry_name">android.<wbr>tonemap.<wbr>curve<wbr>Red</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n x 2
+                </span>
+
+                <div class="entry_type_notes">A 1D array of pairs of floats.<wbr> mapping a 0-1 input range to a 0-1 output range.<wbr></div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Table mapping red input values to output
+          values
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              0-1 on input and output coordinates.<wbr> Max entry
+          count speciied by android.<wbr>tonemap.<wbr>max<wbr>Curve<wbr>Points
+            </td>
+
+            <td class="entry_notes">
+              .<wbr>The input range must be monotonically increasing
+          with N,<wbr> and values between entries should be linearly
+          interpolated.<wbr> For example,<wbr> if the array is: [0.<wbr>0,<wbr> 0.<wbr>0,<wbr>
+          0.<wbr>3,<wbr> 0.<wbr>5,<wbr> 1.<wbr>0,<wbr> 1.<wbr>0],<wbr> then the input->output mapping
+          for a few sample points would be: 0 -> 0,<wbr> 0.<wbr>15 ->
+          0.<wbr>25,<wbr> 0.<wbr>3 -> 0.<wbr>5,<wbr> 0.<wbr>5 -> 0.<wbr>64
+            </td>
+
+            <td class="entry_tags">
+              <ul class="entry_tags">
+              </ul>
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="controls_android.tonemap.mode">
+            <td class="entry_name">android.<wbr>tonemap.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
+                    <span class="entry_type_enum_notes">Use the tone mapping curve specified in
+            android.<wbr>tonemap.<wbr>curve</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+            bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">static</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
+            <td class="entry_name">android.<wbr>tonemap.<wbr>max<wbr>Curve<wbr>Points</td>
+            <td class="entry_type">
+              <span class="entry_type_name">int32</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Maximum number of supported points in the
+          tonemap curve
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              >= 128
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+      <tr><td colspan="7" class="kind">dynamic</td></tr>
+
+      <thead>
+        <tr>
+          <th class="th_name">Property Name</th>
+          <th class="th_type">Type</th>
+          <th class="th_description">Description</th>
+          <th class="th_units">Units</th>
+          <th class="th_range">Range</th>
+          <th class="th_notes">Notes</th>
+          <th class="th_tags">Tags</th>
+        </tr>
+      </thead>
+
+      <tbody>
+
+        
+
+        
+
+        
+
+        
+
+                
+          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
+            <td class="entry_name">android.<wbr>tonemap.<wbr>curve<wbr>Blue</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Table mapping blue input values to output
+          values
+            </td>
+
+            <td class="entry_units">
+              same as android.<wbr>tonemap.<wbr>curve<wbr>Red
+            </td>
+
+            <td class="entry_range">
+              same as android.<wbr>tonemap.<wbr>curve<wbr>Red
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
+            <td class="entry_name">android.<wbr>tonemap.<wbr>curve<wbr>Green</td>
+            <td class="entry_type">
+              <span class="entry_type_name">byte</span>
+
+
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Table mapping green input values to output
+          values
+            </td>
+
+            <td class="entry_units">
+              same as android.<wbr>tonemap.<wbr>curve<wbr>Red
+            </td>
+
+            <td class="entry_range">
+              same as android.<wbr>tonemap.<wbr>curve<wbr>Red
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.tonemap.curveRed">
+            <td class="entry_name">android.<wbr>tonemap.<wbr>curve<wbr>Red</td>
+            <td class="entry_type">
+              <span class="entry_type_name">float</span>
+                <span class="entry_type_container">x</span>
+
+                <span class="entry_type_array">
+                  n x 2
+                </span>
+
+                <div class="entry_type_notes">A 1D array of pairs of floats.<wbr> mapping a 0-1 input range to a 0-1 output range.<wbr></div>
+
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+              Table mapping red input values to output
+          values
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+              0-1 on input and output coordinates.<wbr> Max entry
+          count speciied by android.<wbr>tonemap.<wbr>max<wbr>Curve<wbr>Points
+            </td>
+
+            <td class="entry_notes">
+              .<wbr>The input range must be monotonically increasing
+          with N,<wbr> and values between entries should be linearly
+          interpolated.<wbr> For example,<wbr> if the array is: [0.<wbr>0,<wbr> 0.<wbr>0,<wbr>
+          0.<wbr>3,<wbr> 0.<wbr>5,<wbr> 1.<wbr>0,<wbr> 1.<wbr>0],<wbr> then the input->output mapping
+          for a few sample points would be: 0 -> 0,<wbr> 0.<wbr>15 ->
+          0.<wbr>25,<wbr> 0.<wbr>3 -> 0.<wbr>5,<wbr> 0.<wbr>5 -> 0.<wbr>64
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+                
+          <tr class="entry" id="dynamic_android.tonemap.mode">
+            <td class="entry_name">android.<wbr>tonemap.<wbr>mode</td>
+            <td class="entry_type">
+              <span class="entry_type_name">enum</span>
+
+
+
+                <ul class="entry_type_enum">
+                  <li>
+                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
+                    <span class="entry_type_enum_notes">Use the tone mapping curve specified in
+            android.<wbr>tonemap.<wbr>curve</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">FAST</span>
+                    <span class="entry_type_enum_notes">Must not slow down frame rate relative to raw
+            bayer output</span>
+                  </li>
+                  <li>
+                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
+                    <span class="entry_type_enum_notes">Frame rate may be reduced by high
+            quality</span>
+                  </li>
+                </ul>
+
+            </td> <!-- entry_type -->
+
+            <td class="entry_description">
+            </td>
+
+            <td class="entry_units">
+            </td>
+
+            <td class="entry_range">
+            </td>
+
+            <td class="entry_notes">
+            </td>
+
+            <td class="entry_tags">
+            </td>
+
+          </tr> <!-- end of entry -->
+        
+        
+
+      <!-- end of kind -->
+      </tbody>
+
+  <!-- end of section -->
+<!-- </namespace> -->
+  </table>
+
+  <div class="tags" id="tag_index">
+    <h2>Tags</h2>
+    <ul>
+      <li id="tag_AWB">AWB - 
+        Needed for auto white balance
+    
+        <ul class="tags_entries">
+          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
+        </ul>
+      </li> <!-- tag_AWB -->
+      <li id="tag_BC">BC - 
+        Needed for backwards compatibility with old Java API
+    
+        <ul class="tags_entries">
+          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
+          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
+          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
+          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
+          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
+          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
+          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
+          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
+          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
+          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
+          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
+          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
+          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
+          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
+          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
+          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
+          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
+          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
+          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
+          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
+          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
+          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
+          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
+          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
+          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
+          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
+          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
+          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
+          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
+          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
+          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
+          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
+          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
+          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
+          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
+          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
+          <li><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a> (static)</li>
+          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
+          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
+          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
+          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
+          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
+          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
+          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
+          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
+          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
+          <li><a href="#static_android.scaler.maxDigitalZoom">android.scaler.maxDigitalZoom</a> (static)</li>
+          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
+          <li><a href="#static_android.sensor.info.availableSensitivities">android.sensor.info.availableSensitivities</a> (static)</li>
+          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
+          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
+          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
+          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
+          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
+          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
+          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
+          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
+          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
+          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
+          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
+          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
+        </ul>
+      </li> <!-- tag_BC -->
+      <li id="tag_V1">V1 - 
+        New features for first camera 2 release (API1)
+    
+        <ul class="tags_entries">
+          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
+          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
+          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
+          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
+          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
+          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
+          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
+          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
+          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
+          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
+          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
+          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
+          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
+          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
+          <li><a href="#static_android.lens.info.geometricCorrectionMapSize">android.lens.info.geometricCorrectionMapSize</a> (static)</li>
+          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
+          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
+          <li><a href="#static_android.lens.position">android.lens.position</a> (static)</li>
+          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
+          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
+          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
+          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
+          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
+          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
+          <li><a href="#static_android.sensor.info.availableSensitivities">android.sensor.info.availableSensitivities</a> (static)</li>
+          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
+          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
+          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
+          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
+          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
+          <li><a href="#static_android.sensor.noiseModelCoefficients">android.sensor.noiseModelCoefficients</a> (static)</li>
+          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
+          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
+          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
+          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
+          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
+          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
+          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
+          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
+        </ul>
+      </li> <!-- tag_V1 -->
+      <li id="tag_ADV">ADV - None
+        <ul class="tags_entries">
+          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
+          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
+          <li><a href="#controls_android.geometric.strength">android.geometric.strength</a> (controls)</li>
+          <li><a href="#static_android.hotPixel.info.map">android.hotPixel.info.map</a> (static)</li>
+          <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a> (static)</li>
+          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
+        </ul>
+      </li> <!-- tag_ADV -->
+      <li id="tag_DNG">DNG - 
+        Needed for DNG file support
+    
+        <ul class="tags_entries">
+          <li><a href="#static_android.lens.info.geometricCorrectionMap">android.lens.info.geometricCorrectionMap</a> (static)</li>
+          <li><a href="#static_android.lens.info.shadingMap">android.lens.info.shadingMap</a> (static)</li>
+          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
+          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
+          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
+          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
+          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
+          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
+          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
+          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
+          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
+          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
+          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
+          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
+          <li><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a> (controls)</li>
+        </ul>
+      </li> <!-- tag_DNG -->
+      <li id="tag_EXIF">EXIF - None
+        <ul class="tags_entries">
+          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
+        </ul>
+      </li> <!-- tag_EXIF -->
+    </ul>
+  </div>
+
+  [ <a href="#">top</a> ]
+
+</body>
+</html>
+