| <!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: 17% } |
| .th_description { width: 20% } |
| .th_range { width: 8% } |
| .th_hal_version { width: 5% } |
| 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> |
| <li |
| ><a href="#controls_android.control.enableZsl">android.control.enableZsl</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> |
| <li |
| ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li> |
| <li |
| ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</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 |
| class="toc_deprecated" |
| ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li> |
| <li |
| ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li> |
| <li |
| ><a href="#static_android.lens.distortion">android.lens.distortion</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 |
| class="toc_deprecated" |
| ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li> |
| <li |
| ><a href="#dynamic_android.lens.distortion">android.lens.distortion</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> |
| <li |
| ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li> |
| <li |
| ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li> |
| <li |
| ><a href="#static_android.request.characteristicKeysNeedingPermission">android.request.characteristicKeysNeedingPermission</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> |
| <li |
| ><a href="#static_android.scaler.availableRecommendedStreamConfigurations">android.scaler.availableRecommendedStreamConfigurations</a></li> |
| <li |
| ><a href="#static_android.scaler.availableRecommendedInputOutputFormatsMap">android.scaler.availableRecommendedInputOutputFormatsMap</a></li> |
| <li |
| ><a href="#static_android.scaler.mandatoryStreamCombinations">android.scaler.mandatoryStreamCombinations</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> |
| <li |
| ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</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> |
| <li |
| ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</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> |
| <li |
| ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li> |
| <li |
| ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li> |
| <li |
| ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li> |
| <li |
| ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li> |
| <li |
| ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</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> |
| <li |
| ><a href="#static_android.info.version">android.info.version</a></li> |
| <li |
| ><a href="#static_android.info.supportedBufferManagementVersion">android.info.supportedBufferManagementVersion</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> |
| <li |
| ><a href="#static_android.depth.availableRecommendedDepthStreamConfigurations">android.depth.availableRecommendedDepthStreamConfigurations</a></li> |
| <li |
| ><a href="#static_android.depth.availableDynamicDepthStreamConfigurations">android.depth.availableDynamicDepthStreamConfigurations</a></li> |
| <li |
| ><a href="#static_android.depth.availableDynamicDepthMinFrameDurations">android.depth.availableDynamicDepthMinFrameDurations</a></li> |
| <li |
| ><a href="#static_android.depth.availableDynamicDepthStallDurations">android.depth.availableDynamicDepthStallDurations</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li> |
| <li |
| ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#dynamic_android.logicalMultiCamera.activePhysicalId">android.logicalMultiCamera.activePhysicalId</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_distortionCorrection">distortionCorrection</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">controls</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#controls_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#static_android.distortionCorrection.availableModes">android.distortionCorrection.availableModes</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#dynamic_android.distortionCorrection.mode">android.distortionCorrection.mode</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_heic">heic</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| |
| <li |
| ><a href="#static_android.heic.info.supported">android.heic.info.supported</a></li> |
| <li |
| ><a href="#static_android.heic.info.maxJpegAppSegmentsCount">android.heic.info.maxJpegAppSegmentsCount</a></li> |
| |
| <li |
| ><a href="#static_android.heic.availableHeicStreamConfigurations">android.heic.availableHeicStreamConfigurations</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicMinFrameDurations">android.heic.availableHeicMinFrameDurations</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicStallDurations">android.heic.availableHeicStallDurations</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_hal_version">HIDL HAL version</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> <!-- so that the first occurrence of thead is not |
| above the first occurrence of tr --> |
| <!-- <namespace name="android"> --> |
| <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr> |
| |
| |
| <tr><td colspan="7" class="kind">controls</td></tr> |
| |
| <thead 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_hal_version">Initial HIDL HAL version</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 (v3.2)</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 (v3.2)</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 (v3.2)</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_hal_version"> |
| <p>3.<wbr/>2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="6">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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_hal_version"> |
| <p>3.<wbr/>2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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_hal_version"> |
| <p>3.<wbr/>2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="6">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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 (v3.2)</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 (v3.2)</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 (v3.2)</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_hal_version"> |
| <p>3.<wbr/>2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="7" 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_hal_version">Initial HIDL HAL version</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 (v3.2)</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 (v3.2)</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 (v3.2)</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_hal_version"> |
| <p>3.<wbr/>2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="6">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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_hal_version"> |
| <p>3.<wbr/>2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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_hal_version"> |
| <p>3.<wbr/>2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="6">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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 (v3.2)</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 (v3.2)</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 (v3.2)</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_hal_version"> |
| <p>3.<wbr/>2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="7" 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_hal_version">Initial HIDL HAL version</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_hal_version"> |
| <p>3.<wbr/>2</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="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="6">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="7" id="section_control" class="section">control</td></tr> |
| |
| |
| <tr><td colspan="7" class="kind">controls</td></tr> |
| |
| <thead 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_hal_version">Initial HIDL HAL version</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 (v3.2)</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 (v3.2)</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 (v3.2)</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 (v3.2)</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_hal_version"> |
| <p>3.<wbr/>2</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="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="6">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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_hal_version"> |
| <p>3.<wbr/>2</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="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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 (v3.2)</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 (v3.2)</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_hal_version"> |
| <p>3.<wbr/>2</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="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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 (v3.2)</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 (v3.2)</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 (v3.2)</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 (v3.2)</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 (v3.2)</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> |
| <li> |
| <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span> |
| <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p> |
| <p>It informs the camera device that an external flash has been turned on,<wbr/> and that |
| metering (and continuous focus if active) should be quickly recaculated to account |
| for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p> |
| <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the |
| other available AE modes.<wbr/></p> |
| <p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must |
| be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without |
| flash.<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_hal_version"> |
| <p>3.<wbr/>2</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="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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="7"></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 or |
| android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size depending on |
| distortion correction capability and mode |
| </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> or <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> |
| depending on distortion correction capability and mode</p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>2</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="6">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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>For devices not supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate |
| system always follows that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<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>For devices supporting <a href="#controls_android.distortionCorrection.mode">android.<wbr/>distortion<wbr/>Correction.<wbr/>mode</a> control,<wbr/> the coordinate |
| system depends on the mode being set.<wbr/> |
| When the distortion correction mode is OFF,<wbr/> the coordinate system follows |
| <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> with |
| <code>(0,<wbr/> 0)</code> being the top-left pixel of the pre-correction active array,<wbr/> and |
| (<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the bottom-right |
| pixel in the pre-correction active pixel array.<wbr/> |
| When the distortion correction mode is not OFF,<wbr/> the coordinate system follows |
| <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with |
| <code>(0,<wbr/> 0)</code> being the top-left pixel of the active 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="6">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="6"> |
| <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/> |
| HAL must always report metering regions in the coordinate system of pre-correction |
| active array.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.aeTargetFpsRange"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [public as rangeInt]</span> |
| |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Range over which the auto-exposure routine can |
| adjust the capture frame rate to maintain good |
| exposure.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| Frames per second (FPS) |
| </td> |
| |
| <td class="entry_range"> |
| <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Av
|