blob: 004ecaecf369b1ea27b013af504e8bcfc6891d1d [file] [log] [blame]
<!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 HAL3.4 Properties</title>
<style type="text/css">
body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
h1 { color: #333333; }
h2 { color: #333333; }
a:link { color: #258aaf; text-decoration: none}
a:hover { color: #459aaf; text-decoration: underline }
a:visited { color: #154a5f; text-decoration: none}
.section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
.kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
.entry { background-color: #f0f0f0 }
.entry_cont { background-color: #f0f0f0 }
.entries_header { background-color: #dddddd; text-align: center}
/* toc style */
.toc_section_header { font-size:1.3em; }
.toc_kind_header { font-size:1.2em; }
.toc_deprecated { text-decoration:line-through; }
/* table column sizes */
table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
.th_name { width: 20% }
.th_units { width: 10% }
.th_tags { width: 5% }
.th_details { width: 25% }
.th_type { width: 20% }
.th_description { width: 20% }
.th_range { width: 10% }
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 { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
.entry_name_deprecated { text-decoration:line-through; }
/* Entry type flair */
.entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
.entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
.entry_type_visibility { font-weight: bolder; padding-left:1em}
.entry_type_synthetic { font-weight: bolder; color: #996600; }
.entry_type_hwlevel { font-weight: bolder; color: #000066; }
.entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
.entry_type_enum_name { font-family: monospace; font-weight: bolder; }
.entry_type_enum_notes:before { content:" - " }
.entry_type_enum_notes>p:first-child { display:inline; }
.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_range_deprecated { font-weight: bolder; }
/* Entry tags flair */
.entry_tags ul { list-style-type: none; }
/* Entry details (full docs) flair */
.entry_details_header { font-weight: bold; background-color: #dddddd;
text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
/* Entry spacer flair */
.entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
/* 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 HAL3.2 Properties</h1>
<h2>Table of Contents</h2>
<ul class="toc">
<li><a href="#tag_index" class="toc_section_header">Tags</a></li>
<li>
<span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
<li
><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
<li
><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
<li
><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
<li
><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
<li
><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
<li
><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_control">control</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
<li
><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
<li
><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
<li
><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
<li
><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
<li
><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
<li
><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
<li
><a href="#controls_android.control.afMode">android.control.afMode</a></li>
<li
><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
<li
><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
<li
><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
<li
><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
<li
><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
<li
><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
<li
><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
<li
><a href="#controls_android.control.mode">android.control.mode</a></li>
<li
><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
<li
><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
<li
><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
<li
><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
<li
><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
<li
><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
<li
><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
<li
><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
<li
><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
<li
><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
<li
><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
<li
><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
<li
><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
<li
><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
<li
><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
<li
><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
<li
><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
<li
><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
<li
><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
<li
><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
<li
><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
<li
><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
class="toc_deprecated"
><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
<li
><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
<li
><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
<li
><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
<li
><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
<li
><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
<li
><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
<li
><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
<li
><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
<li
><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
<li
><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
<li
><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
<li
><a href="#dynamic_android.control.afState">android.control.afState</a></li>
<li
class="toc_deprecated"
><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
<li
><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
<li
><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
<li
><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
<li
><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
<li
><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
<li
><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
<li
><a href="#dynamic_android.control.mode">android.control.mode</a></li>
<li
><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
<li
><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
<li
><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_edge">edge</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.edge.mode">android.edge.mode</a></li>
<li
><a href="#controls_android.edge.strength">android.edge.strength</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_flash">flash</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
<li
><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
<li
><a href="#controls_android.flash.mode">android.flash.mode</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
<li
><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
<li
><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
<li
><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
<li
><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
<li
><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
<li
><a href="#dynamic_android.flash.state">android.flash.state</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
<li
><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
<li
><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
<li
><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
<li
><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
<li
><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
<li
><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
<li
><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
<li
><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
<li
><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
<li
><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
<li
><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
<li
><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
<li
><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
<li
><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
<li
><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
<li
><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_lens">lens</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
<li
><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
<li
><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
<li
><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
<li
><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
<li
><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
<li
><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
<li
><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
<li
><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
<li
><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
<li
><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
<li
><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
<li
><a href="#static_android.lens.facing">android.lens.facing</a></li>
<li
><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
<li
><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
<li
><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
<li
><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
<li
><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
<li
><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
<li
><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
<li
><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
<li
><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
<li
><a href="#dynamic_android.lens.state">android.lens.state</a></li>
<li
><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
<li
><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
<li
><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
<li
><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
<li
><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
class="toc_deprecated"
><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
<li
class="toc_deprecated"
><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
<li
class="toc_deprecated"
><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
<li
class="toc_deprecated"
><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
class="toc_deprecated"
><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_request">request</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
class="toc_deprecated"
><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
<li
><a href="#controls_android.request.id">android.request.id</a></li>
<li
class="toc_deprecated"
><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
<li
><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
<li
class="toc_deprecated"
><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
<li
class="toc_deprecated"
><a href="#controls_android.request.type">android.request.type</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
<li
><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
<li
><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
<li
><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
<li
class="toc_deprecated"
><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
<li
><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
<li
><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
<li
><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
<li
><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
<li
><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
<li
><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
<li
><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
class="toc_deprecated"
><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
<li
><a href="#dynamic_android.request.id">android.request.id</a></li>
<li
><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
<li
class="toc_deprecated"
><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
<li
><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
class="toc_deprecated"
><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
<li
class="toc_deprecated"
><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
<li
class="toc_deprecated"
><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
<li
><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
<li
class="toc_deprecated"
><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
<li
class="toc_deprecated"
><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
<li
class="toc_deprecated"
><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
<li
class="toc_deprecated"
><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
<li
><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
<li
><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
<li
><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
<li
><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
<li
><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
<li
><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
<li
><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
<li
><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
<li
><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
<li
><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
<li
><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
<li
><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
<li
><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
<li
><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
<li
><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
<li
><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
<li
><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
<li
><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
<li
><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
<li
><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
<li
><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
<li
><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
<li
><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
<li
><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
<li
><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
<li
><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
<li
><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
<li
><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
<li
><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
<li
><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
<li
><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
<li
><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
<li
><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
<li
><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
<li
><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
<li
><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
<li
><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
<li
><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
<li
><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
<li
><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
<li
><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
<li
><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
<li
><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
<li
><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
<li
><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
<li
><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
<li
><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
<li
><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
<li
><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
<li
><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_shading">shading</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.shading.mode">android.shading.mode</a></li>
<li
><a href="#controls_android.shading.strength">android.shading.strength</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
<li
><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
<li
><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
<li
><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
<li
><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
<li
><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
<li
><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
<li
><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
<li
><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
<li
><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
<li
><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
<li
><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
<li
><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
<li
><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
<li
><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
<li
><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
<li
><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
<li
><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
<li
><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
<li
><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
<li
><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
<li
><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
<li
><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
<li
class="toc_deprecated"
><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
<li
class="toc_deprecated"
><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
<li
><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
<li
><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
<li
><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
<li
><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
<li
><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
<li
><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
<li
><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
<li
><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
<li
><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
<li
><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
<li
><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
<li
><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
<li
><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
<li
><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
<li
><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
<li
><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
<li
><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_led">led</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.led.transmit">android.led.transmit</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_info">info</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_sync">sync</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">controls</span>
<ul class="toc_section">
<li
><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">dynamic</span>
<ul class="toc_section">
<li
><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
</ul>
</li>
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
<li>
<span class="toc_section_header"><a href="#section_depth">depth</a></span>
<ul class="toc_section">
<li>
<span class="toc_kind_header">static</span>
<ul class="toc_section">
<li
><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
<li
><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
<li
><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
<li
><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
<li
><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
</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_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="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
<tr><td colspan="6" class="kind">controls</td></tr>
<thead class="entries_header">
<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_tags">Tags</th>
</tr>
</thead>
<tbody>
<tr class="entry" id="controls_android.colorCorrection.mode">
<td class="entry_name
" rowspan="5">
android.<wbr/>color<wbr/>Correction.<wbr/>mode
</td>
<td class="entry_type">
<span class="entry_type_name entry_type_name_enum">byte</span>
<span class="entry_type_visibility"> [public]</span>
<span class="entry_type_hwlevel">[full] </span>
<ul class="entry_type_enum">
<li>
<span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
<span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
<p>All advanced white balance adjustments (not specified
by our white balance pipeline) must be disabled.<wbr/></p>
<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">FAST</span>
<span class="entry_type_enum_notes"><p>Color correction processing must not slow down
capture rate relative to sensor raw output.<wbr/></p>
<p>Advanced white balance adjustments above and beyond
the specified white balance pipeline may be applied.<wbr/></p>
<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
the camera device uses the last frame's AWB values
(or defaults if AWB has never been run).<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">HIGH_QUALITY</span>
<span class="entry_type_enum_notes"><p>Color correction processing operates at improved
quality but the capture rate might be reduced (relative to sensor
raw output rate)</p>
<p>Advanced white balance adjustments above and beyond
the specified white balance pipeline may be applied.<wbr/></p>
<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
the camera device uses the last frame's AWB values
(or defaults if AWB has never been run).<wbr/></p></span>
</li>
</ul>
</td> <!-- entry_type -->
<td class="entry_description">
<p>The mode control selects how the image data is converted from the
sensor's native color into linear sRGB color.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
</td>
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
application controls how the color mapping is performed.<wbr/></p>
<p>We define the expected processing pipeline below.<wbr/> For consistency
across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
camera device (in the results) and be roughly correct.<wbr/></p>
<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
as what was produced by the camera device in the earlier frame.<wbr/></p>
<p>The expected processing pipeline is as follows:</p>
<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
matrix (applied after demosaic).<wbr/></p>
<p>The 4-channel white-balance gains are defined as:</p>
<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
</code></pre>
<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
These may be identical for a given camera device implementation; if
the camera device does not support a separate gain for even/<wbr/>odd green
channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
<p>The matrices for color transforms are defined as a 9-entry vector:</p>
<pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
</code></pre>
<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
<p>with colors as follows:</p>
<pre><code>r' = I0r + I1g + I2b
g' = I3r + I4g + I5b
b' = I6r + I7g + I8b
</code></pre>
<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
values are clipped to fit within the range.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
That is,<wbr/> if the highest quality implementation on the camera device does not slow down
capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="controls_android.colorCorrection.transform">
<td class="entry_name
" rowspan="3">
android.<wbr/>color<wbr/>Correction.<wbr/>transform
</td>
<td class="entry_type">
<span class="entry_type_name">rational</span>
<span class="entry_type_container">x</span>
<span class="entry_type_array">
3 x 3
</span>
<span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
<span class="entry_type_hwlevel">[full] </span>
<div class="entry_type_notes">3x3 rational matrix in row-major order</div>
</td> <!-- entry_type -->
<td class="entry_description">
<p>A color transform matrix to use to transform
from sensor RGB color space to output linear sRGB color space.<wbr/></p>
</td>
<td class="entry_units">
Unitless scale factors
</td>
<td class="entry_range">
</td>
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>This matrix is either set by the camera device when the request
<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
directly by the application in the request when the
<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
<p>In the latter case,<wbr/> the camera device may round the matrix to account
for precision issues; the final rounded matrix should be reported back
in this matrix result metadata.<wbr/> The transform should keep the magnitude
of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
<p>The valid range of each matrix element varies on different devices,<wbr/> but
values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="controls_android.colorCorrection.gains">
<td class="entry_name
" rowspan="5">
android.<wbr/>color<wbr/>Correction.<wbr/>gains
</td>
<td class="entry_type">
<span class="entry_type_name">float</span>
<span class="entry_type_container">x</span>
<span class="entry_type_array">
4
</span>
<span class="entry_type_visibility"> [public as rggbChannelVector]</span>
<span class="entry_type_hwlevel">[full] </span>
<div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
</td> <!-- entry_type -->
<td class="entry_description">
<p>Gains applying to Bayer raw color channels for
white-balance.<wbr/></p>
</td>
<td class="entry_units">
Unitless gain factors
</td>
<td class="entry_range">
</td>
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>These per-channel gains are either set by the camera device
when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
TRANSFORM_<wbr/>MATRIX.<wbr/></p>
<p>The gains in the result metadata are the gains actually
applied by the camera device to the current frame.<wbr/></p>
<p>The valid range of gains varies on different devices,<wbr/> but gains
between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
this can create color artifacts.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>The 4-channel white-balance gains are defined in
the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
is the gain for green pixels on the odd rows.<wbr/></p>
<p>If a HAL does not support a separate gain for even/<wbr/>odd green
channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="controls_android.colorCorrection.aberrationMode">
<td class="entry_name
" rowspan="3">
android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
</td>
<td class="entry_type">
<span class="entry_type_name entry_type_name_enum">byte</span>
<span class="entry_type_visibility"> [public]</span>
<span class="entry_type_hwlevel">[legacy] </span>
<ul class="entry_type_enum">
<li>
<span class="entry_type_enum_name">OFF</span>
<span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">FAST</span>
<span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
relative to sensor raw output.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">HIGH_QUALITY</span>
<span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
reduced (relative to sensor raw output rate)</p></span>
</li>
</ul>
</td> <!-- entry_type -->
<td class="entry_description">
<p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
<p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
</td>
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
minimize the chromatic artifacts that may occur along the object boundaries in an
image.<wbr/></p>
<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
applying aberration correction.<wbr/></p>
<p>LEGACY devices will always be in FAST mode.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
<tr><td colspan="6" class="kind">dynamic</td></tr>
<thead class="entries_header">
<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_tags">Tags</th>
</tr>
</thead>
<tbody>
<tr class="entry" id="dynamic_android.colorCorrection.mode">
<td class="entry_name
" rowspan="5">
android.<wbr/>color<wbr/>Correction.<wbr/>mode
</td>
<td class="entry_type">
<span class="entry_type_name entry_type_name_enum">byte</span>
<span class="entry_type_visibility"> [public]</span>
<span class="entry_type_hwlevel">[full] </span>
<ul class="entry_type_enum">
<li>
<span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
<span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
<p>All advanced white balance adjustments (not specified
by our white balance pipeline) must be disabled.<wbr/></p>
<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">FAST</span>
<span class="entry_type_enum_notes"><p>Color correction processing must not slow down
capture rate relative to sensor raw output.<wbr/></p>
<p>Advanced white balance adjustments above and beyond
the specified white balance pipeline may be applied.<wbr/></p>
<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
the camera device uses the last frame's AWB values
(or defaults if AWB has never been run).<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">HIGH_QUALITY</span>
<span class="entry_type_enum_notes"><p>Color correction processing operates at improved
quality but the capture rate might be reduced (relative to sensor
raw output rate)</p>
<p>Advanced white balance adjustments above and beyond
the specified white balance pipeline may be applied.<wbr/></p>
<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
the camera device uses the last frame's AWB values
(or defaults if AWB has never been run).<wbr/></p></span>
</li>
</ul>
</td> <!-- entry_type -->
<td class="entry_description">
<p>The mode control selects how the image data is converted from the
sensor's native color into linear sRGB color.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
</td>
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
application controls how the color mapping is performed.<wbr/></p>
<p>We define the expected processing pipeline below.<wbr/> For consistency
across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
camera device (in the results) and be roughly correct.<wbr/></p>
<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
as what was produced by the camera device in the earlier frame.<wbr/></p>
<p>The expected processing pipeline is as follows:</p>
<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
matrix (applied after demosaic).<wbr/></p>
<p>The 4-channel white-balance gains are defined as:</p>
<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
</code></pre>
<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
These may be identical for a given camera device implementation; if
the camera device does not support a separate gain for even/<wbr/>odd green
channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
<p>The matrices for color transforms are defined as a 9-entry vector:</p>
<pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
</code></pre>
<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
<p>with colors as follows:</p>
<pre><code>r' = I0r + I1g + I2b
g' = I3r + I4g + I5b
b' = I6r + I7g + I8b
</code></pre>
<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
values are clipped to fit within the range.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
That is,<wbr/> if the highest quality implementation on the camera device does not slow down
capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="dynamic_android.colorCorrection.transform">
<td class="entry_name
" rowspan="3">
android.<wbr/>color<wbr/>Correction.<wbr/>transform
</td>
<td class="entry_type">
<span class="entry_type_name">rational</span>
<span class="entry_type_container">x</span>
<span class="entry_type_array">
3 x 3
</span>
<span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
<span class="entry_type_hwlevel">[full] </span>
<div class="entry_type_notes">3x3 rational matrix in row-major order</div>
</td> <!-- entry_type -->
<td class="entry_description">
<p>A color transform matrix to use to transform
from sensor RGB color space to output linear sRGB color space.<wbr/></p>
</td>
<td class="entry_units">
Unitless scale factors
</td>
<td class="entry_range">
</td>
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>This matrix is either set by the camera device when the request
<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
directly by the application in the request when the
<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
<p>In the latter case,<wbr/> the camera device may round the matrix to account
for precision issues; the final rounded matrix should be reported back
in this matrix result metadata.<wbr/> The transform should keep the magnitude
of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
<p>The valid range of each matrix element varies on different devices,<wbr/> but
values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="dynamic_android.colorCorrection.gains">
<td class="entry_name
" rowspan="5">
android.<wbr/>color<wbr/>Correction.<wbr/>gains
</td>
<td class="entry_type">
<span class="entry_type_name">float</span>
<span class="entry_type_container">x</span>
<span class="entry_type_array">
4
</span>
<span class="entry_type_visibility"> [public as rggbChannelVector]</span>
<span class="entry_type_hwlevel">[full] </span>
<div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
</td> <!-- entry_type -->
<td class="entry_description">
<p>Gains applying to Bayer raw color channels for
white-balance.<wbr/></p>
</td>
<td class="entry_units">
Unitless gain factors
</td>
<td class="entry_range">
</td>
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>These per-channel gains are either set by the camera device
when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
TRANSFORM_<wbr/>MATRIX.<wbr/></p>
<p>The gains in the result metadata are the gains actually
applied by the camera device to the current frame.<wbr/></p>
<p>The valid range of gains varies on different devices,<wbr/> but gains
between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
this can create color artifacts.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>The 4-channel white-balance gains are defined in
the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
is the gain for green pixels on the odd rows.<wbr/></p>
<p>If a HAL does not support a separate gain for even/<wbr/>odd green
channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
<td class="entry_name
" rowspan="3">
android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
</td>
<td class="entry_type">
<span class="entry_type_name entry_type_name_enum">byte</span>
<span class="entry_type_visibility"> [public]</span>
<span class="entry_type_hwlevel">[legacy] </span>
<ul class="entry_type_enum">
<li>
<span class="entry_type_enum_name">OFF</span>
<span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">FAST</span>
<span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
relative to sensor raw output.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">HIGH_QUALITY</span>
<span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
reduced (relative to sensor raw output rate)</p></span>
</li>
</ul>
</td> <!-- entry_type -->
<td class="entry_description">
<p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
<p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
</td>
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
minimize the chromatic artifacts that may occur along the object boundaries in an
image.<wbr/></p>
<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
applying aberration correction.<wbr/></p>
<p>LEGACY devices will always be in FAST mode.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
<tr><td colspan="6" class="kind">static</td></tr>
<thead class="entries_header">
<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_tags">Tags</th>
</tr>
</thead>
<tbody>
<tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
<td class="entry_name
" rowspan="5">
android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<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>
<span class="entry_type_visibility"> [public as enumList]</span>
<span class="entry_type_hwlevel">[legacy] </span>
<div class="entry_type_notes">list of enums</div>
</td> <!-- entry_type -->
<td class="entry_description">
<p>List of aberration correction modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a> that are
supported by this camera device.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
<p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</ul>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>This key lists the valid modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a>.<wbr/> If no
aberration correction modes are available for a device,<wbr/> this list will solely include
OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
<p>LEGACY devices will always only support FAST mode.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
That is,<wbr/> if the highest quality implementation on the camera device does not slow down
capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
<!-- end of section -->
<tr><td colspan="6" id="section_control" class="section">control</td></tr>
<tr><td colspan="6" class="kind">controls</td></tr>
<thead class="entries_header">
<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_tags">Tags</th>
</tr>
</thead>
<tbody>
<tr class="entry" id="controls_android.control.aeAntibandingMode">
<td class="entry_name
" rowspan="5">
android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
</td>
<td class="entry_type">
<span class="entry_type_name entry_type_name_enum">byte</span>
<span class="entry_type_visibility"> [public]</span>
<span class="entry_type_hwlevel">[legacy] </span>
<ul class="entry_type_enum">
<li>
<span class="entry_type_enum_name">OFF</span>
<span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
avoid banding problems.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">50HZ</span>
<span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">60HZ</span>
<span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
avoid banding problems with 60Hz illumination
sources.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">AUTO</span>
<span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
antibanding routine to the current illumination
condition.<wbr/> This is the default mode if AUTO is
available on given camera device.<wbr/></p></span>
</li>
</ul>
</td> <!-- entry_type -->
<td class="entry_description">
<p>The desired setting for the camera device's auto-exposure
algorithm's antibanding compensation.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
<p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</ul>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
lights,<wbr/> flicker at the rate of the power supply frequency
(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
typically not noticeable to a person,<wbr/> it can be visible to
a camera device.<wbr/> If a camera sets its exposure time to the
wrong value,<wbr/> the flicker may become visible in the
viewfinder as flicker or in a final captured image,<wbr/> as a
set of variable-brightness bands across the image.<wbr/></p>
<p>Therefore,<wbr/> the auto-exposure routines of camera devices
include antibanding routines that ensure that the chosen
exposure value will not cause such banding.<wbr/> The choice of
exposure time depends on the rate of flicker,<wbr/> which the
camera device can detect automatically,<wbr/> or the expected
rate can be selected by the application using this
control.<wbr/></p>
<p>A given camera device may not support all of the possible
options for the antibanding mode.<wbr/> The
<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
the available modes for a given camera device.<wbr/></p>
<p>AUTO mode is the default if it is available on given
camera device.<wbr/> When AUTO mode is not available,<wbr/> the
default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
and 60HZ will be available.<wbr/></p>
<p>If manual exposure control is enabled (by setting
<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
then this setting has no effect,<wbr/> and the application must
ensure it selects exposure times that do not cause banding
issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
the application in this.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>For all capture request templates,<wbr/> this field must be set
to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
60HZ must be available.<wbr/></p>
<p>If manual exposure control is enabled (by setting
<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
then the exposure values provided by the application must not be
adjusted for antibanding.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="controls_android.control.aeExposureCompensation">
<td class="entry_name
" rowspan="3">
android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
</td>
<td class="entry_type">
<span class="entry_type_name">int32</span>
<span class="entry_type_visibility"> [public]</span>
<span class="entry_type_hwlevel">[legacy] </span>
</td> <!-- entry_type -->
<td class="entry_description">
<p>Adjustment to auto-exposure (AE) target image
brightness.<wbr/></p>
</td>
<td class="entry_units">
Compensation steps
</td>
<td class="entry_range">
<p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</ul>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>The adjustment is measured as a count of steps,<wbr/> with the
step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
will mean an exposure compensation of +2 EV; -3 will mean an
exposure compensation of -1 EV.<wbr/> One EV represents a doubling
of image brightness.<wbr/> Note that this control will only be
effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
<p>In the event of exposure compensation value being changed,<wbr/> camera device
may take several frames to reach the newly requested exposure target.<wbr/>
During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="controls_android.control.aeLock">
<td class="entry_name
" rowspan="3">
android.<wbr/>control.<wbr/>ae<wbr/>Lock
</td>
<td class="entry_type">
<span class="entry_type_name entry_type_name_enum">byte</span>
<span class="entry_type_visibility"> [public as boolean]</span>
<span class="entry_type_hwlevel">[legacy] </span>
<ul class="entry_type_enum">
<li>
<span class="entry_type_enum_name">OFF</span>
<span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
is free to update its parameters.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">ON</span>
<span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
must not update the exposure and sensitivity parameters
while the lock is active.<wbr/></p>
<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
will still take effect while auto-exposure is locked.<wbr/></p>
<p>Some rare LEGACY devices may not support
this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
</li>
</ul>
</td> <!-- entry_type -->
<td class="entry_description">
<p>Whether auto-exposure (AE) is currently locked to its latest
calculated values.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</ul>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
<p>Note that even when AE is locked,<wbr/> the flash may be fired if
the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
<p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock
is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
when AE is already locked,<wbr/> the camera device will not change the exposure time
(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) and sensitivity (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> the scene may become overexposed.<wbr/>
Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
the AE if AE is locked by the camera device internally during precapture metering
sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
will never succeed in a sequence of preview requests where AE lock is always set
to <code>false</code>.<wbr/></p>
<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
get locked do not necessarily correspond to the settings that were present in the
latest capture result received from the camera device,<wbr/> since additional captures
and AE updates may have occurred even before the result was sent out.<wbr/> If an
application is switching between automatic and manual control and wishes to eliminate
any flicker during the switch,<wbr/> the following procedure is recommended:</p>
<ol>
<li>Starting in auto-AE mode:</li>
<li>Lock AE</li>
<li>Wait for the first result to be output that has the AE locked</li>
<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
</ol>
<p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="controls_android.control.aeMode">
<td class="entry_name
" rowspan="3">
android.<wbr/>control.<wbr/>ae<wbr/>Mode
</td>
<td class="entry_type">
<span class="entry_type_name entry_type_name_enum">byte</span>
<span class="entry_type_visibility"> [public]</span>
<span class="entry_type_hwlevel">[legacy] </span>
<ul class="entry_type_enum">
<li>
<span class="entry_type_enum_name">OFF</span>
<span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
a flash unit for this camera device.<wbr/></p>
<p>Note that auto-white balance (AWB) and auto-focus (AF)
behavior is device dependent when AE is in OFF mode.<wbr/>
To have consistent behavior across different devices,<wbr/>
it is recommended to either set AWB and AF to OFF mode
or lock AWB and AF before setting AE to OFF.<wbr/>
See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
for more details.<wbr/></p>
<p>LEGACY devices do not support the OFF mode and will
override attempts to use this value to ON.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">ON</span>
<span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
with no flash control.<wbr/></p>
<p>The application's values for
<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
application has control over the various
android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">ON_AUTO_FLASH</span>
<span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
the camera's flash unit,<wbr/> firing it in low-light
conditions.<wbr/></p>
<p>The flash may be fired during a precapture sequence
(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
may be fired for captures for which the
<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
STILL_<wbr/>CAPTURE</p></span>
</li>
<li>
<span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
<span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
the camera's flash unit,<wbr/> always firing it for still
captures.<wbr/></p>
<p>The flash may be fired during a precapture sequence
(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
will always be fired for captures for which the
<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
STILL_<wbr/>CAPTURE</p></span>
</li>
<li>
<span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
<span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
reduction.<wbr/></p>
<p>If deemed necessary by the camera device,<wbr/> a red eye
reduction flash will fire during the precapture
sequence.<wbr/></p></span>
</li>
</ul>
</td> <!-- entry_type -->
<td class="entry_description">
<p>The desired mode for the camera device's
auto-exposure routine.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
<p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</ul>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
AUTO.<wbr/></p>
<p>When set to any of the ON modes,<wbr/> the camera device's
auto-exposure routine is enabled,<wbr/> overriding the
application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
is selected,<wbr/> the camera device's flash unit controls are
also overridden.<wbr/></p>
<p>The FLASH modes are only available if the camera device
has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
<p>If flash TORCH mode is desired,<wbr/> this field must be set to
ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
<p>When set to any of the ON modes,<wbr/> the values chosen by the
camera device auto-exposure routine for the overridden
fields for a given capture will be available in its
CaptureResult.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="controls_android.control.aeRegions">
<td class="entry_name
" rowspan="5">
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>
<span class="entry_type_visibility"> [public as meteringRectangle]</span>
</td> <!-- entry_type -->
<td class="entry_description">
<p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
</td>
<td class="entry_units">
Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
</td>
<td class="entry_range">
<p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</ul>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
Otherwise will always be present.<wbr/></p>
<p>The maximum number of regions supported by the device is determined by the value
of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
<p>The coordinate system is based on the active pixel array,<wbr/>
with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
bottom-right pixel in the active pixel array.<wbr/></p>
<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
for every pixel in the area.<wbr/> This means that a large metering area
with the same weight as a smaller area will have more effect in
the metering result.<wbr/> Metering areas can partially overlap and the
camera device will add the weights in the overlap region.<wbr/></p>
<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
weight is ignored.<wbr/></p>
<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
camera device.<wbr/></p>
<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
region and output only the intersection rectangle as the metering region in the result
metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
not reported in the result metadata.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
<th class="th_details" colspan="5">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
<p>The HAL level representation of MeteringRectangle[] is a
int[5 * area_<wbr/>count].<wbr/>
Every five elements represent a metering region of
(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
exclusive on xmax and ymax.<wbr/></p>
</td>
</tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->