| <!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> |
| <li |
| ><a href="#controls_android.colorCorrection.colorTemperature">android.colorCorrection.colorTemperature</a></li> |
| <li |
| ><a href="#controls_android.colorCorrection.colorTint">android.colorCorrection.colorTint</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> |
| <li |
| ><a href="#dynamic_android.colorCorrection.colorTemperature">android.colorCorrection.colorTemperature</a></li> |
| <li |
| ><a href="#dynamic_android.colorCorrection.colorTint">android.colorCorrection.colorTint</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> |
| <li |
| ><a href="#static_android.colorCorrection.colorTemperatureRange">android.colorCorrection.colorTemperatureRange</a></li> |
| <li |
| ><a href="#static_android.colorCorrection.availableModes">android.colorCorrection.availableModes</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> |
| <li |
| ><a href="#controls_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li> |
| <li |
| ><a href="#controls_android.control.zoomRatio">android.control.zoomRatio</a></li> |
| <li |
| ><a href="#controls_android.control.afRegionsSet">android.control.afRegionsSet</a></li> |
| <li |
| ><a href="#controls_android.control.aeRegionsSet">android.control.aeRegionsSet</a></li> |
| <li |
| ><a href="#controls_android.control.awbRegionsSet">android.control.awbRegionsSet</a></li> |
| <li |
| ><a href="#controls_android.control.settingsOverride">android.control.settingsOverride</a></li> |
| <li |
| ><a href="#controls_android.control.autoframing">android.control.autoframing</a></li> |
| <li |
| ><a href="#controls_android.control.zoomMethod">android.control.zoomMethod</a></li> |
| <li |
| ><a href="#controls_android.control.aePriorityMode">android.control.aePriorityMode</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> |
| <li |
| ><a href="#static_android.control.availableExtendedSceneModeMaxSizes">android.control.availableExtendedSceneModeMaxSizes</a></li> |
| <li |
| ><a href="#static_android.control.availableExtendedSceneModeZoomRatioRanges">android.control.availableExtendedSceneModeZoomRatioRanges</a></li> |
| <li |
| ><a href="#static_android.control.availableExtendedSceneModeCapabilities">android.control.availableExtendedSceneModeCapabilities</a></li> |
| <li |
| ><a href="#static_android.control.zoomRatioRange">android.control.zoomRatioRange</a></li> |
| <li |
| ><a href="#static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution">android.control.availableHighSpeedVideoConfigurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.control.availableSettingsOverrides">android.control.availableSettingsOverrides</a></li> |
| <li |
| ><a href="#static_android.control.autoframingAvailable">android.control.autoframingAvailable</a></li> |
| <li |
| ><a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.control.lowLightBoostInfoLuminanceRange</a></li> |
| <li |
| ><a href="#static_android.control.aeAvailablePriorityModes">android.control.aeAvailablePriorityModes</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> |
| <li |
| ><a href="#dynamic_android.control.extendedSceneMode">android.control.extendedSceneMode</a></li> |
| <li |
| ><a href="#dynamic_android.control.zoomRatio">android.control.zoomRatio</a></li> |
| <li |
| ><a href="#dynamic_android.control.settingsOverride">android.control.settingsOverride</a></li> |
| <li |
| ><a href="#dynamic_android.control.settingsOverridingFrameNumber">android.control.settingsOverridingFrameNumber</a></li> |
| <li |
| ><a href="#dynamic_android.control.autoframing">android.control.autoframing</a></li> |
| <li |
| ><a href="#dynamic_android.control.autoframingState">android.control.autoframingState</a></li> |
| <li |
| ><a href="#dynamic_android.control.lowLightBoostState">android.control.lowLightBoostState</a></li> |
| <li |
| ><a href="#dynamic_android.control.zoomMethod">android.control.zoomMethod</a></li> |
| <li |
| ><a href="#dynamic_android.control.aePriorityMode">android.control.aePriorityMode</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> |
| <li |
| ><a href="#controls_android.flash.strengthLevel">android.flash.strengthLevel</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.info.strengthMaximumLevel">android.flash.info.strengthMaximumLevel</a></li> |
| <li |
| ><a href="#static_android.flash.info.strengthDefaultLevel">android.flash.info.strengthDefaultLevel</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> |
| <li |
| ><a href="#static_android.flash.singleStrengthMaxLevel">android.flash.singleStrengthMaxLevel</a></li> |
| <li |
| ><a href="#static_android.flash.singleStrengthDefaultLevel">android.flash.singleStrengthDefaultLevel</a></li> |
| <li |
| ><a href="#static_android.flash.torchStrengthMaxLevel">android.flash.torchStrengthMaxLevel</a></li> |
| <li |
| ><a href="#static_android.flash.torchStrengthDefaultLevel">android.flash.torchStrengthDefaultLevel</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> |
| <li |
| ><a href="#dynamic_android.flash.strengthLevel">android.flash.strengthLevel</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> |
| <li |
| ><a href="#static_android.lens.distortionMaximumResolution">android.lens.distortionMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.lens.intrinsicCalibrationMaximumResolution">android.lens.intrinsicCalibrationMaximumResolution</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> |
| <li |
| ><a href="#static_android.request.availableDynamicRangeProfiles">android.request.availableDynamicRangeProfiles</a></li> |
| <li |
| ><a href="#static_android.request.availableDynamicRangeProfilesMap">android.request.availableDynamicRangeProfilesMap</a></li> |
| <li |
| ><a href="#static_android.request.recommendedTenBitDynamicRangeProfile">android.request.recommendedTenBitDynamicRangeProfile</a></li> |
| <li |
| ><a href="#static_android.request.availableColorSpaceProfiles">android.request.availableColorSpaceProfiles</a></li> |
| <li |
| ><a href="#static_android.request.availableColorSpaceProfilesMap">android.request.availableColorSpaceProfilesMap</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> |
| <li |
| ><a href="#controls_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li> |
| <li |
| ><a href="#controls_android.scaler.cropRegionSet">android.scaler.cropRegionSet</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> |
| <li |
| ><a href="#static_android.scaler.mandatoryConcurrentStreamCombinations">android.scaler.mandatoryConcurrentStreamCombinations</a></li> |
| <li |
| ><a href="#static_android.scaler.availableRotateAndCropModes">android.scaler.availableRotateAndCropModes</a></li> |
| <li |
| ><a href="#static_android.scaler.defaultSecureImageSize">android.scaler.defaultSecureImageSize</a></li> |
| <li |
| ><a href="#static_android.scaler.physicalCameraMultiResolutionStreamConfigurations">android.scaler.physicalCameraMultiResolutionStreamConfigurations</a></li> |
| <li |
| ><a href="#static_android.scaler.multiResolutionStreamConfigurationMap">android.scaler.multiResolutionStreamConfigurationMap</a></li> |
| <li |
| ><a href="#static_android.scaler.availableStreamConfigurationsMaximumResolution">android.scaler.availableStreamConfigurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.scaler.availableMinFrameDurationsMaximumResolution">android.scaler.availableMinFrameDurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.scaler.availableStallDurationsMaximumResolution">android.scaler.availableStallDurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.scaler.streamConfigurationMapMaximumResolution">android.scaler.streamConfigurationMapMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.scaler.availableInputOutputFormatsMapMaximumResolution">android.scaler.availableInputOutputFormatsMapMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.scaler.mandatoryMaximumResolutionStreamCombinations">android.scaler.mandatoryMaximumResolutionStreamCombinations</a></li> |
| <li |
| ><a href="#static_android.scaler.mandatoryTenBitOutputStreamCombinations">android.scaler.mandatoryTenBitOutputStreamCombinations</a></li> |
| <li |
| ><a href="#static_android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations">android.scaler.mandatoryPreviewStabilizationOutputStreamCombinations</a></li> |
| <li |
| ><a href="#static_android.scaler.multiResolutionStreamSupported">android.scaler.multiResolutionStreamSupported</a></li> |
| <li |
| ><a href="#static_android.scaler.availableStreamUseCases">android.scaler.availableStreamUseCases</a></li> |
| <li |
| ><a href="#static_android.scaler.mandatoryUseCaseStreamCombinations">android.scaler.mandatoryUseCaseStreamCombinations</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> |
| <li |
| ><a href="#dynamic_android.scaler.rotateAndCrop">android.scaler.rotateAndCrop</a></li> |
| <li |
| ><a href="#dynamic_android.scaler.rawCropRegion">android.scaler.rawCropRegion</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> |
| <li |
| ><a href="#controls_android.sensor.pixelMode">android.sensor.pixelMode</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.info.activeArraySizeMaximumResolution">android.sensor.info.activeArraySizeMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.sensor.info.pixelArraySizeMaximumResolution">android.sensor.info.pixelArraySizeMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.sensor.info.preCorrectionActiveArraySizeMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.sensor.info.binningFactor">android.sensor.info.binningFactor</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> |
| <li |
| ><a href="#static_android.sensor.opaqueRawSizeMaximumResolution">android.sensor.opaqueRawSizeMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.sensor.readoutTimestamp">android.sensor.readoutTimestamp</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> |
| <li |
| ><a href="#dynamic_android.sensor.pixelMode">android.sensor.pixelMode</a></li> |
| <li |
| ><a href="#dynamic_android.sensor.rawBinningFactorUsed">android.sensor.rawBinningFactorUsed</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> |
| <li |
| ><a href="#dynamic_android.statistics.lensIntrinsicsSamples">android.statistics.lensIntrinsicsSamples</a></li> |
| <li |
| ><a href="#dynamic_android.statistics.lensIntrinsicTimestamps">android.statistics.lensIntrinsicTimestamps</a></li> |
| <li |
| ><a href="#dynamic_android.statistics.lensIntrinsicSamples">android.statistics.lensIntrinsicSamples</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> |
| <li |
| ><a href="#static_android.info.deviceStateSensorOrientationMap">android.info.deviceStateSensorOrientationMap</a></li> |
| <li |
| ><a href="#static_android.info.deviceStateOrientations">android.info.deviceStateOrientations</a></li> |
| <li |
| ><a href="#static_android.info.sessionConfigurationQueryVersion">android.info.sessionConfigurationQueryVersion</a></li> |
| <li |
| ><a href="#static_android.info.deviceId">android.info.deviceId</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> |
| <li |
| ><a href="#static_android.depth.availableDepthStreamConfigurationsMaximumResolution">android.depth.availableDepthStreamConfigurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.depth.availableDepthMinFrameDurationsMaximumResolution">android.depth.availableDepthMinFrameDurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.depth.availableDepthStallDurationsMaximumResolution">android.depth.availableDepthStallDurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution">android.depth.availableDynamicDepthStreamConfigurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution">android.depth.availableDynamicDepthMinFrameDurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.depth.availableDynamicDepthStallDurationsMaximumResolution">android.depth.availableDynamicDepthStallDurationsMaximumResolution</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> |
| <li |
| ><a href="#dynamic_android.logicalMultiCamera.activePhysicalSensorCropRegion">android.logicalMultiCamera.activePhysicalSensorCropRegion</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> |
| <li |
| ><a href="#static_android.heic.availableHeicStreamConfigurationsMaximumResolution">android.heic.availableHeicStreamConfigurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicMinFrameDurationsMaximumResolution">android.heic.availableHeicMinFrameDurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicStallDurationsMaximumResolution">android.heic.availableHeicStallDurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurations">android.heic.availableHeicUltraHdrStreamConfigurations</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurations">android.heic.availableHeicUltraHdrMinFrameDurations</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicUltraHdrStallDurations">android.heic.availableHeicUltraHdrStallDurations</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution">android.heic.availableHeicUltraHdrStreamConfigurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution">android.heic.availableHeicUltraHdrMinFrameDurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.heic.availableHeicUltraHdrStallDurationsMaximumResolution">android.heic.availableHeicUltraHdrStallDurationsMaximumResolution</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_automotive">automotive</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| |
| <li |
| ><a href="#static_android.automotive.lens.facing">android.automotive.lens.facing</a></li> |
| |
| <li |
| ><a href="#static_android.automotive.location">android.automotive.location</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_extension">extension</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">controls</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#controls_android.extension.strength">android.extension.strength</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#dynamic_android.extension.currentType">android.extension.currentType</a></li> |
| <li |
| ><a href="#dynamic_android.extension.strength">android.extension.strength</a></li> |
| <li |
| ><a href="#dynamic_android.extension.nightModeIndicator">android.extension.nightModeIndicator</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_jpegr">jpegr</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#static_android.jpegr.availableJpegRStreamConfigurations">android.jpegr.availableJpegRStreamConfigurations</a></li> |
| <li |
| ><a href="#static_android.jpegr.availableJpegRMinFrameDurations">android.jpegr.availableJpegRMinFrameDurations</a></li> |
| <li |
| ><a href="#static_android.jpegr.availableJpegRStallDurations">android.jpegr.availableJpegRStallDurations</a></li> |
| <li |
| ><a href="#static_android.jpegr.availableJpegRStreamConfigurationsMaximumResolution">android.jpegr.availableJpegRStreamConfigurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.jpegr.availableJpegRMinFrameDurationsMaximumResolution">android.jpegr.availableJpegRMinFrameDurationsMaximumResolution</a></li> |
| <li |
| ><a href="#static_android.jpegr.availableJpegRStallDurationsMaximumResolution">android.jpegr.availableJpegRStallDurationsMaximumResolution</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_sharedSession">sharedSession</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#static_android.sharedSession.colorSpace">android.sharedSession.colorSpace</a></li> |
| <li |
| ><a href="#static_android.sharedSession.outputConfigurations">android.sharedSession.outputConfigurations</a></li> |
| <li |
| ><a href="#static_android.sharedSession.configuration">android.sharedSession.configuration</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_desktopEffects">desktopEffects</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#static_android.desktopEffects.capabilities">android.desktopEffects.capabilities</a></li> |
| <li |
| ><a href="#static_android.desktopEffects.backgroundBlurModes">android.desktopEffects.backgroundBlurModes</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">controls</span> |
| <ul class="toc_section"> |
| <li |
| ><a href="#controls_android.desktopEffects.backgroundBlurMode">android.desktopEffects.backgroundBlurMode</a></li> |
| <li |
| ><a href="#controls_android.desktopEffects.faceRetouchMode">android.desktopEffects.faceRetouchMode</a></li> |
| <li |
| ><a href="#controls_android.desktopEffects.faceRetouchStrength">android.desktopEffects.faceRetouchStrength</a></li> |
| <li |
| ><a href="#controls_android.desktopEffects.portraitRelightMode">android.desktopEffects.portraitRelightMode</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> |
| <li> |
| <span class="entry_type_enum_name">CCT (v3.11)</span> |
| <span class="entry_type_enum_notes"><p>Use |
| <a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a> and |
| <a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> to adjust the white balance based |
| on correlated color temperature.<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 |
| CCT is ignored.<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"> |
| <p>Starting from API level 36,<wbr/> <a href="#static_android.colorCorrection.availableModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Modes</a> |
| can be used to check the list of supported values.<wbr/> Prior to API level 36,<wbr/> |
| TRANSFORM_<wbr/>MATRIX,<wbr/> HIGH_<wbr/>QUALITY,<wbr/> and FAST are guaranteed to be available |
| as valid modes on devices that support this key.<wbr/></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>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 FAST 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 --> |
| |
| |
| <tr class="entry" id="controls_android.colorCorrection.colorTemperature"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Specifies the color temperature for CCT mode in Kelvin |
| to adjust the white balance of the image.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| Kelvin |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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>Sets the color temperature in Kelvin units for when |
| <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is CCT to adjust the |
| white balance of the image.<wbr/></p> |
| <p>If CCT mode is enabled without a requested color temperature,<wbr/> |
| a default value will be set by the camera device.<wbr/> The default value can be |
| retrieved by checking the corresponding capture result.<wbr/> Color temperatures |
| requested outside the advertised <a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a> |
| will be clamped.<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.colorTint"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Specifies the color tint for CCT mode to adjust the white |
| balance of the image.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| D_<wbr/>uv defined as the distance from the Planckian locus on the CIE 1931 xy |
| chromaticity diagram,<wbr/> with the range ±50 mapping to ±0.<wbr/>01 D_<wbr/>uv |
| </td> |
| |
| <td class="entry_range"> |
| <p>The supported range,<wbr/> -50 to +50,<wbr/> corresponds to a D_<wbr/>uv distance |
| of ±0.<wbr/>01 below and above the Planckian locus.<wbr/> Some camera devices may have |
| limitations to achieving the full ±0.<wbr/>01 D_<wbr/>uv range at some color temperatures |
| (e.<wbr/>g.,<wbr/> below 1500K).<wbr/> In these cases,<wbr/> the applied D_<wbr/>uv value may be clamped and |
| the actual color tint will be reported in the <a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> |
| result.<wbr/></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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>Sets the color tint for when <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> |
| is CCT to adjust the white balance of the image.<wbr/></p> |
| <p>If CCT mode is enabled without a requested color tint,<wbr/> |
| a default value will be set by the camera device.<wbr/> The default value can be |
| retrieved by checking the corresponding capture result.<wbr/> Color tints requested |
| outside the supported range will be clamped to the nearest limit (-50 or +50).<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> |
| <li> |
| <span class="entry_type_enum_name">CCT (v3.11)</span> |
| <span class="entry_type_enum_notes"><p>Use |
| <a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a> and |
| <a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> to adjust the white balance based |
| on correlated color temperature.<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 |
| CCT is ignored.<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"> |
| <p>Starting from API level 36,<wbr/> <a href="#static_android.colorCorrection.availableModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Modes</a> |
| can be used to check the list of supported values.<wbr/> Prior to API level 36,<wbr/> |
| TRANSFORM_<wbr/>MATRIX,<wbr/> HIGH_<wbr/>QUALITY,<wbr/> and FAST are guaranteed to be available |
| as valid modes on devices that support this key.<wbr/></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>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 FAST 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 --> |
| |
| |
| <tr class="entry" id="dynamic_android.colorCorrection.colorTemperature"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Specifies the color temperature for CCT mode in Kelvin |
| to adjust the white balance of the image.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| Kelvin |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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>Sets the color temperature in Kelvin units for when |
| <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is CCT to adjust the |
| white balance of the image.<wbr/></p> |
| <p>If CCT mode is enabled without a requested color temperature,<wbr/> |
| a default value will be set by the camera device.<wbr/> The default value can be |
| retrieved by checking the corresponding capture result.<wbr/> Color temperatures |
| requested outside the advertised <a href="#static_android.colorCorrection.colorTemperatureRange">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<wbr/>Range</a> |
| will be clamped.<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.colorTint"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Specifies the color tint for CCT mode to adjust the white |
| balance of the image.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| D_<wbr/>uv defined as the distance from the Planckian locus on the CIE 1931 xy |
| chromaticity diagram,<wbr/> with the range ±50 mapping to ±0.<wbr/>01 D_<wbr/>uv |
| </td> |
| |
| <td class="entry_range"> |
| <p>The supported range,<wbr/> -50 to +50,<wbr/> corresponds to a D_<wbr/>uv distance |
| of ±0.<wbr/>01 below and above the Planckian locus.<wbr/> Some camera devices may have |
| limitations to achieving the full ±0.<wbr/>01 D_<wbr/>uv range at some color temperatures |
| (e.<wbr/>g.,<wbr/> below 1500K).<wbr/> In these cases,<wbr/> the applied D_<wbr/>uv value may be clamped and |
| the actual color tint will be reported in the <a href="#controls_android.colorCorrection.colorTint">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Tint</a> |
| result.<wbr/></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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>Sets the color tint for when <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> |
| is CCT to adjust the white balance of the image.<wbr/></p> |
| <p>If CCT mode is enabled without a requested color tint,<wbr/> |
| a default value will be set by the camera device.<wbr/> The default value can be |
| retrieved by checking the corresponding capture result.<wbr/> Color tints requested |
| outside the supported range will be clamped to the nearest limit (-50 or +50).<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 --> |
| |
| |
| <tr class="entry" id="static_android.colorCorrection.colorTemperatureRange"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature<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> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The range of supported color temperature values for |
| <a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>The minimum supported range will be [2856K,<wbr/>6500K].<wbr/> The maximum supported |
| range will be [1000K,<wbr/>40000K].<wbr/></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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 key lists the valid range of color temperature values for |
| <a href="#controls_android.colorCorrection.colorTemperature">android.<wbr/>color<wbr/>Correction.<wbr/>color<wbr/>Temperature</a> supported by this camera device.<wbr/></p> |
| <p>This key will be null on devices that do not support CCT mode for |
| <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.colorCorrection.availableModes"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public as enumList]</span> |
| |
| |
| |
| |
| <div class="entry_type_notes">list of enums</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of color correction modes for <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<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.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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 key lists the valid modes for <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> If no |
| color correction modes are available for a device,<wbr/> this key will be null.<wbr/></p> |
| <p>Camera devices that have a FULL hardware level will always include at least |
| FAST,<wbr/> HIGH_<wbr/>QUALITY,<wbr/> and TRANSFORM_<wbr/>MATRIX modes.<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> |
| <p>If the device supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/> |
| if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and |
| <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then |
| the auto-exposure (AE) precapture metering sequence should be |
| triggered for the configured flash mode and strength to avoid |
| the image being incorrectly exposed at different |
| <a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<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 recalculated 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> |
| <li> |
| <span class="entry_type_enum_name">ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY (v3.10)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Like 'ON' but applies additional brightness boost in low light scenes.<wbr/></p> |
| <p>When the scene lighting conditions are within the range defined by |
| <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a> this mode will apply additional |
| brightness boost.<wbr/></p> |
| <p>This mode will automatically adjust the intensity of low light boost applied |
| according to the scene lighting conditions.<wbr/> A darker scene will receive more boost |
| while a brighter scene will receive less boost.<wbr/></p> |
| <p>This mode can ignore the set target frame rate to allow more light to be captured |
| which can result in choppier motion.<wbr/> The frame rate can extend to lower than the |
| <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> but will not go below 10 FPS.<wbr/> This mode |
| can also increase the sensor sensitivity gain which can result in increased luma |
| and chroma noise.<wbr/> The sensor sensitivity gain can extend to higher values beyond |
| <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>.<wbr/> This mode may also apply additional |
| processing to recover details in dark and bright areas of the image,<wbr/>and noise |
| reduction at high sensitivity gain settings to manage the trade-off between light |
| sensitivity and capture noise.<wbr/></p> |
| <p>This mode is restricted to two output surfaces.<wbr/> One output surface type can either |
| be SurfaceView or TextureView.<wbr/> Another output surface type can either be MediaCodec |
| or MediaRecorder.<wbr/> This mode cannot be used with a target FPS range higher than 30 |
| FPS.<wbr/></p> |
| <p>If the session configuration is not supported,<wbr/> the AE mode reported in the |
| CaptureResult will be 'ON' instead of 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY'.<wbr/></p> |
| <p>When this AE mode is enabled,<wbr/> the CaptureResult field |
| <a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will indicate when low light boost is 'ACTIVE' |
| or 'INACTIVE'.<wbr/> By default <a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will be 'INACTIVE'.<wbr/></p> |
| <p>The low light boost is 'ACTIVE' once the scene lighting condition is less than the |
| upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/> |
| This mode will be 'INACTIVE' once the scene lighting condition is greater than the |
| upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<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 <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is |
| enabled,<wbr/> the relevant priority CaptureRequest settings will not be overridden.<wbr/> |
| See <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> for more details.<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> |
| <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON and if the device |
| supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/> |
| if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and |
| <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then |
| the auto-exposure (AE) precapture metering sequence should be |
| triggered to avoid the image being incorrectly exposed at |
| different <a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<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> |
| <p>When setting the AE metering regions,<wbr/> the application must consider the additional |
| crop resulted from the aspect ratio differences between the preview stream and |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full |
| active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> |
| the boundary of AE regions will be [0,<wbr/> y_<wbr/>crop] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio |
| mismatch.<wbr/></p> |
| <p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or |
| preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not |
| pre-zoom field of view.<wbr/> This means that the same aeRegions values at different |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions |
| coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the |
| zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same |
| aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the |
| scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use |
| activeArraySize or preCorrectionActiveArraySize still depends on distortion correction |
| mode.<wbr/></p> |
| <p>For camera devices with the |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> |
| capability or devices where |
| <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> |
| lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> |
| <a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the |
| coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<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/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</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>Only constrains auto-exposure (AE) algorithm,<wbr/> not |
| manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and |
| <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> |
| <p>Note that the actual achievable max framerate also depends on the minimum frame |
| duration of the output streams.<wbr/> The max frame rate will be |
| <code>min(aeTargetFpsRange.<wbr/>maxFps,<wbr/> 1 /<wbr/> max(individual stream min durations))</code>.<wbr/> For example,<wbr/> |
| if the application sets this key to <code>{60,<wbr/> 60}</code>,<wbr/> but the maximum minFrameDuration among |
| all configured streams is 33ms,<wbr/> the maximum framerate won't be 60fps,<wbr/> but will be |
| 30fps.<wbr/></p> |
| <p>To start a CaptureSession with a target FPS range different from the |
| capture request template's default value,<wbr/> the application |
| is strongly recommended to call |
| <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a> |
| with the target fps range before creating the capture session.<wbr/> The aeTargetFpsRange is |
| typically a session parameter.<wbr/> Specifying it at session creation time helps avoid |
| session reconfiguration delays in cases like 60fps or high speed recording.<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.aePrecaptureTrigger"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger |
| </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">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">IDLE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">START (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started |
| by the camera device.<wbr/></p> |
| <p>The exact effect of the precapture trigger depends on |
| the current AE mode and state.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CANCEL (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed |
| precapture metering sequence,<wbr/> the auto-exposure routine will return to its |
| initial state.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the camera device will trigger a precapture |
| metering sequence when it processes this request.<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>This entry is normally set to IDLE,<wbr/> or is not |
| included at all in the request settings.<wbr/> When included and |
| set to START,<wbr/> the camera device will trigger the auto-exposure (AE) |
| precapture metering sequence.<wbr/></p> |
| <p>When set to CANCEL,<wbr/> the camera device will cancel any active |
| precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> |
| If a precapture metering sequence is already completed,<wbr/> and the camera |
| device has implicitly locked the AE for subsequent still capture,<wbr/> the |
| CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> |
| <p>The precapture sequence should be triggered before starting a |
| high-quality still capture for final metering decisions to |
| be made,<wbr/> and for firing pre-capture flash pulses to estimate |
| scene brightness and required final capture flash power,<wbr/> when |
| the flash is enabled.<wbr/></p> |
| <p>Flash is enabled during precapture sequence when:</p> |
| <ul> |
| <li>AE mode is ON_<wbr/>ALWAYS_<wbr/>FLASH</li> |
| <li>AE mode is ON_<wbr/>AUTO_<wbr/>FLASH and the scene is deemed too dark without flash,<wbr/> or</li> |
| <li>AE mode is ON and flash mode is TORCH or SINGLE</li> |
| </ul> |
| <p>Normally,<wbr/> this entry should be set to START for only single request,<wbr/> and the |
| application should wait until the sequence completes before starting a new one.<wbr/></p> |
| <p>When a precapture metering sequence is finished,<wbr/> the camera device |
| may lock the auto-exposure routine internally to be able to accurately expose the |
| subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> |
| For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is |
| submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should |
| submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request |
| with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a |
| still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for |
| API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device |
| internally locked AE if the application doesn't submit a still capture request after |
| the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not |
| be used in devices that have earlier API levels.<wbr/></p> |
| <p>The exact effect of auto-exposure (AE) precapture trigger |
| depends on the current AE mode and state; see |
| <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition |
| details.<wbr/></p> |
| <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; |
| capturing a high-resolution JPEG image will automatically trigger a |
| precapture sequence before the high-resolution capture,<wbr/> including |
| potentially firing a pre-capture flash.<wbr/></p> |
| <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> |
| simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between |
| the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a |
| focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous |
| trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and |
| changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for |
| example.<wbr/></p> |
| <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then |
| the camera device will complete them in the optimal order for that device.<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 must support triggering the AE precapture trigger while an AF trigger is active |
| (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to |
| treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the |
| AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> |
| to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<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.afMode"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>af<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 auto-focus routine does not control the lens; |
| <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the |
| application.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> |
| <p>In this mode,<wbr/> the lens does not move unless |
| the autofocus trigger action is called.<wbr/> When that trigger |
| is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> |
| <p>Always supported if lens is not fixed focus.<wbr/></p> |
| <p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens |
| is fixed-focus.<wbr/></p> |
| <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> |
| and sets the AF state to INACTIVE.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MACRO (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> |
| <p>In this mode,<wbr/> the lens does not move unless the |
| autofocus trigger action is called.<wbr/> When that trigger is |
| activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This |
| mode is optimized for focusing on objects very close to |
| the camera.<wbr/></p> |
| <p>When that trigger is activated,<wbr/> AF will transition to |
| ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or |
| NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens |
| position to default,<wbr/> and sets the AF state to |
| INACTIVE.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens |
| position continually to attempt to provide a |
| constantly-in-focus image stream.<wbr/></p> |
| <p>The focusing behavior should be suitable for good quality |
| video recording; typically this means slower focus |
| movement and no overshoots.<wbr/> When the AF trigger is not |
| involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> |
| and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED |
| states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> |
| the algorithm should immediately transition into |
| AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the |
| lens position until a cancel AF trigger is received.<wbr/></p> |
| <p>Once cancel is received,<wbr/> the algorithm should transition |
| back to INACTIVE and resume passive scan.<wbr/> Note that this |
| behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an |
| ongoing PASSIVE_<wbr/>SCAN must immediately be |
| canceled.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens |
| position continually to attempt to provide a |
| constantly-in-focus image stream.<wbr/></p> |
| <p>The focusing behavior should be suitable for still image |
| capture; typically this means focusing as fast as |
| possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF |
| algorithm should start in INACTIVE state,<wbr/> and then |
| transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as |
| appropriate as it attempts to maintain focus.<wbr/> When the AF |
| trigger is activated,<wbr/> the algorithm should finish its |
| PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into |
| AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the |
| lens position until a cancel AF trigger is received.<wbr/></p> |
| <p>When the AF cancel trigger is activated,<wbr/> the algorithm |
| should transition back to INACTIVE and then act as if it |
| has just been started.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">EDOF (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> |
| <p>The camera device will produce images with an extended |
| depth of field automatically; no special focusing |
| operations need to be done before taking a picture.<wbr/></p> |
| <p>AF triggers are ignored,<wbr/> and the AF state will always be |
| INACTIVE.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what |
| mode it is set to.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<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>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus |
| (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that |
| when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device |
| dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before |
| setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p> |
| <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> |
| the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> |
| in 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>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a |
| request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end |
| up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see |
| <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is |
| locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move |
| after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that |
| the same focal plane remains in focus.<wbr/></p> |
| <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF |
| scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger |
| (see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the |
| same lock behavior as above.<wbr/></p> |
| <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the |
| focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/> |
| However,<wbr/> the lens must not move regardless of the camera movement for any focus distance |
| manual control.<wbr/></p> |
| <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on |
| camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to |
| remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> |
| by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue |
| that will arise on camera modules with open-loop VCMs.<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.afRegions"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>af<wbr/>Regions |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 5 x area_count |
| </span> |
| <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-focus.<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.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> |
| Otherwise will always be present.<wbr/></p> |
| <p>The maximum number of focus areas supported by the device is determined by the value |
| of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</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 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/> The capture result will either be a zero weight region as well,<wbr/> or |
| the region selected by the camera device as the focus area of interest.<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> |
| <p>When setting the AF metering regions,<wbr/> the application must consider the additional |
| crop resulted from the aspect ratio differences between the preview stream and |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full |
| active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> |
| the boundary of AF regions will be [0,<wbr/> y_<wbr/>crop] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio |
| mismatch.<wbr/></p> |
| <p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or |
| preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not |
| pre-zoom field of view.<wbr/> This means that the same afRegions values at different |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions |
| coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the |
| zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same |
| afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the |
| scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use |
| activeArraySize or preCorrectionActiveArraySize still depends on distortion correction |
| mode.<wbr/></p> |
| <p>For camera devices with the |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> |
| capability or devices where |
| <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> |
| lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> |
| <a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the |
| coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<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.afTrigger"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>af<wbr/>Trigger |
| </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">IDLE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">START (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CANCEL (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Autofocus will return to its initial |
| state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the camera device will trigger autofocus for this request.<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>This entry is normally set to IDLE,<wbr/> or is not |
| included at all in the request settings.<wbr/></p> |
| <p>When included and set to START,<wbr/> the camera device will trigger the |
| autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> |
| <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> |
| and return to its initial AF state.<wbr/></p> |
| <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a |
| single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying |
| START for multiple captures in a row means restarting the AF operation over |
| and over again.<wbr/></p> |
| <p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p> |
| <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> |
| simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between |
| the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a |
| focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous |
| trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and |
| changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<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 must support triggering the AF trigger while an AE precapture trigger is active |
| (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to |
| treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the |
| AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> |
| to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<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.awbLock"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>awb<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-white balance lock is disabled; the AWB |
| algorithm is free to update its parameters if in AUTO |
| mode.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB |
| algorithm will not update its parameters while the lock |
| is active.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether auto-white balance (AWB) 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 AWB algorithm is locked to its latest parameters,<wbr/> |
| and will not change color balance settings until the lock is set to <code>false</code> (OFF).<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 AWB 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-AWB mode:</li> |
| <li>Lock AWB</li> |
| <li>Wait for the first result to be output that has the AWB locked</li> |
| <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> |
| <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> |
| </ol> |
| <p>Note that AWB lock is only meaningful when |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> |
| AWB is already fixed to a specific setting.<wbr/></p> |
| <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<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.awbMode"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>awb<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 auto-white balance routine is disabled.<wbr/></p> |
| <p>The application-selected color transform matrix |
| (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains |
| (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera |
| device for manual white balance control.<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's auto-white balance routine is active.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses incandescent light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>While the exact white balance transforms are up to the |
| camera device,<wbr/> they will approximately match the CIE |
| standard illuminant A.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses fluorescent light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>While the exact white balance transforms are up to the |
| camera device,<wbr/> they will approximately match the CIE |
| standard illuminant F2.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses warm fluorescent light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>While the exact white balance transforms are up to the |
| camera device,<wbr/> they will approximately match the CIE |
| standard illuminant F4.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses daylight light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>While the exact white balance transforms are up to the |
| camera device,<wbr/> they will approximately match the CIE |
| standard illuminant D65.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses cloudy daylight light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses twilight light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SHADE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses shade light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether auto-white balance (AWB) is currently setting the color |
| transform fields,<wbr/> and what its illumination target |
| is.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<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 the AUTO mode,<wbr/> the camera device's auto-white balance |
| routine is enabled,<wbr/> overriding the application's selected |
| <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and |
| <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> |
| is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommended to |
| also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before |
| setting AE mode to OFF.<wbr/></p> |
| <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance |
| routine is disabled.<wbr/> The application manually controls the white |
| balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> |
| and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> |
| <p>When set to any other modes,<wbr/> the camera device's auto-white |
| balance routine is disabled.<wbr/> The camera device uses each |
| particular illumination target for white balance |
| adjustment.<wbr/> The application's values for |
| <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> |
| <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and |
| <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<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.awbRegions"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>awb<wbr/>Regions |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 5 x area_count |
| </span> |
| <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-white-balance illuminant |
| estimation.<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.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</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.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</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 range from 0 to 1000,<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 white balance 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> |
| <p>When setting the AWB metering regions,<wbr/> the application must consider the additional |
| crop resulted from the aspect ratio differences between the preview stream and |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full |
| active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> |
| the boundary of AWB regions will be [0,<wbr/> y_<wbr/>crop] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio |
| mismatch.<wbr/></p> |
| <p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or |
| preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not |
| pre-zoom field of view.<wbr/> This means that the same awbRegions values at different |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions |
| coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the |
| zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same |
| awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of |
| the scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use |
| activeArraySize or preCorrectionActiveArraySize still depends on distortion correction |
| mode.<wbr/></p> |
| <p>For camera devices with the |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> |
| capability or devices where |
| <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> |
| lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> |
| <a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the |
| coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<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.captureIntent"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>capture<wbr/>Intent |
| </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">CUSTOM (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other |
| categories.<wbr/> The camera device will default to preview-like |
| behavior.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PREVIEW (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> |
| <p>The precapture trigger may be used to start off a metering |
| w/<wbr/>flash sequence.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a still capture-type |
| use case.<wbr/></p> |
| <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a video recording |
| use case.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still |
| image while recording video) use case.<wbr/></p> |
| <p>The camera device should take the highest-quality image |
| possible (given the other settings) without disrupting the |
| frame rate of video recording.<wbr/> </p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the |
| application will stream full-resolution images and |
| reprocess one or several later for a final |
| capture.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MANUAL (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for manual capture use case where |
| the applications want to directly control the capture parameters.<wbr/></p> |
| <p>For example,<wbr/> the application may wish to manually control |
| <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/> etc.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where |
| the application will use camera and inertial sensor data to |
| locate and track objects in the world.<wbr/></p> |
| <p>The camera device auto-exposure routine will limit the exposure time |
| of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Information to the camera device 3A (auto-exposure,<wbr/> |
| auto-focus,<wbr/> auto-white balance) routines about the purpose |
| of this capture,<wbr/> to help the camera device to decide optimal 3A |
| strategy.<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>This control (except for MANUAL) is only effective if |
| <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> |
| <p>All intents are supported by all devices,<wbr/> except that:</p> |
| <ul> |
| <li>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/></li> |
| <li>MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| MANUAL_<wbr/>SENSOR.<wbr/></li> |
| <li>MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| MOTION_<wbr/>TRACKING.<wbr/></li> |
| </ul> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.effectMode"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>effect<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 color effect will be applied.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MONO (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into |
| a single color.<wbr/></p> |
| <p>This will typically be grayscale.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors |
| are inverted.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the |
| image is wholly or partially reversed in |
| tone.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SEPIA (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm |
| gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses |
| discrete regions of tone rather than a continuous |
| gradient of tones.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed |
| as regions of white,<wbr/> with black or grey details.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed |
| as regions of black,<wbr/> with white or grey details.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AQUA (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>A special color effect to apply.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</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>When this mode is set,<wbr/> a color effect will be applied |
| to images produced by the camera device.<wbr/> The interpretation |
| and implementation of these color effects is left to the |
| implementor of the camera device,<wbr/> and should not be |
| depended on to be consistent (or present) across all |
| devices.<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.mode"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<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>Full application control of pipeline.<wbr/></p> |
| <p>All control by the device's metering and focusing (3A) |
| routines is disabled,<wbr/> and no other settings in |
| android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that |
| <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera |
| device to select post-processing values for processing |
| blocks that do not allow for manual control,<wbr/> or are not |
| exposed by the camera API.<wbr/></p> |
| <p>However,<wbr/> the camera device's 3A routines may continue to |
| collect statistics and update their internal state so that |
| when control is switched to AUTO mode,<wbr/> good control values |
| can be immediately applied.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> |
| <p>Manual control of capture parameters is disabled.<wbr/> All |
| controls in android.<wbr/>control.<wbr/>* besides sceneMode take |
| effect.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> |
| <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and |
| control.<wbr/>afMode controls; the camera device will ignore |
| those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for |
| FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> |
| This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> |
| <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> |
| contain some modes other than DISABLED).<wbr/></p> |
| <p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be |
| used by camera device background auto-exposure,<wbr/> auto-white balance and |
| auto-focus algorithms (3A) to update their statistics.<wbr/></p> |
| <p>Specifically,<wbr/> the 3A routines are locked to the last |
| values set from a request with AUTO,<wbr/> OFF,<wbr/> or |
| USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates |
| collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be |
| discarded by the camera device.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p> |
| <p>When extended scene mode is on,<wbr/> the camera device may override certain control |
| parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and |
| quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level |
| are guaranteed.<wbr/></p> |
| <p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/> |
| android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes |
| contains some modes other than DISABLED).<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control |
| routines.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.availableModes">android.<wbr/>control.<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 is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control |
| by the camera device is disabled.<wbr/> The application must set the fields for |
| capture parameters itself.<wbr/></p> |
| <p>When set to AUTO,<wbr/> the individual algorithm controls in |
| android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> |
| <p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in |
| android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device |
| implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/> |
| SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode |
| 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> |
| <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference |
| is that this frame will not be used by camera device background 3A statistics |
| update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario |
| where the application doesn't want a 3A manual control capture to affect |
| the subsequent auto 3A capture results.<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.sceneMode"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>scene<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">DISABLED (v3.2)</span> |
| <span class="entry_type_enum_value">0</span> |
| <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face |
| detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and |
| auto-exposure routines.<wbr/></p> |
| <p>If face detection statistics are disabled |
| (i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/> |
| this should still operate correctly (but will not return |
| face detection statistics to the framework).<wbr/></p> |
| <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> |
| remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ACTION (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> |
| <p>Similar to SPORTS.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NIGHT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light |
| settings.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">THEATRE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must |
| remain off.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BEACH (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SNOW (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SUNSET (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of |
| device motion (for example: due to hand shake).<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SPORTS (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> |
| <p>Similar to ACTION.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PARTY (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving |
| people.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source |
| is a candle.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BARCODE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode |
| for use by camera applications that wish to read the |
| barcode value.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> |
| <span class="entry_type_enum_deprecated">[deprecated]</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_hidden">[java_public]</span> |
| <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> |
| and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> |
| for high speed video recording.<wbr/></p> |
| <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> |
| <p>The supported high speed video sizes and fps ranges are specified in |
| <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired |
| output frame rates,<wbr/> the application is only allowed to select video size |
| and fps range combinations listed in this static metadata.<wbr/> The fps range |
| can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> |
| <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to |
| ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode |
| controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture |
| and post-processing parameters is possible.<wbr/> All other controls operate the |
| same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other |
| android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> |
| <ul> |
| <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> |
| <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> |
| <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> |
| <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> |
| <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> |
| <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> |
| <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> |
| <li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> |
| </ul> |
| <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> |
| <ul> |
| <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li> |
| <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> |
| <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> |
| <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> |
| </ul> |
| <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may |
| be lower than what camera can output,<wbr/> depending on the destination Surfaces for |
| the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> |
| the application need check if the video encoder is capable of supporting the |
| high frame rate for a given video size,<wbr/> or it will end up with lower recording |
| frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame |
| rate will be bounded by the screen refresh rate.<wbr/></p> |
| <p>The camera device will only support up to 2 output high speed streams |
| (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) |
| in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> |
| <ul> |
| <li>The application created no more than maxNumHighSpeedStreams processed non-stalling |
| format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as |
| min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li> |
| <li>The stream sizes are selected from the sizes reported by |
| <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> |
| <li>No processed non-stalling or raw streams are configured.<wbr/></li> |
| </ul> |
| <p>When above conditions are NOT satisfied,<wbr/> the controls of this mode and |
| <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/> |
| the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> |
| and the returned capture result metadata will give the fps range chosen |
| by the camera device.<wbr/></p> |
| <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor |
| reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that |
| the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HDR (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> |
| <p>In this scene mode,<wbr/> the camera device captures images |
| that keep a larger range of scene illumination levels |
| visible in the final image.<wbr/> For example,<wbr/> when taking a |
| picture of a object in front of a bright window,<wbr/> both |
| the object and the scene through the window may be |
| visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> |
| one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> |
| HDR mode generally takes much longer to capture a single |
| image,<wbr/> has no user control,<wbr/> and may have other artifacts |
| depending on the HDR method used.<wbr/></p> |
| <p>Therefore,<wbr/> HDR captures operate at a much slower rate |
| than regular captures.<wbr/></p> |
| <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request |
| is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of |
| STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image |
| using a high dynamic range capture technique.<wbr/> On LEGACY |
| devices,<wbr/> captures that target a JPEG-format output will |
| be captured with HDR,<wbr/> and the capture intent is not |
| relevant.<wbr/></p> |
| <p>The HDR capture may involve the device capturing a burst |
| of images internally and combining them into one,<wbr/> or it |
| may involve the device using specialized high dynamic |
| range capture hardware.<wbr/> In all cases,<wbr/> a single image is |
| produced in response to a capture request submitted |
| while in HDR mode.<wbr/></p> |
| <p>Since substantial post-processing is generally needed to |
| produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG |
| outputs are supported for LIMITED/<wbr/>FULL device HDR |
| captures,<wbr/> and only JPEG outputs are supported for LEGACY |
| HDR captures.<wbr/> Using a RAW output for HDR capture is not |
| supported.<wbr/></p> |
| <p>Some devices may also support always-on HDR,<wbr/> which |
| applies HDR processing at full frame rate.<wbr/> For these |
| devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also |
| produce an HDR output with no frame rate impact compared |
| to normal operation,<wbr/> though the quality may be lower |
| than for STILL_<wbr/>CAPTURE intents.<wbr/></p> |
| <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types |
| or capture intents,<wbr/> the images captured will be as if |
| the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera |
| device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) |
| under low light conditions.<wbr/></p> |
| <p>The camera device may be tuned to expose the images in a reduced |
| sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> |
| if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/> |
| the camera device auto-exposure routine tuning process may limit the actual |
| exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't |
| excessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under |
| low light may be under-exposed when the sensor max exposure time (bounded by the |
| <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the |
| ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the |
| camera device auto-exposure routine to increase the sensitivity up to the max |
| sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too |
| dark and the max exposure time is reached.<wbr/> The captured images may be noisier |
| compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is |
| recommended that the application only use this scene mode when it is capable of |
| reducing the noise level of the captured images.<wbr/></p> |
| <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> |
| remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_value">100</span> |
| <span class="entry_type_enum_notes"><p>Scene mode values within the range of |
| <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific |
| customized scene modes.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_value">127</span> |
| <span class="entry_type_enum_notes"><p>Scene mode values within the range of |
| <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific |
| customized scene modes.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Control for which scene mode is currently active.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<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>Scene modes are custom camera modes optimized for a certain set of conditions and |
| capture settings.<wbr/></p> |
| <p>This is the mode that that is active when |
| <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will |
| disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> |
| while in use.<wbr/></p> |
| <p>The interpretation and implementation of these scene modes is left |
| to the implementor of the camera device.<wbr/> Their behavior will not be |
| consistent across all devices,<wbr/> and any given device may only implement |
| a subset of these modes.<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 implementations that include scene modes are expected to provide |
| the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in |
| <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> |
| <p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> the |
| HAL must list supported video size and fps range in |
| <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/> 1280x720,<wbr/> |
| if the HAL has two different sensor configurations for normal streaming mode and high |
| speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the |
| HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy |
| HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement |
| <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO |
| capability defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<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.videoStabilizationMode"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>video<wbr/>Stabilization<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>Video stabilization is disabled.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PREVIEW_STABILIZATION (v3.8)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Preview stabilization,<wbr/> where the preview in addition to all other non-RAW streams are |
| stabilized with the same quality of stabilization,<wbr/> is enabled.<wbr/> This mode aims to give |
| clients a 'what you see is what you get' effect.<wbr/> In this mode,<wbr/> the FoV reduction will |
| be a maximum of 20 % both horizontally and vertically |
| (10% from left,<wbr/> right,<wbr/> top,<wbr/> bottom) for the given zoom ratio /<wbr/> crop region.<wbr/> |
| The resultant FoV will also be the same across all processed streams |
| (that have the same aspect ratio).<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether video stabilization is |
| active.<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>Video stabilization automatically warps images from |
| the camera in order to stabilize motion between consecutive frames.<wbr/></p> |
| <p>If enabled,<wbr/> video stabilization can modify the |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> |
| <p>Switching between different video stabilization modes may take several |
| frames to initialize,<wbr/> the camera device will report the current mode |
| in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> |
| the video stabilization modes in the first several capture results may |
| still be "OFF",<wbr/> and it will become "ON" when the initialization is |
| done.<wbr/></p> |
| <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for |
| stabilization by a device that reports stabilization support.<wbr/> It is guaranteed |
| that an output targeting a MediaRecorder or MediaCodec will be stabilized if |
| the recording resolution is less than or equal to 1920 x 1080 (width less than |
| or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording |
| frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult |
| <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return |
| OFF if the recording output is not stabilized,<wbr/> or if there are no output |
| Surface types that can be stabilized.<wbr/></p> |
| <p>The application is strongly recommended to call |
| <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a> |
| with the desired video stabilization mode before creating the capture session.<wbr/> |
| Video stabilization mode is a session parameter on many devices.<wbr/> Specifying |
| it at session creation time helps avoid reconfiguration delay caused by difference |
| between the default value and the first CaptureRequest.<wbr/></p> |
| <p>If a camera device supports both this mode and OIS |
| (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may |
| produce undesirable interaction,<wbr/> so it is recommended not to enable |
| both at the same time.<wbr/></p> |
| <p>If video stabilization is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> |
| <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose |
| to turn on hardware based image stabilization in addition to software based stabilization |
| if it deems that appropriate.<wbr/> |
| This key may be a part of the available session keys,<wbr/> which camera clients may |
| query via |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/> |
| If this is the case,<wbr/> changing this key over the life-time of a capture session may |
| cause delays /<wbr/> glitches.<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>When this key is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> |
| for non-stalling buffers returned without errors,<wbr/> the time interval between notify readout |
| timestamp and when buffers are returned to the camera framework,<wbr/> must be no more than 1 |
| extra frame interval,<wbr/> relative to the case where this key is set to "OFF".<wbr/></p> |
| <p>This is in order for look-ahead time period to be short enough |
| for preview to match video recording for real-time usage.<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.postRawSensitivityBoost"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The amount of additional sensitivity boost applied to output images |
| after RAW sensor data is captured.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</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>Some camera devices support additional digital sensitivity boosting in the |
| camera processing pipeline after sensor RAW image is captured.<wbr/> |
| Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not |
| have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> |
| <p>This key will be <code>null</code> for devices that do not support any RAW format |
| outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always |
| present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will |
| list <code>100</code> in this key.<wbr/></p> |
| <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the |
| boost to the nearest supported value.<wbr/> |
| The final boost value used will be available in the output capture result.<wbr/></p> |
| <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images |
| of such device will have the total sensitivity of |
| <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code> |
| The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> |
| <p>This control is only effective if <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> is set to |
| OFF; otherwise the auto-exposure algorithm will override this value.<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.enableZsl"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>enable<wbr/>Zsl |
| </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> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">FALSE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured |
| after previous requests.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TRUE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be |
| captured before previous requests.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Allow camera device to enable zero-shutter-lag mode for requests with |
| <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<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>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with |
| STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to |
| produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the |
| <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> |
| Therefore,<wbr/> the contents of the output images and the result metadata may be out of order |
| compared to previous regular requests.<wbr/> enableZsl does not affect requests with other |
| capture intents.<wbr/></p> |
| <p>For example,<wbr/> when requests are submitted in the following order: |
| Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW |
| Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p> |
| <p>The output images for request B may have contents captured before the output images for |
| request A,<wbr/> and the result metadata for request B may be older than the result metadata for |
| request A.<wbr/></p> |
| <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in |
| the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> |
| <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in |
| TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always |
| <code>false</code> if present.<wbr/></p> |
| <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all |
| capture templates is always <code>false</code> if present.<wbr/></p> |
| <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<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>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE |
| capture intent.<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.extendedSceneMode"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>extended<wbr/>Scene<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> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">DISABLED (v3.5)</span> |
| <span class="entry_type_enum_value">0</span> |
| <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span> |
| <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/> |
| JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the |
| extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/> |
| This mode should be used in high quality still capture use case.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span> |
| <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/> |
| and the effect is applied to all processed streams no larger than the maximum |
| streaming dimension.<wbr/> This mode should be used if performance and power are a |
| priority,<wbr/> such as video recording.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VENDOR_START (v3.5)</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_value">0x40</span> |
| <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>5</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>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in |
| focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p> |
| <p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra |
| processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when |
| capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p> |
| <p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p> |
| <ul> |
| <li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of |
| BURST_<wbr/>CAPTURE must still be met.<wbr/></li> |
| <li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode |
| (queried via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES">Camera<wbr/>Characteristics#CONTROL_<wbr/>AVAILABLE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE_<wbr/>CAPABILITIES</a>) |
| will have preview bokeh effect applied.<wbr/></li> |
| </ul> |
| <p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's |
| maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not |
| be available for streams larger than the maximum streaming dimension.<wbr/></p> |
| <p>Switching between different extended scene modes may involve reconfiguration of the camera |
| pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the |
| available session keys queried via |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> |
| <p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras |
| with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device |
| may override <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the field of |
| view may be smaller than when bokeh mode is off.<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.zoomRatio"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>zoom<wbr/>Ratio |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| <span class="entry_type_hwlevel">[limited] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The desired zoom ratio</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>5</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>Instead of using <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> for zoom,<wbr/> the application can now choose to |
| use this tag to specify the desired zoom level.<wbr/></p> |
| <p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can |
| be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may |
| contain more than one lens with different focal lengths,<wbr/> and the user can use optical |
| zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p> |
| <ul> |
| <li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides |
| better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li> |
| <li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li> |
| </ul> |
| <p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/> |
| and output streams,<wbr/> for a hypothetical camera device with an active array of size |
| <code>(2000,<wbr/>1500)</code>.<wbr/></p> |
| <ul> |
| <li>Camera Configuration:<ul> |
| <li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> |
| <li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> |
| <li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> |
| </ul> |
| </li> |
| <li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul> |
| <li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> |
| <li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li> |
| </ul> |
| </li> |
| <li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul> |
| <li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li> |
| <li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li> |
| </ul> |
| </li> |
| <li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul> |
| <li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> |
| <li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li> |
| <li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li> |
| <li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li> |
| <li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li> |
| </ul> |
| </li> |
| <li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul> |
| <li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li> |
| <li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li> |
| <li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li> |
| <li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li> |
| <li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li> |
| </ul> |
| </li> |
| </ul> |
| <p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the |
| effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/> |
| activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/> |
| This coordinate system change isn't applicable to RAW capture and its related |
| metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p> |
| <p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is |
| the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p> |
| <ul> |
| <li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li> |
| <li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li> |
| </ul> |
| <p>If the application intends to set aeRegions to be top-left quarter of the viewfinder |
| field-of-view,<wbr/> the <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a> should be set to (0,<wbr/> 0,<wbr/> 1000,<wbr/> 750) with |
| zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent |
| region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't |
| explicitly set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> its value defaults to 1.<wbr/>0.<wbr/></p> |
| <p>One limitation of controlling zoom using zoomRatio is that the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> |
| must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no |
| FREEFORM cropping can be used with <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> other than 1.<wbr/>0.<wbr/> If |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is not 1.<wbr/>0,<wbr/> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is set to be |
| windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be |
| the active array.<wbr/></p> |
| <p>In the capture request,<wbr/> if the application sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to a |
| value != 1.<wbr/>0,<wbr/> the <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the capture result reflects the |
| effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> |
| adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application |
| sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> or does not set it at all,<wbr/> the |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the result metadata will also be 1.<wbr/>0.<wbr/></p> |
| <p>When the application requests a physical stream for a logical multi-camera,<wbr/> the |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in the physical camera result metadata will be 1.<wbr/>0,<wbr/> and |
| the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag reflects the amount of zoom and crop done by the |
| physical camera device.<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 1.<wbr/>0 in order to have |
| consistent field of views between different modes.<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.afRegionsSet"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>af<wbr/>Regions<wbr/>Set |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [fwk_only as boolean]</span> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">FALSE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AF regions (<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TRUE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AF regions (<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Framework-only private key which informs camera fwk that the AF regions has been set |
| by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is |
| set to MAXIMUM_<wbr/>RESOLUTION.<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>This must be set to TRUE by the camera2 java fwk when the camera client sets |
| <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<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.aeRegionsSet"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Regions<wbr/>Set |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [fwk_only as boolean]</span> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">FALSE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AE regions (<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TRUE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AE regions (<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Framework-only private key which informs camera fwk that the AE regions has been set |
| by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is |
| set to MAXIMUM_<wbr/>RESOLUTION.<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>This must be set to TRUE by the camera2 java fwk when the camera client sets |
| <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<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.awbRegionsSet"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>awb<wbr/>Regions<wbr/>Set |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [fwk_only as boolean]</span> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">FALSE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AWB regions (<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>) have not been set by the camera client.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TRUE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AWB regions (<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>) have been set by the camera client.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Framework-only private key which informs camera fwk that the AF regions has been set |
| by the client and those regions need not be corrected when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is |
| set to MAXIMUM_<wbr/>RESOLUTION.<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>This must be set to TRUE by the camera2 java fwk when the camera client sets |
| <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<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.settingsOverride"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>settings<wbr/>Override |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">int32</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>No keys are applied sooner than the other keys when applying CaptureRequest |
| settings to the camera device.<wbr/> This is the default value.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ZOOM (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>Zoom related keys are applied sooner than the other keys in the CaptureRequest.<wbr/> The |
| zoom related keys are:</p> |
| <ul> |
| <li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> |
| <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> |
| <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> |
| </ul> |
| <p>Even though <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>,<wbr/> <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>,<wbr/> |
| and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a> are not directly zoom related,<wbr/> applications |
| typically scale these regions together with <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to have a |
| consistent mapping within the current field of view.<wbr/> In this aspect,<wbr/> they are |
| related to <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VENDOR_START (v3.9)</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_value">0x4000</span> |
| <span class="entry_type_enum_notes"><p>Vendor defined settingsOverride.<wbr/> These depend on vendor implementation.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The desired CaptureRequest settings override with which certain keys are |
| applied earlier so that they can take effect sooner.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.availableSettingsOverrides">android.<wbr/>control.<wbr/>available<wbr/>Settings<wbr/>Overrides</a></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>9</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>There are some CaptureRequest keys which can be applied earlier than others |
| when controls within a CaptureRequest aren't required to take effect at the same time.<wbr/> |
| One such example is zoom.<wbr/> Zoom can be applied at a later stage of the camera pipeline.<wbr/> |
| As soon as the camera device receives the CaptureRequest,<wbr/> it can apply the requested |
| zoom value onto an earlier request that's already in the pipeline,<wbr/> thus improves zoom |
| latency.<wbr/></p> |
| <p>This key's value in the capture result reflects whether the controls for this capture |
| are overridden "by" a newer request.<wbr/> This means that if a capture request turns on |
| settings override,<wbr/> the capture result of an earlier request will contain the key value |
| of ZOOM.<wbr/> On the other hand,<wbr/> if a capture request has settings override turned on,<wbr/> |
| but all newer requests have it turned off,<wbr/> the key's value in the capture result will |
| be OFF because this capture isn't overridden by a newer capture.<wbr/> In the two examples |
| below,<wbr/> the capture results columns illustrate the settingsOverride values in different |
| scenarios.<wbr/></p> |
| <p>Assuming the zoom settings override can speed up by 1 frame,<wbr/> below example illustrates |
| the speed-up at the start of capture session:</p> |
| <pre><code>Camera session created |
| Request 1 (zoom=1.<wbr/>0x,<wbr/> override=ZOOM) -> |
| Request 2 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) -> |
| Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -> Result 1 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) |
| Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -> Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) |
| Request 5 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) -> Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) |
| -> Result 4 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) |
| -> Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) |
| </code></pre> |
| <p>The application can turn on settings override and use zoom as normal.<wbr/> The example |
| shows that the later zoom values (1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> 1.<wbr/>6x,<wbr/> and 1.<wbr/>8x) overwrite the zoom |
| values (1.<wbr/>0x,<wbr/> 1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> and 1.<wbr/>8x) of earlier requests (#1,<wbr/> #2,<wbr/> #3,<wbr/> and #4).<wbr/></p> |
| <p>The application must make sure the settings override doesn't interfere with user |
| journeys requiring simultaneous application of all controls in CaptureRequest on the |
| requested output targets.<wbr/> For example,<wbr/> if the application takes a still capture using |
| CameraCaptureSession#capture,<wbr/> and the repeating request immediately sets a different |
| zoom value using override,<wbr/> the inflight still capture could have its zoom value |
| overwritten unexpectedly.<wbr/></p> |
| <p>So the application is strongly recommended to turn off settingsOverride when taking |
| still/<wbr/>burst captures,<wbr/> and turn it back on when there is only repeating viewfinder |
| request and no inflight still/<wbr/>burst captures.<wbr/></p> |
| <p>Below is the example demonstrating the transitions in and out of the |
| settings override:</p> |
| <pre><code>Request 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF) |
| Request 2 (zoom=1.<wbr/>2x,<wbr/> override=OFF) |
| Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -> Result 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF) |
| Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -> Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) |
| Request 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) -> Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) |
| -> Result 4 (zoom=1.<wbr/>6x,<wbr/> override=OFF) |
| -> Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) |
| </code></pre> |
| <p>This example shows that:</p> |
| <ul> |
| <li>The application "ramps in" settings override by setting the control to ZOOM.<wbr/> |
| In the example,<wbr/> request #3 enables zoom settings override.<wbr/> Because the camera device |
| can speed up applying zoom by 1 frame,<wbr/> the outputs of request #2 has 1.<wbr/>4x zoom,<wbr/> the |
| value specified in request #3.<wbr/></li> |
| <li>The application "ramps out" of settings override by setting the control to OFF.<wbr/> In |
| the example,<wbr/> request #5 changes the override to OFF.<wbr/> Because request #4's zoom |
| takes effect in result #3,<wbr/> result #4's zoom remains the same until new value takes |
| effect in result #5.<wbr/></li> |
| </ul> |
| </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 must set this value to OFF in all of the Capture templates.<wbr/></p> |
| <p>Typically the HAL unblocks processCaptureRequest at the same rate as the sensor capture,<wbr/> |
| and the HAL queues the capture settings in its pipeline when processCaptureRequest |
| returns.<wbr/> However,<wbr/> when the settings override is enabled,<wbr/> the HAL can optimize the |
| overridden controls' latency by applying them as soon as processCaptureRequest is |
| called,<wbr/> rather than when it's unblocked.<wbr/></p> |
| <p>For devices launching with API level 35 or newer,<wbr/> to avoid regression on zoom |
| smoothness,<wbr/> when zoom settings override is on during pinch zoom (zoom value gradually |
| changes),<wbr/> the zoom effect in the camera output must not become more jittery.<wbr/> More |
| specifically,<wbr/> the variation of zoom pipeline latency must not increase.<wbr/> The latency |
| improvement must be at least 1 frame regardless of zoom in or zoom out.<wbr/></p> |
| <p>For devices launched before API level 35,<wbr/> if zoom settings override is on,<wbr/> when |
| zooming in,<wbr/> the HAL must be able to apply the zoom related settings at least 1 |
| frame ahead.<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.autoframing"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>autoframing |
| </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">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>Disable autoframing.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>Enable autoframing to keep people in the frame's field of view.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO (v3.9)</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_notes"><p>Automatically select ON or OFF based on the system level preferences.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Automatic crop,<wbr/> pan and zoom to keep objects in the center of the frame.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>9</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>Auto-framing is a special mode provided by the camera device to dynamically crop,<wbr/> zoom |
| or pan the camera feed to try to ensure that the people in a scene occupy a reasonable |
| portion of the viewport.<wbr/> It is primarily designed to support video calling in |
| situations where the user isn't directly in front of the device,<wbr/> especially for |
| wide-angle cameras.<wbr/> |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in CaptureResult will be used |
| to denote the coordinates of the auto-framed region.<wbr/> |
| Zoom and video stabilization controls are disabled when auto-framing is enabled.<wbr/> The 3A |
| regions must map the screen coordinates into the scaler crop returned from the capture |
| result instead of using the active array sensor.<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>While auto-framing is ON,<wbr/> the aspect ratio of the auto-framed region must match the |
| aspect ratio of the configured output stream.<wbr/> |
| When reporting CaptureResult,<wbr/> SCALER_<wbr/>CROP_<wbr/>REGION might not adequately describe the |
| actual sensor pixels.<wbr/> In this case,<wbr/> it is acceptable for the returned parameters to only |
| be an approximation of the image sensor region that is actually used.<wbr/> |
| When auto-framing is turned off,<wbr/> the transition should be immediate,<wbr/> with no panning or |
| zooming to transition to the settings requested by the app.<wbr/> When it is turned on,<wbr/> the |
| transition can be immediate or smooth.<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.zoomMethod"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>zoom<wbr/>Method |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [fwk_public]</span> |
| |
| |
| <span class="entry_type_hwlevel">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">AUTO (v3.11)</span> |
| <span class="entry_type_enum_value">0</span> |
| <span class="entry_type_enum_notes"><p>The camera device automatically detects whether the application does zoom with |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and in turn decides which |
| metadata tag reflects the effective zoom level.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ZOOM_RATIO (v3.11)</span> |
| <span class="entry_type_enum_value">1</span> |
| <span class="entry_type_enum_notes"><p>The application intends to control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and |
| the effective zoom level is reflected by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the application uses <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> |
| to control zoom levels.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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>If set to AUTO,<wbr/> the camera device detects which capture request key the application uses |
| to do zoom,<wbr/> <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> If |
| the application doesn't set android.<wbr/>scaler.<wbr/>zoom<wbr/>Ratio or sets it to 1.<wbr/>0 in the capture |
| request,<wbr/> the effective zoom level is reflected in <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> in capture |
| results.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to values other than 1.<wbr/>0,<wbr/> the effective |
| zoom level is reflected in <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> AUTO is the default value |
| for this control,<wbr/> and also the behavior of the OS before Android version |
| <a href="https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#BAKLAVA">BAKLAVA</a>.<wbr/></p> |
| <p>If set to ZOOM_<wbr/>RATIO,<wbr/> the application explicitly specifies zoom level be controlled |
| by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the effective zoom level is reflected in |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/> This addresses an ambiguity with AUTO,<wbr/> |
| with which the camera device cannot know if the application is using cropRegion or |
| zoomRatio at 1.<wbr/>0x.<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>Do not use this key directly.<wbr/> It's for camera framework usage,<wbr/> |
| and not for HAL consumption.<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.aePriorityMode"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Priority<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> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF (v3.11)</span> |
| <span class="entry_type_enum_notes"><p>Disable AE priority mode.<wbr/> This is the default value.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SENSOR_SENSITIVITY_PRIORITY (v3.11)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and |
| prioritizes the application-selected ISO (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/></p> |
| <p>The application has control over <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> while |
| the application's values for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and |
| <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SENSOR_EXPOSURE_TIME_PRIORITY (v3.11)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and |
| prioritizes the application-selected exposure time |
| (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>).<wbr/></p> |
| <p>The application has control over <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> while |
| the application's values for <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 ignored.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Turn on AE priority mode.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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 control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is |
| AUTO and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to one of its |
| ON modes,<wbr/> with the exception of ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY.<wbr/></p> |
| <p>When a priority mode is enabled,<wbr/> the camera device's |
| auto-exposure routine will maintain the application's |
| selected parameters relevant to the priority mode while overriding |
| the remaining exposure parameters |
| (<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/> For example,<wbr/> if |
| SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY mode is enabled,<wbr/> the camera device will |
| maintain the application-selected <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> |
| while adjusting <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> |
| and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/> The overridden fields for a |
| given capture will be available in its CaptureResult.<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 total sensitivity applied for SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY should not be |
| adjusted by any HAL applied <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<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.control.aeAvailableAntibandingModes"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <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 auto-exposure antibanding modes for <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<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.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<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_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 all of the auto-exposure anti-banding modes may be |
| supported by a given camera device.<wbr/> This field lists the |
| valid anti-banding modes that the application may request |
| for this camera device with the |
| <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.aeAvailableModes"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <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 auto-exposure modes for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<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.control.aeMode">android.<wbr/>control.<wbr/>ae<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_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 all the auto-exposure modes may be supported by a |
| given camera device,<wbr/> especially if no flash unit is |
| available.<wbr/> This entry lists the valid modes for |
| <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p> |
| <p>All camera devices support ON,<wbr/> and all camera devices with flash |
| units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p> |
| <p>FULL mode camera devices always support OFF mode,<wbr/> |
| which enables application control of camera exposure time,<wbr/> |
| sensitivity,<wbr/> and frame duration.<wbr/></p> |
| <p>LEGACY mode camera devices never support OFF mode.<wbr/> |
| LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR |
| capability.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 x n |
| </span> |
| <span class="entry_type_visibility"> [public as rangeInt]</span> |
| |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| <div class="entry_type_notes">list of pairs of frame rates</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of frame rate ranges for <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> supported by |
| this camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| Frames per second (FPS) |
| </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>For devices at the LEGACY level or above:</p> |
| <ul> |
| <li> |
| <p>For constant-framerate recording,<wbr/> for each normal |
| <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a |
| <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has |
| <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in |
| the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/> |
| <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is |
| supported by the device and has |
| <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will |
| always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p> |
| </li> |
| <li> |
| <p>Also,<wbr/> a camera device must either not support any |
| <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> |
| or support at least one |
| normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has |
| <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> >= 24.<wbr/></p> |
| </li> |
| </ul> |
| <p>For devices at the LIMITED level or above:</p> |
| <ul> |
| <li>For devices that advertise NIR color filter arrangement in |
| <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>,<wbr/> this list will always include |
| (<code>max</code>,<wbr/> <code>max</code>) where <code>max</code> = the maximum output frame rate of the maximum YUV_<wbr/>420_<wbr/>888 |
| output size.<wbr/></li> |
| <li>For devices advertising any color filter arrangement other than NIR,<wbr/> or devices not |
| advertising color filter arrangement,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) and |
| (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> <= 15 and <code>max</code> = the maximum output frame rate of the |
| maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li> |
| </ul> |
| </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 make sure the lower bound and upper bound of each supported targetFpsRange can |
| be reached.<wbr/> For example,<wbr/> if HAL supports an aeTargetFpsRange of (15,<wbr/> 30),<wbr/> when set by the |
| application,<wbr/> the camera must be able to reach 15fps in sufficient dark scenes.<wbr/> This way |
| the application knows the exact range of frame rate it can expect.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.aeCompensationRange"> |
| <td class="entry_name |
| " rowspan="1"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [public as rangeInt]</span> |
| |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Maximum and minimum exposure compensation values for |
| <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>,<wbr/> in counts of <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a>,<wbr/> |
| that are supported by this camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p> |
| <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure |
| compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p> |
| <p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> <= -2 EV</code></p> |
| <p><code>Max.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> >= 2 EV</code></p> |
| <p>LEGACY devices may support a smaller range than this.<wbr/></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="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.aeCompensationStep"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">rational</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Smallest step by which the exposure compensation |
| can be changed.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| Exposure Value (EV) |
| </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>This is the unit for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>.<wbr/> For example,<wbr/> if this key has |
| a value of <code>1/<wbr/>2</code>,<wbr/> then a setting of <code>-2</code> for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> means |
| that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p> |
| <p>One unit of EV compensation changes the brightness of the captured image by a factor |
| of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<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>This must be less than or equal to 1/<wbr/>2.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.afAvailableModes"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <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 auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<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.control.afMode">android.<wbr/>control.<wbr/>af<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_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 all the auto-focus modes may be supported by a |
| given camera device.<wbr/> This entry lists the valid modes for |
| <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p> |
| <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all |
| camera devices with adjustable focuser units |
| (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>) will support AUTO mode.<wbr/></p> |
| <p>LEGACY devices will support OFF mode only if they support |
| focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to |
| <code>0.<wbr/>0f</code>).<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableEffects"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>available<wbr/>Effects |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public as enumList]</span> |
| |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of color effects for <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<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.control.effectMode">android.<wbr/>control.<wbr/>effect<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_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 list contains the color effect modes that can be applied to |
| images produced by the camera device.<wbr/> |
| Implementations are not expected to be consistent across all devices.<wbr/> |
| If no color effect modes are available for a device,<wbr/> this will only list |
| OFF.<wbr/></p> |
| <p>A color effect will only be applied if |
| <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/> OFF is always included in this list.<wbr/></p> |
| <p>This control has no effect on the operation of other control routines such |
| as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableSceneModes"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public as enumList]</span> |
| |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of scene modes for <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<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.control.sceneMode">android.<wbr/>control.<wbr/>scene<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_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 list contains scene modes that can be set for the camera device.<wbr/> |
| Only scene modes that have been fully implemented for the |
| camera device may be included here.<wbr/> Implementations are not expected |
| to be consistent across all devices.<wbr/></p> |
| <p>If no scene modes are supported by the camera device,<wbr/> this |
| will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p> |
| <p>FACE_<wbr/>PRIORITY is always listed if face detection is |
| supported (i.<wbr/>e.<wbr/><code><a href="#static_android.statistics.info.maxFaceCount">android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count</a> > |
| 0</code>).<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public as enumList]</span> |
| |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| <div class="entry_type_notes">List of enums.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<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.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<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_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>OFF will always be listed.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.awbAvailableModes"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <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 auto-white-balance modes for <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<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.control.awbMode">android.<wbr/>control.<wbr/>awb<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_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 all the auto-white-balance modes may be supported by a |
| given camera device.<wbr/> This entry lists the valid modes for |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p> |
| <p>All camera devices will support ON mode.<wbr/></p> |
| <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF |
| mode,<wbr/> which enables application control of white balance,<wbr/> by using |
| <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>(<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> must be set to TRANSFORM_<wbr/>MATRIX).<wbr/> This includes all FULL |
| mode camera devices.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.maxRegions"> |
| <td class="entry_name |
| " rowspan="1"> |
| android.<wbr/>control.<wbr/>max<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"> |
| 3 |
| </span> |
| <span class="entry_type_visibility"> [ndk_public]</span> |
| |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of the maximum number of regions that can be used for metering in |
| auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF); |
| this corresponds to the maximum number of elements in |
| <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>,<wbr/> <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>,<wbr/> |
| and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Value must be >= 0 for each element.<wbr/> For full-capability devices |
| this value must be >= 1 for AE and AF.<wbr/> The order of the elements is: |
| <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></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="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.maxRegionsAe"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [java_public]</span> |
| |
| <span class="entry_type_synthetic">[synthetic] </span> |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The maximum number of metering regions that can be used by the auto-exposure (AE) |
| routine.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this |
| value will be >= 1.<wbr/></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>This corresponds to the maximum allowed number of elements in |
| <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<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>This entry is private to the framework.<wbr/> Fill in |
| maxRegions to have this entry be automatically populated.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.maxRegionsAwb"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [java_public]</span> |
| |
| <span class="entry_type_synthetic">[synthetic] </span> |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The maximum number of metering regions that can be used by the auto-white balance (AWB) |
| routine.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Value will be >= 0.<wbr/></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>This corresponds to the maximum allowed number of elements in |
| <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<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>This entry is private to the framework.<wbr/> Fill in |
| maxRegions to have this entry be automatically populated.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.maxRegionsAf"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [java_public]</span> |
| |
| <span class="entry_type_synthetic">[synthetic] </span> |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Value will be >= 0.<wbr/> For FULL-capability devices,<wbr/> this |
| value will be >= 1.<wbr/></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>This corresponds to the maximum allowed number of elements in |
| <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<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>This entry is private to the framework.<wbr/> Fill in |
| maxRegions to have this entry be automatically populated.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.sceneModeOverrides"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 3 x length(availableSceneModes) |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| <span class="entry_type_hwlevel">[limited] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus |
| settings to use with each available scene mode.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>For each available scene mode,<wbr/> the list must contain three |
| entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> values used |
| by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code> |
| where aeMode has the lowest index position.<wbr/></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>When a scene mode is enabled,<wbr/> the camera device is expected |
| to override <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> |
| and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for |
| that scene mode.<wbr/></p> |
| <p>The order of this list matches that of availableSceneModes,<wbr/> |
| with 3 entries for each mode.<wbr/> The overrides listed |
| for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/> |
| since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> values are |
| used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> |
| is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and |
| FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p> |
| <p>For example,<wbr/> if availableSceneModes contains |
| <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/> then the camera framework |
| expects sceneModeOverrides to have 9 entries formatted like: |
| <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> |
| ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<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>To maintain backward compatibility,<wbr/> this list will be made available |
| in the static metadata of the camera service.<wbr/> The camera service will |
| use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> when using a scene |
| mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations |
| </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 n |
| </span> |
| <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> |
| |
| |
| <span class="entry_type_hwlevel">[limited] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of available high speed video size,<wbr/> fps range and max batch size configurations |
| supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></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>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/> |
| this metadata will list the supported high speed video size,<wbr/> fps range and max batch size |
| configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes |
| reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> |
| for processed non-stalling formats.<wbr/></p> |
| <p>For the high speed video use case,<wbr/> the application must |
| select the video size and fps range from this metadata to configure the recording and |
| preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends |
| to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to |
| configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata |
| by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the |
| recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application |
| must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams |
| must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p> |
| <p>The min and max fps will be multiple times of 30fps.<wbr/></p> |
| <p>High speed video streaming extends significant performance pressure to camera hardware,<wbr/> |
| to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate |
| multiple frames together and send to camera device for processing where the request |
| controls are same for all the frames in this batch.<wbr/> Max batch size indicates |
| the max possible number of frames the camera device will group together for this high |
| speed stream configuration.<wbr/> This max batch size will be used to generate a high speed |
| recording request list by |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/> |
| The max batch size for each configuration will satisfy below conditions:</p> |
| <ul> |
| <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/> |
| if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li> |
| <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but |
| the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch |
| size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li> |
| <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li> |
| </ul> |
| <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/> |
| in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p> |
| <p>This fps ranges in this configuration list can only be used to create requests |
| that are submitted to a high speed camera capture session created by |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> |
| The fps ranges reported in this metadata must not be used to setup capture requests for |
| normal capture session,<wbr/> or it will cause request error.<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>All the sizes listed in this configuration will be a subset of the sizes reported by |
| <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/> |
| Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum |
| of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p> |
| <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps |
| sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application |
| usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused |
| stutter when starting recording as much as possible,<wbr/> the application may want to ensure |
| the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise |
| the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/> |
| For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise |
| [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to |
| do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start |
| recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps |
| values that are suitable for smooth preview streaming.<wbr/> |
| If the HAL sees different max_<wbr/>fps values that fall into different sensor modes in a |
| sequence of requests,<wbr/> the HAL must switch the sensor mode as quick as possible to minimize |
| the mode switch caused stutter.<wbr/></p> |
| <p>HAL can also support 60fps preview during high speed recording session by advertising |
| [60,<wbr/> max_<wbr/>fps] for preview and [max_<wbr/>fps,<wbr/> max_<wbr/>fps] for recording.<wbr/> However,<wbr/> HAL must not |
| advertise both 30fps preview and 60fps preview for the same recording frame rate.<wbr/></p> |
| <p>Starting from AIDL ICameraDevice V2,<wbr/> camera HAL must report the valid batch_<wbr/>size_<wbr/>max.<wbr/> The |
| field will actually be used to generate a high speed recording request list.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.aeLockAvailable"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available |
| </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">FALSE (v3.2)</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TRUE (v3.2)</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></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>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always |
| list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.awbLockAvailable"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available |
| </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">FALSE (v3.2)</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TRUE (v3.2)</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></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>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will |
| always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableModes"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>available<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public as enumList]</span> |
| |
| |
| <span class="entry_type_hwlevel">[legacy] </span> |
| |
| |
| <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<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.control.mode">android.<wbr/>control.<wbr/>mode</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>This list contains control modes that can be set for the camera device.<wbr/> |
| LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL |
| devices will always support OFF,<wbr/> AUTO modes.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.postRawSensitivityBoostRange"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<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> |
| |
| |
| |
| |
| <div class="entry_type_notes">Range of supported post RAW sensitivity boosts</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported |
| by this camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity |
| </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>Devices support post RAW sensitivity boost will advertise |
| <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controlling |
| post RAW sensitivity boost.<wbr/></p> |
| <p>This key will be <code>null</code> for devices that do not support any RAW format |
| outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always |
| present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will |
| list <code>(100,<wbr/> 100)</code> in this key.<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>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera |
| framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output |
| formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports |
| any of RAW output formats.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableExtendedSceneModeMaxSizes"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Max<wbr/>Sizes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 3 x n |
| </span> |
| <span class="entry_type_visibility"> [ndk_public]</span> |
| |
| |
| <span class="entry_type_hwlevel">[limited] </span> |
| |
| |
| <div class="entry_type_notes">List of extended scene modes and the corresponding max streaming sizes.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The list of extended scene modes for <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a> that are supported |
| by this camera device,<wbr/> and each extended scene mode's maximum streaming (non-stall) size |
| with effect.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| (mode,<wbr/> width,<wbr/> height) |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>5</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>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p> |
| <p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit |
| under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture |
| intent is PREVIEW,<wbr/> the bokeh effect may not be as high in quality compared to |
| STILL_<wbr/>CAPTURE intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming |
| dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in |
| availableStreamConfigurations,<wbr/> or (0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the |
| application configures a stream larger than the maximum streaming dimension,<wbr/> bokeh |
| effect may not be applied for this stream for PREVIEW intent.<wbr/></p> |
| <p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under |
| which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE |
| resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is |
| larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/> |
| If the application configures a stream with larger dimension,<wbr/> the stream may not have |
| bokeh effect applied.<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 available extended scene modes,<wbr/> DISABLED will always be listed.<wbr/></p> |
| <p>HAL must support at list one non-OFF extended scene mode if extendedSceneMode control is |
| available on the camera device.<wbr/> For DISABLED mode,<wbr/> the maximum streaming resolution must |
| be set to (0,<wbr/> 0).<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableExtendedSceneModeZoomRatioRanges"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Zoom<wbr/>Ratio<wbr/>Ranges |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 x n |
| </span> |
| <span class="entry_type_visibility"> [ndk_public]</span> |
| |
| |
| <span class="entry_type_hwlevel">[limited] </span> |
| |
| |
| <div class="entry_type_notes">Zoom ranges for all supported non-OFF extended scene modes.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The ranges of supported zoom ratio for non-DISABLED <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| (minZoom,<wbr/> maxZoom) |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>5</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 extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios |
| compared to when extended scene mode is DISABLED.<wbr/> This tag lists the zoom ratio ranges |
| for all supported non-DISABLED extended scene modes,<wbr/> in the same order as in |
| android.<wbr/>control.<wbr/>available<wbr/>Extended.<wbr/></p> |
| <p>Range [1.<wbr/>0,<wbr/> 1.<wbr/>0] means that no zoom (optical or digital) is supported.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableExtendedSceneModeCapabilities"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Mode<wbr/>Capabilities |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public as capability]</span> |
| |
| <span class="entry_type_synthetic">[synthetic] </span> |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The list of extended scene modes for <a href="#controls_android.control.extendedSceneMode">android.<wbr/>control.<wbr/>extended<wbr/>Scene<wbr/>Mode</a> that |
| are supported by this camera device,<wbr/> and each extended scene mode's capabilities such |
| as maximum streaming size,<wbr/> and supported zoom ratio ranges.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>5</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>For DISABLED mode,<wbr/> the camera behaves normally with no extended scene mode enabled.<wbr/></p> |
| <p>For BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode,<wbr/> the maximum streaming dimension specifies the limit |
| under which bokeh is effective when capture intent is PREVIEW.<wbr/> Note that when capture |
| intent is PREVIEW,<wbr/> the bokeh effect may not be as high quality compared to STILL_<wbr/>CAPTURE |
| intent in order to maintain reasonable frame rate.<wbr/> The maximum streaming dimension must |
| be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE resolutions in availableStreamConfigurations,<wbr/> or |
| (0,<wbr/> 0) if preview bokeh is not supported.<wbr/> If the application configures a stream |
| larger than the maximum streaming dimension,<wbr/> bokeh effect may not be applied for this |
| stream for PREVIEW intent.<wbr/></p> |
| <p>For BOKEH_<wbr/>CONTINUOUS mode,<wbr/> the maximum streaming dimension specifies the limit under |
| which bokeh is effective.<wbr/> This dimension must be one of the YUV_<wbr/>420_<wbr/>888 or PRIVATE |
| resolutions in availableStreamConfigurations,<wbr/> and if the sensor maximum resolution is |
| larger than or equal to 1080p,<wbr/> the maximum streaming dimension must be at least 1080p.<wbr/> |
| If the application configures a stream with larger dimension,<wbr/> the stream may not have |
| bokeh effect applied.<wbr/></p> |
| <p>When extended scene mode is set,<wbr/> the camera device may have limited range of zoom ratios |
| compared to when the mode is DISABLED.<wbr/> availableExtendedSceneModeCapabilities lists the |
| zoom ranges for all supported extended modes.<wbr/> A range of (1.<wbr/>0,<wbr/> 1.<wbr/>0) means that no zoom |
| (optical or digital) is supported.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.zoomRatioRange"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [public as rangeFloat]</span> |
| |
| |
| <span class="entry_type_hwlevel">[limited] </span> |
| |
| |
| <div class="entry_type_notes">The range of zoom ratios that this camera device supports.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Minimum and maximum zoom ratios supported by this camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| A pair of zoom ratio in floating-points: (minZoom,<wbr/> maxZoom) |
| </td> |
| |
| <td class="entry_range"> |
| <p>maxZoom >= 1.<wbr/>0 >= minZoom</p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>5</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>If the camera device supports zoom-out from 1x zoom,<wbr/> minZoom will be less than 1.<wbr/>0,<wbr/> and |
| setting <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to values less than 1.<wbr/>0 increases the camera's field |
| of view.<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>When the key is reported,<wbr/> the camera device's <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> |
| must be less than or equal to maxZoom.<wbr/> The camera framework makes sure to always |
| control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> The <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag is only |
| used to do horizontal or vertical cropping (but not both) to achieve aspect ratio |
| different than the camera sensor's native aspect ratio.<wbr/></p> |
| <p>For a logical multi-camera device,<wbr/> this key must either be reported for both the logical |
| camera device and all its physical sub-cameras,<wbr/> or none of them.<wbr/></p> |
| <p>When the key is not reported,<wbr/> camera framework derives the application-facing |
| zoomRatioRange to be (1,<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>).<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurationsMaximumResolution"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations<wbr/>Maximum<wbr/>Resolution |
| </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 n |
| </span> |
| <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of available high speed video size,<wbr/> fps range and max batch size configurations |
| supported by the camera device,<wbr/> in the format of |
| (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max),<wbr/> |
| when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>6</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>Analogous to <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>,<wbr/> for configurations |
| which are applicable when <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<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>Refer to hal details for <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableSettingsOverrides"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>available<wbr/>Settings<wbr/>Overrides |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public as enumList]</span> |
| |
| |
| |
| |
| <div class="entry_type_notes">list of enums</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of available settings overrides supported by the camera device that can |
| be used to speed up certain controls.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Any value listed in <a href="#controls_android.control.settingsOverride">android.<wbr/>control.<wbr/>settings<wbr/>Override</a></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>9</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 not all controls within a CaptureRequest are required to take effect |
| at the same time on the outputs,<wbr/> the camera device may apply certain request keys sooner |
| to improve latency.<wbr/> This list contains such supported settings overrides.<wbr/> Each settings |
| override corresponds to a set of CaptureRequest keys that can be sped up when applying.<wbr/></p> |
| <p>A supported settings override can be passed in via |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html#CONTROL_SETTINGS_OVERRIDE">Capture<wbr/>Request#CONTROL_<wbr/>SETTINGS_<wbr/>OVERRIDE</a>,<wbr/> and the |
| CaptureRequest keys corresponding to the override are applied as soon as possible,<wbr/> not |
| bound by per-frame synchronization.<wbr/> See <a href="#controls_android.control.settingsOverride">android.<wbr/>control.<wbr/>settings<wbr/>Override</a> for the |
| CaptureRequest keys for each override.<wbr/></p> |
| <p>OFF is always included in this list.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.autoframingAvailable"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>autoframing<wbr/>Available |
| </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">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">FALSE (v3.9)</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TRUE (v3.9)</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the camera device supports <a href="#controls_android.control.autoframing">android.<wbr/>control.<wbr/>autoframing</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>9</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>Will be <code>false</code> if auto-framing is not available.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.lowLightBoostInfoLuminanceRange"> |
| <td class="entry_name |
| " rowspan="1"> |
| android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [public as rangeFloat]</span> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The operating luminance range of low light boost measured in lux (lx).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>The lower bound indicates the lowest scene luminance value the AE mode |
| 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' can operate within.<wbr/> Scenes of lower luminance |
| than this may receive less brightening,<wbr/> increased noise,<wbr/> or artifacts.<wbr/></p> |
| <p>The upper bound indicates the luminance threshold at the point when the mode is enabled.<wbr/> |
| For example,<wbr/> 'Range[0.<wbr/>3,<wbr/> 30.<wbr/>0]' defines 0.<wbr/>3 lux being the lowest scene luminance the |
| mode can reliably support.<wbr/> 30.<wbr/>0 lux represents the threshold when this mode is |
| activated.<wbr/> Scenes measured at less than or equal to 30 lux will activate low light |
| boost.<wbr/></p> |
| <p>If this key is defined,<wbr/> then the AE mode 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' will |
| also be present.<wbr/></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>10</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.aeAvailablePriorityModes"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Priority<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> |
| |
| |
| |
| |
| <div class="entry_type_notes">list of enums</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of auto-exposure priority modes for <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<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.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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 entry lists the valid modes for |
| <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> for this camera device.<wbr/> |
| If no AE priority modes are available for a device,<wbr/> this will only list OFF.<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.control.aePrecaptureId"> |
| <td class="entry_name |
| entry_name_deprecated |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| |
| <span class="entry_type_deprecated">[deprecated] </span> |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The ID sent with the latest |
| CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</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>Must be 0 if no |
| CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet |
| by HAL.<wbr/> Always updated even if AE algorithm ignores the |
| trigger</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_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="dynamic_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="dynamic_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="dynamic_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> |
| <p>If the device supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/> |
| if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and |
| <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then |
| the auto-exposure (AE) precapture metering sequence should be |
| triggered for the configured flash mode and strength to avoid |
| the image being incorrectly exposed at different |
| <a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<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 recalculated 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> |
| <li> |
| <span class="entry_type_enum_name">ON_LOW_LIGHT_BOOST_BRIGHTNESS_PRIORITY (v3.10)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Like 'ON' but applies additional brightness boost in low light scenes.<wbr/></p> |
| <p>When the scene lighting conditions are within the range defined by |
| <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a> this mode will apply additional |
| brightness boost.<wbr/></p> |
| <p>This mode will automatically adjust the intensity of low light boost applied |
| according to the scene lighting conditions.<wbr/> A darker scene will receive more boost |
| while a brighter scene will receive less boost.<wbr/></p> |
| <p>This mode can ignore the set target frame rate to allow more light to be captured |
| which can result in choppier motion.<wbr/> The frame rate can extend to lower than the |
| <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> but will not go below 10 FPS.<wbr/> This mode |
| can also increase the sensor sensitivity gain which can result in increased luma |
| and chroma noise.<wbr/> The sensor sensitivity gain can extend to higher values beyond |
| <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>.<wbr/> This mode may also apply additional |
| processing to recover details in dark and bright areas of the image,<wbr/>and noise |
| reduction at high sensitivity gain settings to manage the trade-off between light |
| sensitivity and capture noise.<wbr/></p> |
| <p>This mode is restricted to two output surfaces.<wbr/> One output surface type can either |
| be SurfaceView or TextureView.<wbr/> Another output surface type can either be MediaCodec |
| or MediaRecorder.<wbr/> This mode cannot be used with a target FPS range higher than 30 |
| FPS.<wbr/></p> |
| <p>If the session configuration is not supported,<wbr/> the AE mode reported in the |
| CaptureResult will be 'ON' instead of 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY'.<wbr/></p> |
| <p>When this AE mode is enabled,<wbr/> the CaptureResult field |
| <a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will indicate when low light boost is 'ACTIVE' |
| or 'INACTIVE'.<wbr/> By default <a href="#dynamic_android.control.lowLightBoostState">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State</a> will be 'INACTIVE'.<wbr/></p> |
| <p>The low light boost is 'ACTIVE' once the scene lighting condition is less than the |
| upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<wbr/> |
| This mode will be 'INACTIVE' once the scene lighting condition is greater than the |
| upper bound lux value defined by <a href="#static_android.control.lowLightBoostInfoLuminanceRange">android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>Info<wbr/>Luminance<wbr/>Range</a>.<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 <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> is |
| enabled,<wbr/> the relevant priority CaptureRequest settings will not be overridden.<wbr/> |
| See <a href="#controls_android.control.aePriorityMode">android.<wbr/>control.<wbr/>ae<wbr/>Priority<wbr/>Mode</a> for more details.<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> |
| <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON and if the device |
| supports manual flash strength control,<wbr/> i.<wbr/>e.,<wbr/> |
| if <a href="#static_android.flash.singleStrengthMaxLevel">android.<wbr/>flash.<wbr/>single<wbr/>Strength<wbr/>Max<wbr/>Level</a> and |
| <a href="#static_android.flash.torchStrengthMaxLevel">android.<wbr/>flash.<wbr/>torch<wbr/>Strength<wbr/>Max<wbr/>Level</a> are greater than 1,<wbr/> then |
| the auto-exposure (AE) precapture metering sequence should be |
| triggered to avoid the image being incorrectly exposed at |
| different <a href="#controls_android.flash.strengthLevel">android.<wbr/>flash.<wbr/>strength<wbr/>Level</a>.<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.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> |
| <p>When setting the AE metering regions,<wbr/> the application must consider the additional |
| crop resulted from the aspect ratio differences between the preview stream and |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full |
| active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> |
| the boundary of AE regions will be [0,<wbr/> y_<wbr/>crop] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio |
| mismatch.<wbr/></p> |
| <p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or |
| preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not |
| pre-zoom field of view.<wbr/> This means that the same aeRegions values at different |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The aeRegions |
| coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the |
| zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same |
| aeRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the |
| scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use |
| activeArraySize or preCorrectionActiveArraySize still depends on distortion correction |
| mode.<wbr/></p> |
| <p>For camera devices with the |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> |
| capability or devices where |
| <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> |
| lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> |
| <a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the |
| coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<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="dynamic_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/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</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>Only constrains auto-exposure (AE) algorithm,<wbr/> not |
| manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and |
| <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p> |
| <p>Note that the actual achievable max framerate also depends on the minimum frame |
| duration of the output streams.<wbr/> The max frame rate will be |
| <code>min(aeTargetFpsRange.<wbr/>maxFps,<wbr/> 1 /<wbr/> max(individual stream min durations))</code>.<wbr/> For example,<wbr/> |
| if the application sets this key to <code>{60,<wbr/> 60}</code>,<wbr/> but the maximum minFrameDuration among |
| all configured streams is 33ms,<wbr/> the maximum framerate won't be 60fps,<wbr/> but will be |
| 30fps.<wbr/></p> |
| <p>To start a CaptureSession with a target FPS range different from the |
| capture request template's default value,<wbr/> the application |
| is strongly recommended to call |
| <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a> |
| with the target fps range before creating the capture session.<wbr/> The aeTargetFpsRange is |
| typically a session parameter.<wbr/> Specifying it at session creation time helps avoid |
| session reconfiguration delays in cases like 60fps or high speed recording.<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.control.aePrecaptureTrigger"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger |
| </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">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">IDLE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">START (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started |
| by the camera device.<wbr/></p> |
| <p>The exact effect of the precapture trigger depends on |
| the current AE mode and state.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CANCEL (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed |
| precapture metering sequence,<wbr/> the auto-exposure routine will return to its |
| initial state.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the camera device will trigger a precapture |
| metering sequence when it processes this request.<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>This entry is normally set to IDLE,<wbr/> or is not |
| included at all in the request settings.<wbr/> When included and |
| set to START,<wbr/> the camera device will trigger the auto-exposure (AE) |
| precapture metering sequence.<wbr/></p> |
| <p>When set to CANCEL,<wbr/> the camera device will cancel any active |
| precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/> |
| If a precapture metering sequence is already completed,<wbr/> and the camera |
| device has implicitly locked the AE for subsequent still capture,<wbr/> the |
| CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p> |
| <p>The precapture sequence should be triggered before starting a |
| high-quality still capture for final metering decisions to |
| be made,<wbr/> and for firing pre-capture flash pulses to estimate |
| scene brightness and required final capture flash power,<wbr/> when |
| the flash is enabled.<wbr/></p> |
| <p>Flash is enabled during precapture sequence when:</p> |
| <ul> |
| <li>AE mode is ON_<wbr/>ALWAYS_<wbr/>FLASH</li> |
| <li>AE mode is ON_<wbr/>AUTO_<wbr/>FLASH and the scene is deemed too dark without flash,<wbr/> or</li> |
| <li>AE mode is ON and flash mode is TORCH or SINGLE</li> |
| </ul> |
| <p>Normally,<wbr/> this entry should be set to START for only single request,<wbr/> and the |
| application should wait until the sequence completes before starting a new one.<wbr/></p> |
| <p>When a precapture metering sequence is finished,<wbr/> the camera device |
| may lock the auto-exposure routine internally to be able to accurately expose the |
| subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/> |
| For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is |
| submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should |
| submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request |
| with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a |
| still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for |
| API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device |
| internally locked AE if the application doesn't submit a still capture request after |
| the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not |
| be used in devices that have earlier API levels.<wbr/></p> |
| <p>The exact effect of auto-exposure (AE) precapture trigger |
| depends on the current AE mode and state; see |
| <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition |
| details.<wbr/></p> |
| <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported; |
| capturing a high-resolution JPEG image will automatically trigger a |
| precapture sequence before the high-resolution capture,<wbr/> including |
| potentially firing a pre-capture flash.<wbr/></p> |
| <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> |
| simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between |
| the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a |
| focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous |
| trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and |
| changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for |
| example.<wbr/></p> |
| <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then |
| the camera device will complete them in the optimal order for that device.<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 must support triggering the AE precapture trigger while an AF trigger is active |
| (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to |
| treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the |
| AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> |
| to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<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.control.aeState"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>State |
| </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">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">INACTIVE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p> |
| <p>When a camera device is opened,<wbr/> it starts in |
| this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting |
| this state in capture result.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SEARCHING (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values |
| for the current scene.<wbr/></p> |
| <p>This is a transient state,<wbr/> the camera device may skip |
| reporting this state in capture result.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONVERGED (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AE has a good set of control values for the |
| current scene.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">LOCKED (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash |
| needs to be fired for good quality still |
| capture.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence |
| and is currently executing it.<wbr/></p> |
| <p>Precapture can be triggered through setting |
| <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently |
| active and completed (if it causes camera device internal AE lock) precapture |
| metering sequence can be canceled through setting |
| <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p> |
| <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED |
| or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient |
| state,<wbr/> the camera device may skip reporting this state in |
| capture result.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current state of the auto-exposure (AE) algorithm.<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>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always |
| resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> |
| or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all |
| the algorithm states to INACTIVE.<wbr/></p> |
| <p>The camera device can do several state transitions between two results,<wbr/> if it is |
| allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be |
| seen in a result.<wbr/></p> |
| <p>The state in the result is the state for this image (in sync with this image): if |
| AE state becomes CONVERGED,<wbr/> then the image data associated with this result should |
| be good to use.<wbr/></p> |
| <p>Below are state transition tables for different AE modes.<wbr/></p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;"></td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Camera device auto exposure algorithm is disabled</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Camera device initiates AE scan</td> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Values changing</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Values locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Camera device finishes AE scan</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Good values,<wbr/> not changing</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Camera device finishes AE scan</td> |
| <td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> |
| <td style="text-align: center;">Converged but too dark w/<wbr/>o flash</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Values locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Camera device initiates AE scan</td> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Values changing</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Values locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> |
| <td style="text-align: center;">Camera device initiates AE scan</td> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Values changing</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Values locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Values not good after unlock</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Values good after unlock</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| <td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> |
| <td style="text-align: center;">Exposure good,<wbr/> but too dark</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PRECAPTURE</td> |
| <td style="text-align: center;">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Ready for high-quality capture</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PRECAPTURE</td> |
| <td style="text-align: center;">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Ready for high-quality capture</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">aeLock is ON and aePrecaptureTrigger is START</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Precapture trigger is ignored when AE is already locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">aeLock is ON and aePrecaptureTrigger is CANCEL</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Precapture trigger is ignored when AE is already locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">Any state (excluding LOCKED)</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> |
| <td style="text-align: center;">PRECAPTURE</td> |
| <td style="text-align: center;">Start AE precapture metering sequence</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">Any state (excluding LOCKED)</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Currently active precapture metering sequence is canceled</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in |
| <a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<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> |
| <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen |
| without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that |
| can be skipped in that manner is called a transient state.<wbr/></p> |
| <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions |
| listed in above table,<wbr/> it is also legal for the camera device to skip one or more |
| transient states between two results.<wbr/> See below table for examples:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Camera device finished AE scan</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">Any state (excluding LOCKED)</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td> |
| <td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> |
| <td style="text-align: center;">Converged but too dark w/<wbr/>o flash after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">Any state (excluding LOCKED)</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START,<wbr/> sequence done</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">Any state (excluding LOCKED)</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> |
| <td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> |
| <td style="text-align: center;">Converged but too dark w/<wbr/>o flash after a precapture sequence is canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">Any state (excluding LOCKED)</td> |
| <td style="text-align: center;"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Converged after a precapture sequences canceled,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Camera device finished AE scan</td> |
| <td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> |
| <td style="text-align: center;">Converged but too dark w/<wbr/>o flash after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FLASH_<wbr/>REQUIRED</td> |
| <td style="text-align: center;">Camera device finished AE scan</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.afMode"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>af<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 auto-focus routine does not control the lens; |
| <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the |
| application.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p> |
| <p>In this mode,<wbr/> the lens does not move unless |
| the autofocus trigger action is called.<wbr/> When that trigger |
| is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p> |
| <p>Always supported if lens is not fixed focus.<wbr/></p> |
| <p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens |
| is fixed-focus.<wbr/></p> |
| <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/> |
| and sets the AF state to INACTIVE.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MACRO (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p> |
| <p>In this mode,<wbr/> the lens does not move unless the |
| autofocus trigger action is called.<wbr/> When that trigger is |
| activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This |
| mode is optimized for focusing on objects very close to |
| the camera.<wbr/></p> |
| <p>When that trigger is activated,<wbr/> AF will transition to |
| ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or |
| NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens |
| position to default,<wbr/> and sets the AF state to |
| INACTIVE.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens |
| position continually to attempt to provide a |
| constantly-in-focus image stream.<wbr/></p> |
| <p>The focusing behavior should be suitable for good quality |
| video recording; typically this means slower focus |
| movement and no overshoots.<wbr/> When the AF trigger is not |
| involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/> |
| and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED |
| states as appropriate.<wbr/> When the AF trigger is activated,<wbr/> |
| the algorithm should immediately transition into |
| AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the |
| lens position until a cancel AF trigger is received.<wbr/></p> |
| <p>Once cancel is received,<wbr/> the algorithm should transition |
| back to INACTIVE and resume passive scan.<wbr/> Note that this |
| behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an |
| ongoing PASSIVE_<wbr/>SCAN must immediately be |
| canceled.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens |
| position continually to attempt to provide a |
| constantly-in-focus image stream.<wbr/></p> |
| <p>The focusing behavior should be suitable for still image |
| capture; typically this means focusing as fast as |
| possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF |
| algorithm should start in INACTIVE state,<wbr/> and then |
| transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as |
| appropriate as it attempts to maintain focus.<wbr/> When the AF |
| trigger is activated,<wbr/> the algorithm should finish its |
| PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into |
| AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the |
| lens position until a cancel AF trigger is received.<wbr/></p> |
| <p>When the AF cancel trigger is activated,<wbr/> the algorithm |
| should transition back to INACTIVE and then act as if it |
| has just been started.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">EDOF (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p> |
| <p>The camera device will produce images with an extended |
| depth of field automatically; no special focusing |
| operations need to be done before taking a picture.<wbr/></p> |
| <p>AF triggers are ignored,<wbr/> and the AF state will always be |
| INACTIVE.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what |
| mode it is set to.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<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>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus |
| (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that |
| when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device |
| dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before |
| setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p> |
| <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/> |
| the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> |
| in 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>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a |
| request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end |
| up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see |
| <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is |
| locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move |
| after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that |
| the same focal plane remains in focus.<wbr/></p> |
| <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF |
| scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger |
| (see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the |
| same lock behavior as above.<wbr/></p> |
| <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the |
| focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/> |
| However,<wbr/> the lens must not move regardless of the camera movement for any focus distance |
| manual control.<wbr/></p> |
| <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on |
| camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to |
| remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/> |
| by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue |
| that will arise on camera modules with open-loop VCMs.<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.control.afRegions"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>af<wbr/>Regions |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 5 x area_count |
| </span> |
| <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-focus.<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.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/> |
| Otherwise will always be present.<wbr/></p> |
| <p>The maximum number of focus areas supported by the device is determined by the value |
| of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</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 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/> The capture result will either be a zero weight region as well,<wbr/> or |
| the region selected by the camera device as the focus area of interest.<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> |
| <p>When setting the AF metering regions,<wbr/> the application must consider the additional |
| crop resulted from the aspect ratio differences between the preview stream and |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full |
| active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> |
| the boundary of AF regions will be [0,<wbr/> y_<wbr/>crop] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio |
| mismatch.<wbr/></p> |
| <p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or |
| preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not |
| pre-zoom field of view.<wbr/> This means that the same afRegions values at different |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The afRegions |
| coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the |
| zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same |
| afRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of the |
| scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use |
| activeArraySize or preCorrectionActiveArraySize still depends on distortion correction |
| mode.<wbr/></p> |
| <p>For camera devices with the |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> |
| capability or devices where |
| <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> |
| lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> |
| <a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the |
| coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<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="dynamic_android.control.afTrigger"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>af<wbr/>Trigger |
| </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">IDLE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">START (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CANCEL (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Autofocus will return to its initial |
| state,<wbr/> and cancel any currently active trigger.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the camera device will trigger autofocus for this request.<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>This entry is normally set to IDLE,<wbr/> or is not |
| included at all in the request settings.<wbr/></p> |
| <p>When included and set to START,<wbr/> the camera device will trigger the |
| autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p> |
| <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/> |
| and return to its initial AF state.<wbr/></p> |
| <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a |
| single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying |
| START for multiple captures in a row means restarting the AF operation over |
| and over again.<wbr/></p> |
| <p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p> |
| <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> |
| simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between |
| the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a |
| focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous |
| trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and |
| changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<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 must support triggering the AF trigger while an AE precapture trigger is active |
| (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to |
| treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the |
| AE trigger.<wbr/> Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/> |
| to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<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.control.afState"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>af<wbr/>State |
| </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">INACTIVE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked |
| to scan.<wbr/></p> |
| <p>When a camera device is opened,<wbr/> it starts in this |
| state.<wbr/> This is a transient state,<wbr/> the camera device may |
| skip reporting this state in capture |
| result.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the |
| camera device in a continuous autofocus mode.<wbr/></p> |
| <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient |
| state,<wbr/> the camera device may skip reporting this state in |
| capture result.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may |
| restart scanning at any time.<wbr/></p> |
| <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient |
| state,<wbr/> the camera device may skip reporting this state in |
| capture result.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was |
| triggered by AF trigger.<wbr/></p> |
| <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient |
| state,<wbr/> the camera device may skip reporting this state in |
| capture result.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked |
| focus.<wbr/></p> |
| <p>This state is reached only after an explicit START AF trigger has been |
| sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p> |
| <p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or |
| a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked |
| focus.<wbr/></p> |
| <p>This state is reached only after an explicit START AF trigger has been |
| sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p> |
| <p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or |
| a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/> |
| and may restart scanning at any time.<wbr/></p> |
| <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera |
| device may skip reporting this state in capture result.<wbr/></p> |
| <p>LEGACY camera devices do not support this state.<wbr/> When a passive |
| scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current state of auto-focus (AF) algorithm.<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>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always |
| resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> |
| or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all |
| the algorithm states to INACTIVE.<wbr/></p> |
| <p>The camera device can do several state transitions between two results,<wbr/> if it is |
| allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be |
| seen in a result.<wbr/></p> |
| <p>The state in the result is the state for this image (in sync with this image): if |
| AF state becomes FOCUSED,<wbr/> then the image data associated with this result should |
| be sharp.<wbr/></p> |
| <p>Below are state transition tables for different AF modes.<wbr/></p> |
| <p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>OFF or AF_<wbr/>MODE_<wbr/>EDOF:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;"></td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Never changes</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>AUTO or AF_<wbr/>MODE_<wbr/>MACRO:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Start AF sweep,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">AF sweep done</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Focused,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">AF sweep done</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Not focused,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">AF_<wbr/>CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Cancel/<wbr/>reset AF</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Start new sweep,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Cancel/<wbr/>reset AF</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">ACTIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Start new sweep,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">Any state</td> |
| <td style="text-align: center;">Mode change</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;"></td> |
| </tr> |
| </tbody> |
| </table> |
| <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen |
| without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that |
| can be skipped in that manner is called a transient state.<wbr/></p> |
| <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the |
| state transitions listed in above table,<wbr/> it is also legal for the camera device to skip |
| one or more transient states between two results.<wbr/> See below table for examples:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td> |
| </tr> |
| </tbody> |
| </table> |
| <p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Camera device initiates new scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF state query,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Camera device completes current scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> |
| <td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Camera device fails current scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">AF_<wbr/>CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Reset lens position,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> |
| <td style="text-align: center;">Camera device initiates new scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td style="text-align: center;">Camera device initiates new scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Immediate transition,<wbr/> lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Immediate transition,<wbr/> lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">No effect</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Restart AF scan</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">No effect</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Restart AF scan</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>When <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Camera device initiates new scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF state query,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Camera device completes current scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> |
| <td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Camera device fails current scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td style="text-align: center;">End AF scan,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Eventual transition once the focus is good.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Eventual transition if cannot find focus.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">AF_<wbr/>CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Reset lens position,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> |
| <td style="text-align: center;">Camera device initiates new scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td style="text-align: center;">Camera device initiates new scan</td> |
| <td style="text-align: center;">PASSIVE_<wbr/>SCAN</td> |
| <td style="text-align: center;">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>FOCUSED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Immediate trans.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">Immediate trans.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">No effect</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Restart AF scan</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">No effect</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td style="text-align: center;">AF_<wbr/>CANCEL</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Restart AF scan</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO |
| (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the |
| camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger |
| will be evaluated in the context of the new mode in the request.<wbr/> |
| See below table for examples:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">any state</td> |
| <td style="text-align: center;">CAF-->AUTO mode switch</td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">any state</td> |
| <td style="text-align: center;">CAF-->AUTO mode switch with AF_<wbr/>TRIGGER</td> |
| <td style="text-align: center;">trigger-reachable states from INACTIVE</td> |
| <td style="text-align: center;">Mode switch with trigger,<wbr/> INACTIVE is skipped</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">any state</td> |
| <td style="text-align: center;">AUTO-->CAF mode switch</td> |
| <td style="text-align: center;">passively reachable states from INACTIVE</td> |
| <td style="text-align: center;">Mode switch without trigger,<wbr/> passive transient state is skipped</td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.afTriggerId"> |
| <td class="entry_name |
| entry_name_deprecated |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| |
| <span class="entry_type_deprecated">[deprecated] </span> |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The ID sent with the latest |
| CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</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>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger |
| received yet by HAL.<wbr/> Always updated even if AF algorithm |
| ignores the trigger</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.awbLock"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>awb<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-white balance lock is disabled; the AWB |
| algorithm is free to update its parameters if in AUTO |
| mode.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB |
| algorithm will not update its parameters while the lock |
| is active.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether auto-white balance (AWB) 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 AWB algorithm is locked to its latest parameters,<wbr/> |
| and will not change color balance settings until the lock is set to <code>false</code> (OFF).<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 AWB 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-AWB mode:</li> |
| <li>Lock AWB</li> |
| <li>Wait for the first result to be output that has the AWB locked</li> |
| <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li> |
| <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li> |
| </ol> |
| <p>Note that AWB lock is only meaningful when |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/> |
| AWB is already fixed to a specific setting.<wbr/></p> |
| <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<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.control.awbMode"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>awb<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 auto-white balance routine is disabled.<wbr/></p> |
| <p>The application-selected color transform matrix |
| (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains |
| (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera |
| device for manual white balance control.<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's auto-white balance routine is active.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses incandescent light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>While the exact white balance transforms are up to the |
| camera device,<wbr/> they will approximately match the CIE |
| standard illuminant A.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses fluorescent light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>While the exact white balance transforms are up to the |
| camera device,<wbr/> they will approximately match the CIE |
| standard illuminant F2.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses warm fluorescent light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>While the exact white balance transforms are up to the |
| camera device,<wbr/> they will approximately match the CIE |
| standard illuminant F4.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses daylight light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>While the exact white balance transforms are up to the |
| camera device,<wbr/> they will approximately match the CIE |
| standard illuminant D65.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses cloudy daylight light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TWILIGHT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses twilight light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SHADE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled; |
| the camera device uses shade light as the assumed scene |
| illumination for white balance.<wbr/></p> |
| <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/> |
| For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the |
| values used by the camera device for the transform and gains |
| will be available in the capture result for this request.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether auto-white balance (AWB) is currently setting the color |
| transform fields,<wbr/> and what its illumination target |
| is.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<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 the AUTO mode,<wbr/> the camera device's auto-white balance |
| routine is enabled,<wbr/> overriding the application's selected |
| <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and |
| <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> |
| is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommended to |
| also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before |
| setting AE mode to OFF.<wbr/></p> |
| <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance |
| routine is disabled.<wbr/> The application manually controls the white |
| balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> |
| and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p> |
| <p>When set to any other modes,<wbr/> the camera device's auto-white |
| balance routine is disabled.<wbr/> The camera device uses each |
| particular illumination target for white balance |
| adjustment.<wbr/> The application's values for |
| <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> |
| <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and |
| <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<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.control.awbRegions"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>awb<wbr/>Regions |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 5 x area_count |
| </span> |
| <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-white-balance illuminant |
| estimation.<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.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</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.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</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 range from 0 to 1000,<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 white balance 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> |
| <p>When setting the AWB metering regions,<wbr/> the application must consider the additional |
| crop resulted from the aspect ratio differences between the preview stream and |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/> For example,<wbr/> if the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is the full |
| active array size with 4:3 aspect ratio,<wbr/> and the preview stream is 16:9,<wbr/> |
| the boundary of AWB regions will be [0,<wbr/> y_<wbr/>crop] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height - 2 * y_<wbr/>crop] rather than [0,<wbr/> 0] and |
| [active_<wbr/>width,<wbr/> active_<wbr/>height],<wbr/> where y_<wbr/>crop is the additional crop due to aspect ratio |
| mismatch.<wbr/></p> |
| <p>Starting from API level 30,<wbr/> the coordinate system of activeArraySize or |
| preCorrectionActiveArraySize is used to represent post-zoomRatio field of view,<wbr/> not |
| pre-zoom field of view.<wbr/> This means that the same awbRegions values at different |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> represent different parts of the scene.<wbr/> The awbRegions |
| coordinates are relative to the activeArray/<wbr/>preCorrectionActiveArray representing the |
| zoomed field of view.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to 1.<wbr/>0 (default),<wbr/> the same |
| awbRegions at different <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> still represent the same parts of |
| the scene as they do before.<wbr/> See <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> for details.<wbr/> Whether to use |
| activeArraySize or preCorrectionActiveArraySize still depends on distortion correction |
| mode.<wbr/></p> |
| <p>For camera devices with the |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#REQUEST_AVAILABLE_CAPABILITIES_ULTRA_HIGH_RESOLUTION_SENSOR">Camera<wbr/>Metadata#REQUEST_<wbr/>AVAILABLE_<wbr/>CAPABILITIES_<wbr/>ULTRA_<wbr/>HIGH_<wbr/>RESOLUTION_<wbr/>SENSOR</a> |
| capability or devices where |
| <a href="https://developer.android.com/reference/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a> |
| lists <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a>,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> /<wbr/> |
| <a href="#static_android.sensor.info.preCorrectionActiveArraySizeMaximumResolution">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size<wbr/>Maximum<wbr/>Resolution</a> must be used as the |
| coordinate system for requests where <a href="#controls_android.sensor.pixelMode">android.<wbr/>sensor.<wbr/>pixel<wbr/>Mode</a> is set to |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraMetadata.html#SENSOR_PIXEL_MODE_MAXIMUM_RESOLUTION">Camera<wbr/>Metadata#SENSOR_<wbr/>PIXEL_<wbr/>MODE_<wbr/>MAXIMUM_<wbr/>RESOLUTION</a>.<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="dynamic_android.control.captureIntent"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>capture<wbr/>Intent |
| </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">CUSTOM (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other |
| categories.<wbr/> The camera device will default to preview-like |
| behavior.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PREVIEW (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p> |
| <p>The precapture trigger may be used to start off a metering |
| w/<wbr/>flash sequence.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a still capture-type |
| use case.<wbr/></p> |
| <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a video recording |
| use case.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still |
| image while recording video) use case.<wbr/></p> |
| <p>The camera device should take the highest-quality image |
| possible (given the other settings) without disrupting the |
| frame rate of video recording.<wbr/> </p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the |
| application will stream full-resolution images and |
| reprocess one or several later for a final |
| capture.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MANUAL (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>This request is for manual capture use case where |
| the applications want to directly control the capture parameters.<wbr/></p> |
| <p>For example,<wbr/> the application may wish to manually control |
| <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/> etc.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span> |
| <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where |
| the application will use camera and inertial sensor data to |
| locate and track objects in the world.<wbr/></p> |
| <p>The camera device auto-exposure routine will limit the exposure time |
| of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Information to the camera device 3A (auto-exposure,<wbr/> |
| auto-focus,<wbr/> auto-white balance) routines about the purpose |
| of this capture,<wbr/> to help the camera device to decide optimal 3A |
| strategy.<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>This control (except for MANUAL) is only effective if |
| <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p> |
| <p>All intents are supported by all devices,<wbr/> except that:</p> |
| <ul> |
| <li>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/></li> |
| <li>MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| MANUAL_<wbr/>SENSOR.<wbr/></li> |
| <li>MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains |
| MOTION_<wbr/>TRACKING.<wbr/></li> |
| </ul> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.awbState"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>awb<wbr/>State |
| </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">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">INACTIVE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p> |
| <p>When a camera device is opened,<wbr/> it starts in this |
| state.<wbr/> This is a transient state,<wbr/> the camera device may |
| skip reporting this state in capture |
| result.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SEARCHING (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control |
| values for the current scene.<wbr/></p> |
| <p>This is a transient state,<wbr/> the camera device |
| may skip reporting this state in capture result.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONVERGED (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the |
| current scene.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">LOCKED (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current state of auto-white balance (AWB) algorithm.<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>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always |
| resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/> |
| or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all |
| the algorithm states to INACTIVE.<wbr/></p> |
| <p>The camera device can do several state transitions between two results,<wbr/> if it is |
| allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in |
| a result.<wbr/></p> |
| <p>The state in the result is the state for this image (in sync with this image): if |
| AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should |
| be good to use.<wbr/></p> |
| <p>Below are state transition tables for different AWB modes.<wbr/></p> |
| <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;"></td> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Camera device auto white balance algorithm is disabled</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Camera device initiates AWB scan</td> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Values changing</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Values locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Camera device finishes AWB scan</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Good values,<wbr/> not changing</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Values locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Camera device initiates AWB scan</td> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Values changing</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;">Values locked</td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> |
| <td style="text-align: center;">SEARCHING</td> |
| <td style="text-align: center;">Values not good after unlock</td> |
| </tr> |
| </tbody> |
| </table> |
| <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen |
| without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that |
| can be skipped in that manner is called a transient state.<wbr/></p> |
| <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions |
| listed in above table,<wbr/> it is also legal for the camera device to skip one or more |
| transient states between two results.<wbr/> See below table for examples:</p> |
| <table> |
| <thead> |
| <tr> |
| <th style="text-align: center;">State</th> |
| <th style="text-align: center;">Transition Cause</th> |
| <th style="text-align: center;">New State</th> |
| <th style="text-align: center;">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td style="text-align: center;">INACTIVE</td> |
| <td style="text-align: center;">Camera device finished AWB scan</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| </tr> |
| <tr> |
| <td style="text-align: center;">LOCKED</td> |
| <td style="text-align: center;"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> |
| <td style="text-align: center;">CONVERGED</td> |
| <td style="text-align: center;">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.effectMode"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>effect<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 color effect will be applied.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MONO (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into |
| a single color.<wbr/></p> |
| <p>This will typically be grayscale.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NEGATIVE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors |
| are inverted.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SOLARIZE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the |
| image is wholly or partially reversed in |
| tone.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SEPIA (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm |
| gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">POSTERIZE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses |
| discrete regions of tone rather than a continuous |
| gradient of tones.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed |
| as regions of white,<wbr/> with black or grey details.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed |
| as regions of black,<wbr/> with white or grey details.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AQUA (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>A special color effect to apply.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</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>When this mode is set,<wbr/> a color effect will be applied |
| to images produced by the camera device.<wbr/> The interpretation |
| and implementation of these color effects is left to the |
| implementor of the camera device,<wbr/> and should not be |
| depended on to be consistent (or present) across all |
| devices.<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.control.mode"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<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>Full application control of pipeline.<wbr/></p> |
| <p>All control by the device's metering and focusing (3A) |
| routines is disabled,<wbr/> and no other settings in |
| android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that |
| <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera |
| device to select post-processing values for processing |
| blocks that do not allow for manual control,<wbr/> or are not |
| exposed by the camera API.<wbr/></p> |
| <p>However,<wbr/> the camera device's 3A routines may continue to |
| collect statistics and update their internal state so that |
| when control is switched to AUTO mode,<wbr/> good control values |
| can be immediately applied.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p> |
| <p>Manual control of capture parameters is disabled.<wbr/> All |
| controls in android.<wbr/>control.<wbr/>* besides sceneMode take |
| effect.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p> |
| <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and |
| control.<wbr/>afMode controls; the camera device will ignore |
| those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for |
| FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/> |
| This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/> |
| <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> |
| contain some modes other than DISABLED).<wbr/></p> |
| <p>For extended scene modes such as BOKEH,<wbr/> please use USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE instead.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be |
| used by camera device background auto-exposure,<wbr/> auto-white balance and |
| auto-focus algorithms (3A) to update their statistics.<wbr/></p> |
| <p>Specifically,<wbr/> the 3A routines are locked to the last |
| values set from a request with AUTO,<wbr/> OFF,<wbr/> or |
| USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates |
| collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be |
| discarded by the camera device.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">USE_EXTENDED_SCENE_MODE (v3.5)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Use a specific extended scene mode.<wbr/></p> |
| <p>When extended scene mode is on,<wbr/> the camera device may override certain control |
| parameters,<wbr/> such as targetFpsRange,<wbr/> AE,<wbr/> AWB,<wbr/> and AF modes,<wbr/> to achieve best power and |
| quality tradeoffs.<wbr/> Only the mandatory stream combinations of LIMITED hardware level |
| are guaranteed.<wbr/></p> |
| <p>This setting can only be used if extended scene mode is supported (i.<wbr/>e.<wbr/> |
| android.<wbr/>control.<wbr/>available<wbr/>Extended<wbr/>Scene<wbr/>Modes |
| contains some modes other than DISABLED).<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control |
| routines.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.availableModes">android.<wbr/>control.<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 is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control |
| by the camera device is disabled.<wbr/> The application must set the fields for |
| capture parameters itself.<wbr/></p> |
| <p>When set to AUTO,<wbr/> the individual algorithm controls in |
| android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> |
| <p>When set to USE_<wbr/>SCENE_<wbr/>MODE or USE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in |
| android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device |
| implements one of the scene mode or extended scene mode settings (such as ACTION,<wbr/> |
| SUNSET,<wbr/> PARTY,<wbr/> or BOKEH) as it wishes.<wbr/> The camera device scene mode |
| 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p> |
| <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference |
| is that this frame will not be used by camera device background 3A statistics |
| update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario |
| where the application doesn't want a 3A manual control capture to affect |
| the subsequent auto 3A capture results.<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.control.sceneMode"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>scene<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">DISABLED (v3.2)</span> |
| <span class="entry_type_enum_value">0</span> |
| <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face |
| detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and |
| auto-exposure routines.<wbr/></p> |
| <p>If face detection statistics are disabled |
| (i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/> |
| this should still operate correctly (but will not return |
| face detection statistics to the framework).<wbr/></p> |
| <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> |
| remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ACTION (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p> |
| <p>Similar to SPORTS.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PORTRAIT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NIGHT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light |
| settings.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">THEATRE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must |
| remain off.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BEACH (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SNOW (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SUNSET (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of |
| device motion (for example: due to hand shake).<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FIREWORKS (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SPORTS (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p> |
| <p>Similar to ACTION.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PARTY (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving |
| people.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source |
| is a candle.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BARCODE (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode |
| for use by camera applications that wish to read the |
| barcode value.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span> |
| <span class="entry_type_enum_deprecated">[deprecated]</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_hidden">[java_public]</span> |
| <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a> |
| and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a> |
| for high speed video recording.<wbr/></p> |
| <p>Optimized for high speed video recording (frame rate >=60fps) use case.<wbr/></p> |
| <p>The supported high speed video sizes and fps ranges are specified in |
| <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired |
| output frame rates,<wbr/> the application is only allowed to select video size |
| and fps range combinations listed in this static metadata.<wbr/> The fps range |
| can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p> |
| <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to |
| ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode |
| controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture |
| and post-processing parameters is possible.<wbr/> All other controls operate the |
| same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other |
| android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p> |
| <ul> |
| <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li> |
| <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li> |
| <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li> |
| <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li> |
| <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li> |
| <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li> |
| <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li> |
| <li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> |
| </ul> |
| <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p> |
| <ul> |
| <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li> |
| <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li> |
| <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> |
| <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li> |
| </ul> |
| <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may |
| be lower than what camera can output,<wbr/> depending on the destination Surfaces for |
| the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/> |
| the application need check if the video encoder is capable of supporting the |
| high frame rate for a given video size,<wbr/> or it will end up with lower recording |
| frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame |
| rate will be bounded by the screen refresh rate.<wbr/></p> |
| <p>The camera device will only support up to 2 output high speed streams |
| (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>) |
| in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p> |
| <ul> |
| <li>The application created no more than maxNumHighSpeedStreams processed non-stalling |
| format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as |
| min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li> |
| <li>The stream sizes are selected from the sizes reported by |
| <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li> |
| <li>No processed non-stalling or raw streams are configured.<wbr/></li> |
| </ul> |
| <p>When above conditions are NOT satisfied,<wbr/> the controls of this mode and |
| <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/> |
| the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/> |
| and the returned capture result metadata will give the fps range chosen |
| by the camera device.<wbr/></p> |
| <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor |
| reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that |
| the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HDR (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p> |
| <p>In this scene mode,<wbr/> the camera device captures images |
| that keep a larger range of scene illumination levels |
| visible in the final image.<wbr/> For example,<wbr/> when taking a |
| picture of a object in front of a bright window,<wbr/> both |
| the object and the scene through the window may be |
| visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/> |
| one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/> |
| HDR mode generally takes much longer to capture a single |
| image,<wbr/> has no user control,<wbr/> and may have other artifacts |
| depending on the HDR method used.<wbr/></p> |
| <p>Therefore,<wbr/> HDR captures operate at a much slower rate |
| than regular captures.<wbr/></p> |
| <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request |
| is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of |
| STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image |
| using a high dynamic range capture technique.<wbr/> On LEGACY |
| devices,<wbr/> captures that target a JPEG-format output will |
| be captured with HDR,<wbr/> and the capture intent is not |
| relevant.<wbr/></p> |
| <p>The HDR capture may involve the device capturing a burst |
| of images internally and combining them into one,<wbr/> or it |
| may involve the device using specialized high dynamic |
| range capture hardware.<wbr/> In all cases,<wbr/> a single image is |
| produced in response to a capture request submitted |
| while in HDR mode.<wbr/></p> |
| <p>Since substantial post-processing is generally needed to |
| produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG |
| outputs are supported for LIMITED/<wbr/>FULL device HDR |
| captures,<wbr/> and only JPEG outputs are supported for LEGACY |
| HDR captures.<wbr/> Using a RAW output for HDR capture is not |
| supported.<wbr/></p> |
| <p>Some devices may also support always-on HDR,<wbr/> which |
| applies HDR processing at full frame rate.<wbr/> For these |
| devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also |
| produce an HDR output with no frame rate impact compared |
| to normal operation,<wbr/> though the quality may be lower |
| than for STILL_<wbr/>CAPTURE intents.<wbr/></p> |
| <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types |
| or capture intents,<wbr/> the images captured will be as if |
| the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera |
| device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>) |
| under low light conditions.<wbr/></p> |
| <p>The camera device may be tuned to expose the images in a reduced |
| sensitivity range to produce the best quality images.<wbr/> For example,<wbr/> |
| if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/> |
| the camera device auto-exposure routine tuning process may limit the actual |
| exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't |
| excessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under |
| low light may be under-exposed when the sensor max exposure time (bounded by the |
| <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the |
| ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the |
| camera device auto-exposure routine to increase the sensitivity up to the max |
| sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too |
| dark and the max exposure time is reached.<wbr/> The captured images may be noisier |
| compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is |
| recommended that the application only use this scene mode when it is capable of |
| reducing the noise level of the captured images.<wbr/></p> |
| <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> |
| remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_value">100</span> |
| <span class="entry_type_enum_notes"><p>Scene mode values within the range of |
| <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific |
| customized scene modes.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_value">127</span> |
| <span class="entry_type_enum_notes"><p>Scene mode values within the range of |
| <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific |
| customized scene modes.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Control for which scene mode is currently active.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<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>Scene modes are custom camera modes optimized for a certain set of conditions and |
| capture settings.<wbr/></p> |
| <p>This is the mode that that is active when |
| <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will |
| disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> |
| while in use.<wbr/></p> |
| <p>The interpretation and implementation of these scene modes is left |
| to the implementor of the camera device.<wbr/> Their behavior will not be |
| consistent across all devices,<wbr/> and any given device may only implement |
| a subset of these modes.<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 implementations that include scene modes are expected to provide |
| the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> |
| <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in |
| <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p> |
| <p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> the |
| HAL must list supported video size and fps range in |
| <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/> 1280x720,<wbr/> |
| if the HAL has two different sensor configurations for normal streaming mode and high |
| speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the |
| HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy |
| HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement |
| <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO |
| capability defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<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.control.videoStabilizationMode"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>video<wbr/>Stabilization<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>Video stabilization is disabled.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PREVIEW_STABILIZATION (v3.8)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Preview stabilization,<wbr/> where the preview in addition to all other non-RAW streams are |
| stabilized with the same quality of stabilization,<wbr/> is enabled.<wbr/> This mode aims to give |
| clients a 'what you see is what you get' effect.<wbr/> In this mode,<wbr/> the FoV reduction will |
| be a maximum of 20 % both horizontally and vertically |
| (10% from left,<wbr/> right,<wbr/> top,<wbr/> bottom) for the given zoom ratio /<wbr/> crop region.<wbr/> |
| The resultant FoV will also be the same across all processed streams |
| (that have the same aspect ratio).<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether video stabilization is |
| active.<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>Video stabilization automatically warps images from |
| the camera in order to stabilize motion between consecutive frames.<wbr/></p> |
| <p>If enabled,<wbr/> video stabilization can modify the |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p> |
| <p>Switching between different video stabilization modes may take several |
| frames to initialize,<wbr/> the camera device will report the current mode |
| in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> |
| the video stabilization modes in the first several capture results may |
| still be "OFF",<wbr/> and it will become "ON" when the initialization is |
| done.<wbr/></p> |
| <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for |
| stabilization by a device that reports stabilization support.<wbr/> It is guaranteed |
| that an output targeting a MediaRecorder or MediaCodec will be stabilized if |
| the recording resolution is less than or equal to 1920 x 1080 (width less than |
| or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording |
| frame rate is less than or equal to 30fps.<wbr/> At other sizes,<wbr/> the CaptureResult |
| <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return |
| OFF if the recording output is not stabilized,<wbr/> or if there are no output |
| Surface types that can be stabilized.<wbr/></p> |
| <p>The application is strongly recommended to call |
| <a href="https://developer.android.com/reference/android/hardware/camera2/params/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a> |
| with the desired video stabilization mode before creating the capture session.<wbr/> |
| Video stabilization mode is a session parameter on many devices.<wbr/> Specifying |
| it at session creation time helps avoid reconfiguration delay caused by difference |
| between the default value and the first CaptureRequest.<wbr/></p> |
| <p>If a camera device supports both this mode and OIS |
| (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may |
| produce undesirable interaction,<wbr/> so it is recommended not to enable |
| both at the same time.<wbr/></p> |
| <p>If video stabilization is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> |
| <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> is overridden.<wbr/> The camera sub-system may choose |
| to turn on hardware based image stabilization in addition to software based stabilization |
| if it deems that appropriate.<wbr/> |
| This key may be a part of the available session keys,<wbr/> which camera clients may |
| query via |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/> |
| If this is the case,<wbr/> changing this key over the life-time of a capture session may |
| cause delays /<wbr/> glitches.<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>When this key is set to "PREVIEW_<wbr/>STABILIZATION",<wbr/> |
| for non-stalling buffers returned without errors,<wbr/> the time interval between notify readout |
| timestamp and when buffers are returned to the camera framework,<wbr/> must be no more than 1 |
| extra frame interval,<wbr/> relative to the case where this key is set to "OFF".<wbr/></p> |
| <p>This is in order for look-ahead time period to be short enough |
| for preview to match video recording for real-time usage.<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.control.postRawSensitivityBoost"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The amount of additional sensitivity boost applied to output images |
| after RAW sensor data is captured.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</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>Some camera devices support additional digital sensitivity boosting in the |
| camera processing pipeline after sensor RAW image is captured.<wbr/> |
| Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not |
| have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p> |
| <p>This key will be <code>null</code> for devices that do not support any RAW format |
| outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always |
| present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will |
| list <code>100</code> in this key.<wbr/></p> |
| <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the |
| boost to the nearest supported value.<wbr/> |
| The final boost value used will be available in the output capture result.<wbr/></p> |
| <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images |
| of such device will have the total sensitivity of |
| <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code> |
| The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p> |
| <p>This control is only effective if <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> is set to |
| OFF; otherwise the auto-exposure algorithm will override this value.<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.control.enableZsl"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>enable<wbr/>Zsl |
| </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> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">FALSE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured |
| after previous requests.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TRUE (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be |
| captured before previous requests.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Allow camera device to enable zero-shutter-lag mode for requests with |
| <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<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>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with |
| STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to |
| produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the |
| <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/> |
| Therefore,<wbr/> the contents of the output images and the result metadata may be out of order |
| compared to previous regular requests.<wbr/> enableZsl does not affect requests with other |
| capture intents.<wbr/></p> |
| <p>For example,<wbr/> when requests are submitted in the following order: |
| Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW |
| Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p> |
| <p>The output images for request B may have contents captured before the output images for |
| request A,<wbr/> and the result metadata for request B may be older than the result metadata for |
| request A.<wbr/></p> |
| <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in |
| the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p> |
| <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in |
| TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always |
| <code>false</code> if present.<wbr/></p> |
| <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all |
| capture templates is always <code>false</code> if present.<wbr/></p> |
| <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<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>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE |
| capture intent.<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.control.afSceneChange"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span> |
| <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DETECTED (v3.3)</span> |
| <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether a significant scene change is detected within the currently-set AF |
| region(s).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>3</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 the camera focus routine detects a change in the scene it is looking at,<wbr/> |
| such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a |
| significant illumination change,<wbr/> this value will be set to DETECTED for a single capture |
| result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar |
| to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p> |
| <p>This key will be available if the camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<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.control.extendedSceneMode"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>extended<wbr/>Scene<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> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">DISABLED (v3.5)</span> |
| <span class="entry_type_enum_value">0</span> |
| <span class="entry_type_enum_notes"><p>Extended scene mode is disabled.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BOKEH_STILL_CAPTURE (v3.5)</span> |
| <span class="entry_type_enum_notes"><p>High quality bokeh mode is enabled for all non-raw streams (including YUV,<wbr/> |
| JPEG,<wbr/> and IMPLEMENTATION_<wbr/>DEFINED) when capture intent is STILL_<wbr/>CAPTURE.<wbr/> Due to the |
| extra image processing,<wbr/> this mode may introduce additional stall to non-raw streams.<wbr/> |
| This mode should be used in high quality still capture use case.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BOKEH_CONTINUOUS (v3.5)</span> |
| <span class="entry_type_enum_notes"><p>Bokeh effect must not slow down capture rate relative to sensor raw output,<wbr/> |
| and the effect is applied to all processed streams no larger than the maximum |
| streaming dimension.<wbr/> This mode should be used if performance and power are a |
| priority,<wbr/> such as video recording.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VENDOR_START (v3.5)</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_value">0x40</span> |
| <span class="entry_type_enum_notes"><p>Vendor defined extended scene modes.<wbr/> These depend on vendor implementation.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether extended scene mode is enabled for a particular capture request.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>5</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>With bokeh mode,<wbr/> the camera device may blur out the parts of scene that are not in |
| focus,<wbr/> creating a bokeh (or shallow depth of field) effect for people or objects.<wbr/></p> |
| <p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with STILL_<wbr/>CAPTURE capture intent,<wbr/> due to the extra |
| processing needed for high quality bokeh effect,<wbr/> the stall may be longer than when |
| capture intent is not STILL_<wbr/>CAPTURE.<wbr/></p> |
| <p>When set to BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode with PREVIEW capture intent,<wbr/></p> |
| <ul> |
| <li>If the camera device has BURST_<wbr/>CAPTURE capability,<wbr/> the frame rate requirement of |
| BURST_<wbr/>CAPTURE must still be met.<wbr/></li> |
| <li>All streams not larger than the maximum streaming dimension for BOKEH_<wbr/>STILL_<wbr/>CAPTURE mode |
| (queried via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#CONTROL_AVAILABLE_EXTENDED_SCENE_MODE_CAPABILITIES">Camera<wbr/>Characteristics#CONTROL_<wbr/>AVAILABLE_<wbr/>EXTENDED_<wbr/>SCENE_<wbr/>MODE_<wbr/>CAPABILITIES</a>) |
| will have preview bokeh effect applied.<wbr/></li> |
| </ul> |
| <p>When set to BOKEH_<wbr/>CONTINUOUS mode,<wbr/> configured streams dimension should not exceed this mode's |
| maximum streaming dimension in order to have bokeh effect applied.<wbr/> Bokeh effect may not |
| be available for streams larger than the maximum streaming dimension.<wbr/></p> |
| <p>Switching between different extended scene modes may involve reconfiguration of the camera |
| pipeline,<wbr/> resulting in long latency.<wbr/> The application should check this key against the |
| available session keys queried via |
| <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p> |
| <p>For a logical multi-camera,<wbr/> bokeh may be implemented by stereo vision from sub-cameras |
| with different field of view.<wbr/> As a result,<wbr/> when bokeh mode is enabled,<wbr/> the camera device |
| may override <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the field of |
| view may be smaller than when bokeh mode is off.<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.control.zoomRatio"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>zoom<wbr/>Ratio |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| <span class="entry_type_hwlevel">[limited] </span> |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The desired zoom ratio</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.zoomRatioRange">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio<wbr/>Range</a></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>5</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>Instead of using <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> for zoom,<wbr/> the application can now choose to |
| use this tag to specify the desired zoom level.<wbr/></p> |
| <p>By using this control,<wbr/> the application gains a simpler way to control zoom,<wbr/> which can |
| be a combination of optical and digital zoom.<wbr/> For example,<wbr/> a multi-camera system may |
| contain more than one lens with different focal lengths,<wbr/> and the user can use optical |
| zoom by switching between lenses.<wbr/> Using zoomRatio has benefits in the scenarios below:</p> |
| <ul> |
| <li>Zooming in from a wide-angle lens to a telephoto lens: A floating-point ratio provides |
| better precision compared to an integer value of <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></li> |
| <li>Zooming out from a wide lens to an ultrawide lens: zoomRatio supports zoom-out whereas |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> doesn't.<wbr/></li> |
| </ul> |
| <p>To illustrate,<wbr/> here are several scenarios of different zoom ratios,<wbr/> crop regions,<wbr/> |
| and output streams,<wbr/> for a hypothetical camera device with an active array of size |
| <code>(2000,<wbr/>1500)</code>.<wbr/></p> |
| <ul> |
| <li>Camera Configuration:<ul> |
| <li>Active array size: <code>2000x1500</code> (3 MP,<wbr/> 4:3 aspect ratio)</li> |
| <li>Output stream #1: <code>640x480</code> (VGA,<wbr/> 4:3 aspect ratio)</li> |
| <li>Output stream #2: <code>1280x720</code> (720p,<wbr/> 16:9 aspect ratio)</li> |
| </ul> |
| </li> |
| <li>Case #1: 4:3 crop region with 2.<wbr/>0x zoom ratio<ul> |
| <li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> |
| <li>Crop region: <code>Rect(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500) //<wbr/> (left,<wbr/> top,<wbr/> right,<wbr/> bottom)</code> (post zoom)</li> |
| </ul> |
| </li> |
| <li><img alt="4:3 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-43.png"/><ul> |
| <li><code>640x480</code> stream source area: <code>(0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</code> (equal to crop region)</li> |
| <li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (letterboxed)</li> |
| </ul> |
| </li> |
| <li>Case #2: 16:9 crop region with 2.<wbr/>0x zoom.<wbr/><ul> |
| <li>Zoomed field of view: 1/<wbr/>4 of original field of view</li> |
| <li>Crop region: <code>Rect(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code></li> |
| <li><img alt="16:9 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-2-crop-169.png"/></li> |
| <li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (pillarboxed)</li> |
| <li><code>1280x720</code> stream source area: <code>(0,<wbr/> 187,<wbr/> 2000,<wbr/> 1312)</code> (equal to crop region)</li> |
| </ul> |
| </li> |
| <li>Case #3: 1:1 crop region with 0.<wbr/>5x zoom out to ultrawide lens.<wbr/><ul> |
| <li>Zoomed field of view: 4x of original field of view (switched from wide lens to ultrawide lens)</li> |
| <li>Crop region: <code>Rect(250,<wbr/> 0,<wbr/> 1750,<wbr/> 1500)</code></li> |
| <li><img alt="1:1 aspect ratio crop diagram" src="images/camera2/metadata/android.control.zoomRatio/zoom-ratio-0.5-crop-11.png"/></li> |
| <li><code>640x480</code> stream source area: <code>(250,<wbr/> 187,<wbr/> 1750,<wbr/> 1312)</code> (letterboxed)</li> |
| <li><code>1280x720</code> stream source area: <code>(250,<wbr/> 328,<wbr/> 1750,<wbr/> 1172)</code> (letterboxed)</li> |
| </ul> |
| </li> |
| </ul> |
| <p>As seen from the graphs above,<wbr/> the coordinate system of cropRegion now changes to the |
| effective after-zoom field-of-view,<wbr/> and is represented by the rectangle of (0,<wbr/> 0,<wbr/> |
| activeArrayWith,<wbr/> activeArrayHeight).<wbr/> The same applies to AE/<wbr/>AWB/<wbr/>AF regions,<wbr/> and faces.<wbr/> |
| This coordinate system change isn't applicable to RAW capture and its related |
| metadata such as intrinsicCalibration and lensShadingMap.<wbr/></p> |
| <p>Using the same hypothetical example above,<wbr/> and assuming output stream #1 (640x480) is |
| the viewfinder stream,<wbr/> the application can achieve 2.<wbr/>0x zoom in one of two ways:</p> |
| <ul> |
| <li>zoomRatio = 2.<wbr/>0,<wbr/> scaler.<wbr/>cropRegion = (0,<wbr/> 0,<wbr/> 2000,<wbr/> 1500)</li> |
| <li>zoomRatio = 1.<wbr/>0 (default),<wbr/> scaler.<wbr/>cropRegion = (500,<wbr/> 375,<wbr/> 1500,<wbr/> 1125)</li> |
| </ul> |
| <p>If the application intends to set aeRegions to be top-left quarter of the viewfinder |
| field-of-view,<wbr/> the <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a> should be set to (0,<wbr/> 0,<wbr/> 1000,<wbr/> 750) with |
| zoomRatio set to 2.<wbr/>0.<wbr/> Alternatively,<wbr/> the application can set aeRegions to the equivalent |
| region of (500,<wbr/> 375,<wbr/> 1000,<wbr/> 750) for zoomRatio of 1.<wbr/>0.<wbr/> If the application doesn't |
| explicitly set <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> its value defaults to 1.<wbr/>0.<wbr/></p> |
| <p>One limitation of controlling zoom using zoomRatio is that the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> |
| must only be used for letterboxing or pillarboxing of the sensor active array,<wbr/> and no |
| FREEFORM cropping can be used with <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> other than 1.<wbr/>0.<wbr/> If |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is not 1.<wbr/>0,<wbr/> and <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> is set to be |
| windowboxing,<wbr/> the camera framework will override the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to be |
| the active array.<wbr/></p> |
| <p>In the capture request,<wbr/> if the application sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to a |
| value != 1.<wbr/>0,<wbr/> the <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the capture result reflects the |
| effective zoom ratio achieved by the camera device,<wbr/> and the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> |
| adjusts for additional crops that are not zoom related.<wbr/> Otherwise,<wbr/> if the application |
| sets <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> to 1.<wbr/>0,<wbr/> or does not set it at all,<wbr/> the |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> tag in the result metadata will also be 1.<wbr/>0.<wbr/></p> |
| <p>When the application requests a physical stream for a logical multi-camera,<wbr/> the |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in the physical camera result metadata will be 1.<wbr/>0,<wbr/> and |
| the <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> tag reflects the amount of zoom and crop done by the |
| physical camera device.<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 1.<wbr/>0 in order to have |
| consistent field of views between different modes.<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.control.settingsOverride"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>settings<wbr/>Override |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">int32</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>No keys are applied sooner than the other keys when applying CaptureRequest |
| settings to the camera device.<wbr/> This is the default value.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ZOOM (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>Zoom related keys are applied sooner than the other keys in the CaptureRequest.<wbr/> The |
| zoom related keys are:</p> |
| <ul> |
| <li><a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a></li> |
| <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li> |
| <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li> |
| <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li> |
| </ul> |
| <p>Even though <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>,<wbr/> <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>,<wbr/> |
| and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a> are not directly zoom related,<wbr/> applications |
| typically scale these regions together with <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to have a |
| consistent mapping within the current field of view.<wbr/> In this aspect,<wbr/> they are |
| related to <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VENDOR_START (v3.9)</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_value">0x4000</span> |
| <span class="entry_type_enum_notes"><p>Vendor defined settingsOverride.<wbr/> These depend on vendor implementation.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The desired CaptureRequest settings override with which certain keys are |
| applied earlier so that they can take effect sooner.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.availableSettingsOverrides">android.<wbr/>control.<wbr/>available<wbr/>Settings<wbr/>Overrides</a></p> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>9</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>There are some CaptureRequest keys which can be applied earlier than others |
| when controls within a CaptureRequest aren't required to take effect at the same time.<wbr/> |
| One such example is zoom.<wbr/> Zoom can be applied at a later stage of the camera pipeline.<wbr/> |
| As soon as the camera device receives the CaptureRequest,<wbr/> it can apply the requested |
| zoom value onto an earlier request that's already in the pipeline,<wbr/> thus improves zoom |
| latency.<wbr/></p> |
| <p>This key's value in the capture result reflects whether the controls for this capture |
| are overridden "by" a newer request.<wbr/> This means that if a capture request turns on |
| settings override,<wbr/> the capture result of an earlier request will contain the key value |
| of ZOOM.<wbr/> On the other hand,<wbr/> if a capture request has settings override turned on,<wbr/> |
| but all newer requests have it turned off,<wbr/> the key's value in the capture result will |
| be OFF because this capture isn't overridden by a newer capture.<wbr/> In the two examples |
| below,<wbr/> the capture results columns illustrate the settingsOverride values in different |
| scenarios.<wbr/></p> |
| <p>Assuming the zoom settings override can speed up by 1 frame,<wbr/> below example illustrates |
| the speed-up at the start of capture session:</p> |
| <pre><code>Camera session created |
| Request 1 (zoom=1.<wbr/>0x,<wbr/> override=ZOOM) -> |
| Request 2 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) -> |
| Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -> Result 1 (zoom=1.<wbr/>2x,<wbr/> override=ZOOM) |
| Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -> Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) |
| Request 5 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) -> Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) |
| -> Result 4 (zoom=1.<wbr/>8x,<wbr/> override=ZOOM) |
| -> Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) |
| </code></pre> |
| <p>The application can turn on settings override and use zoom as normal.<wbr/> The example |
| shows that the later zoom values (1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> 1.<wbr/>6x,<wbr/> and 1.<wbr/>8x) overwrite the zoom |
| values (1.<wbr/>0x,<wbr/> 1.<wbr/>2x,<wbr/> 1.<wbr/>4x,<wbr/> and 1.<wbr/>8x) of earlier requests (#1,<wbr/> #2,<wbr/> #3,<wbr/> and #4).<wbr/></p> |
| <p>The application must make sure the settings override doesn't interfere with user |
| journeys requiring simultaneous application of all controls in CaptureRequest on the |
| requested output targets.<wbr/> For example,<wbr/> if the application takes a still capture using |
| CameraCaptureSession#capture,<wbr/> and the repeating request immediately sets a different |
| zoom value using override,<wbr/> the inflight still capture could have its zoom value |
| overwritten unexpectedly.<wbr/></p> |
| <p>So the application is strongly recommended to turn off settingsOverride when taking |
| still/<wbr/>burst captures,<wbr/> and turn it back on when there is only repeating viewfinder |
| request and no inflight still/<wbr/>burst captures.<wbr/></p> |
| <p>Below is the example demonstrating the transitions in and out of the |
| settings override:</p> |
| <pre><code>Request 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF) |
| Request 2 (zoom=1.<wbr/>2x,<wbr/> override=OFF) |
| Request 3 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) -> Result 1 (zoom=1.<wbr/>0x,<wbr/> override=OFF) |
| Request 4 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) -> Result 2 (zoom=1.<wbr/>4x,<wbr/> override=ZOOM) |
| Request 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) -> Result 3 (zoom=1.<wbr/>6x,<wbr/> override=ZOOM) |
| -> Result 4 (zoom=1.<wbr/>6x,<wbr/> override=OFF) |
| -> Result 5 (zoom=1.<wbr/>8x,<wbr/> override=OFF) |
| </code></pre> |
| <p>This example shows that:</p> |
| <ul> |
| <li>The application "ramps in" settings override by setting the control to ZOOM.<wbr/> |
| In the example,<wbr/> request #3 enables zoom settings override.<wbr/> Because the camera device |
| can speed up applying zoom by 1 frame,<wbr/> the outputs of request #2 has 1.<wbr/>4x zoom,<wbr/> the |
| value specified in request #3.<wbr/></li> |
| <li>The application "ramps out" of settings override by setting the control to OFF.<wbr/> In |
| the example,<wbr/> request #5 changes the override to OFF.<wbr/> Because request #4's zoom |
| takes effect in result #3,<wbr/> result #4's zoom remains the same until new value takes |
| effect in result #5.<wbr/></li> |
| </ul> |
| </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 must set this value to OFF in all of the Capture templates.<wbr/></p> |
| <p>Typically the HAL unblocks processCaptureRequest at the same rate as the sensor capture,<wbr/> |
| and the HAL queues the capture settings in its pipeline when processCaptureRequest |
| returns.<wbr/> However,<wbr/> when the settings override is enabled,<wbr/> the HAL can optimize the |
| overridden controls' latency by applying them as soon as processCaptureRequest is |
| called,<wbr/> rather than when it's unblocked.<wbr/></p> |
| <p>For devices launching with API level 35 or newer,<wbr/> to avoid regression on zoom |
| smoothness,<wbr/> when zoom settings override is on during pinch zoom (zoom value gradually |
| changes),<wbr/> the zoom effect in the camera output must not become more jittery.<wbr/> More |
| specifically,<wbr/> the variation of zoom pipeline latency must not increase.<wbr/> The latency |
| improvement must be at least 1 frame regardless of zoom in or zoom out.<wbr/></p> |
| <p>For devices launched before API level 35,<wbr/> if zoom settings override is on,<wbr/> when |
| zooming in,<wbr/> the HAL must be able to apply the zoom related settings at least 1 |
| frame ahead.<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.control.settingsOverridingFrameNumber"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>settings<wbr/>Overriding<wbr/>Frame<wbr/>Number |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| |
| |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The frame number of the newer request overriding this capture.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>9</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>Must be equal to the frame number of the result if this capture isn't |
| overridden by a newer request,<wbr/> i.<wbr/>e.<wbr/> if <a href="#controls_android.control.settingsOverride">android.<wbr/>control.<wbr/>settings<wbr/>Override</a> is OFF |
| in the capture result.<wbr/> On the other hand,<wbr/> if the capture is overridden by a newer |
| request,<wbr/> the value of this tag (unsigned) must be larger than the frame number of |
| the capture result.<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.control.autoframing"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>autoframing |
| </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">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>Disable autoframing.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>Enable autoframing to keep people in the frame's field of view.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO (v3.9)</span> |
| <span class="entry_type_enum_hidden">[hidden]</span> |
| <span class="entry_type_enum_notes"><p>Automatically select ON or OFF based on the system level preferences.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Automatic crop,<wbr/> pan and zoom to keep objects in the center of the frame.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>9</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>Auto-framing is a special mode provided by the camera device to dynamically crop,<wbr/> zoom |
| or pan the camera feed to try to ensure that the people in a scene occupy a reasonable |
| portion of the viewport.<wbr/> It is primarily designed to support video calling in |
| situations where the user isn't directly in front of the device,<wbr/> especially for |
| wide-angle cameras.<wbr/> |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> and <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in CaptureResult will be used |
| to denote the coordinates of the auto-framed region.<wbr/> |
| Zoom and video stabilization controls are disabled when auto-framing is enabled.<wbr/> The 3A |
| regions must map the screen coordinates into the scaler crop returned from the capture |
| result instead of using the active array sensor.<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>While auto-framing is ON,<wbr/> the aspect ratio of the auto-framed region must match the |
| aspect ratio of the configured output stream.<wbr/> |
| When reporting CaptureResult,<wbr/> SCALER_<wbr/>CROP_<wbr/>REGION might not adequately describe the |
| actual sensor pixels.<wbr/> In this case,<wbr/> it is acceptable for the returned parameters to only |
| be an approximation of the image sensor region that is actually used.<wbr/> |
| When auto-framing is turned off,<wbr/> the transition should be immediate,<wbr/> with no panning or |
| zooming to transition to the settings requested by the app.<wbr/> When it is turned on,<wbr/> the |
| transition can be immediate or smooth.<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.control.autoframingState"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>autoframing<wbr/>State |
| </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">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">INACTIVE (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>Auto-framing is inactive.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FRAMING (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>Auto-framing is in process - either zooming in,<wbr/> zooming out or pan is taking place.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONVERGED (v3.9)</span> |
| <span class="entry_type_enum_notes"><p>Auto-framing has reached a stable state (frame/<wbr/>fov is not being adjusted).<wbr/> The state |
| may transition back to FRAMING if the scene changes.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current state of auto-framing.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>9</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 the camera doesn't have auto-framing available (i.<wbr/>e |
| <code><a href="#static_android.control.autoframingAvailable">android.<wbr/>control.<wbr/>autoframing<wbr/>Available</a></code> == false) or it is not enabled (i.<wbr/>e |
| <code><a href="#controls_android.control.autoframing">android.<wbr/>control.<wbr/>autoframing</a></code> == OFF),<wbr/> the state will always be INACTIVE.<wbr/> |
| Other states indicate the current auto-framing state:</p> |
| <ul> |
| <li>When <code><a href="#controls_android.control.autoframing">android.<wbr/>control.<wbr/>autoframing</a></code> is set to ON,<wbr/> auto-framing will take |
| place.<wbr/> While the frame is aligning itself to center the object (doing things like |
| zooming in,<wbr/> zooming out or pan),<wbr/> the state will be FRAMING.<wbr/></li> |
| <li>When field of view is not being adjusted anymore and has reached a stable state,<wbr/> the |
| state will be CONVERGED.<wbr/></li> |
| </ul> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.lowLightBoostState"> |
| <td class="entry_name |
| " rowspan="3"> |
| android.<wbr/>control.<wbr/>low<wbr/>Light<wbr/>Boost<wbr/>State |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">INACTIVE (v3.10)</span> |
| <span class="entry_type_enum_notes"><p>The AE mode 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' is enabled but not applied.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ACTIVE (v3.10)</span> |
| <span class="entry_type_enum_notes"><p>The AE mode 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY' is enabled and applied.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current state of the low light boost AE mode.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>10</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 low light boost is enabled by setting the AE mode to |
| 'ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY',<wbr/> it can dynamically apply a low light |
| boost when the light level threshold is exceeded.<wbr/></p> |
| <p>This state indicates when low light boost is 'ACTIVE' and applied.<wbr/> Similarly,<wbr/> it can |
| indicate when it is not being applied by returning 'INACTIVE'.<wbr/></p> |
| <p>The default value will always be 'INACTIVE'.<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.control.zoomMethod"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>zoom<wbr/>Method |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [fwk_public]</span> |
| |
| |
| <span class="entry_type_hwlevel">[limited] </span> |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">AUTO (v3.11)</span> |
| <span class="entry_type_enum_value">0</span> |
| <span class="entry_type_enum_notes"><p>The camera device automatically detects whether the application does zoom with |
| <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and in turn decides which |
| metadata tag reflects the effective zoom level.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ZOOM_RATIO (v3.11)</span> |
| <span class="entry_type_enum_value">1</span> |
| <span class="entry_type_enum_notes"><p>The application intends to control zoom via <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and |
| the effective zoom level is reflected by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the application uses <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> |
| to control zoom levels.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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>If set to AUTO,<wbr/> the camera device detects which capture request key the application uses |
| to do zoom,<wbr/> <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> or <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> If |
| the application doesn't set android.<wbr/>scaler.<wbr/>zoom<wbr/>Ratio or sets it to 1.<wbr/>0 in the capture |
| request,<wbr/> the effective zoom level is reflected in <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> in capture |
| results.<wbr/> If <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> is set to values other than 1.<wbr/>0,<wbr/> the effective |
| zoom level is reflected in <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>.<wbr/> AUTO is the default value |
| for this control,<wbr/> and also the behavior of the OS before Android version |
| <a href="https://developer.android.com/reference/android/os/Build.VERSION_CODES.html#BAKLAVA">BAKLAVA</a>.<wbr/></p> |
| <p>If set to ZOOM_<wbr/>RATIO,<wbr/> the application explicitly specifies zoom level be controlled |
| by <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a>,<wbr/> and the effective zoom level is reflected in |
| <a href="#controls_android.control.zoomRatio">android.<wbr/>control.<wbr/>zoom<wbr/>Ratio</a> in capture results.<wbr/> This addresses an ambiguity with AUTO,<wbr/> |
| with which the camera device cannot know if the application is using cropRegion or |
| zoomRatio at 1.<wbr/>0x.<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>Do not use this key directly.<wbr/> It's for camera framework usage,<wbr/> |
| and not for HAL consumption.<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.control.aePriorityMode"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Priority<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> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF (v3.11)</span> |
| <span class="entry_type_enum_notes"><p>Disable AE priority mode.<wbr/> This is the default value.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SENSOR_SENSITIVITY_PRIORITY (v3.11)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and |
| prioritizes the application-selected ISO (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/></p> |
| <p>The application has control over <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> while |
| the application's values for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and |
| <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SENSOR_EXPOSURE_TIME_PRIORITY (v3.11)</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto-exposure routine is active and |
| prioritizes the application-selected exposure time |
| (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>).<wbr/></p> |
| <p>The application has control over <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> while |
| the application's values for <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 ignored.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Turn on AE priority mode.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_hal_version"> |
| <p>3.<wbr/>11</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 control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is |
| AUTO and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is set to one of its |
| ON modes,<wbr/> with the exception of ON_<wbr/>LOW_<wbr/>LIGHT_<wbr/>BOOST_<wbr/>BRIGHTNESS_<wbr/>PRIORITY.<wbr/></p> |
| <p>When a priority mode is enabled,<wbr/> the camera device's |
| auto-exposure routine will maintain the application's |
| selected parameters relevant to the priority mode while overriding |
| the remaining exposure parameters |
| (<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/> For example,<wbr/> if |
| SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY mode is enabled,<wbr/> the camera device will |
| maintain the application-selected <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> |
| while adjusting <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> |
| and <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/> The overridden fields for a |
| given capture will be available in its CaptureResult.<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 total sensitivity applied for SENSOR_<wbr/>SENSITIVITY_<wbr/>PRIORITY should not be |
| adjusted by any HAL applied <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a>.<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_demosaic" class="section">demosaic</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.demosaic.mode"> |
| <td class="entry_name |
| " rowspan="1"> |
| android.<wbr/>demosaic.<wbr/>mode |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| |
| |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">FAST (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to |
| Bayer 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>Improved processing quality but the frame rate might be slowed down |
| relative to raw output.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Controls the quality of the demosaicing |
| processing.<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_FUTURE">FUTURE</a></li> |
| </ul> |
| </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_edge" class="section">edge</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.edge.mode"> |
| <td class="entry_name |
| " rowspan="5"> |
| android.<wbr/>edge.<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">OFF (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate |
| relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will |
| slow down frame rate relative to sensor.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span> |
| <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span> |
| <span class="entry_type_enum_optional">[optional]</span> |
| <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different |
| levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording |
| resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) |
| or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge |
| enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned |
| so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST |
| (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p> |
| <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode |
| with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures |
| high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is |
| produced via reprocessing when a user takes a picture.<wbr/> For such a use case,<wbr/> the |
| high-resolution buffers must not have edge enhancement applied to maximize efficiency of |
| preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution |
| buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for |
| reasonable preview quality.<wbr/></p> |
| <p>This mode is guaranteed to be supported by devices that support either the |
| YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities |
| (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will |
| be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Operation mode for edge |
| enhancement.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<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_V1">V1</a></li> |
| <li><a href="#tag_REPROC">REPROC</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>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means |
| no enhancement will be applied by the camera device.<wbr/></p> |
| <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement |
| will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the |
| camera device will use the highest-quality enhancement algorithms,<wbr/> |
| even if it slows down capture rate.<wbr/> FAST means the camera device will |
| not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if |
| edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar |
| amount of enhancement applied.<wbr/></p> |
| <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular |
| buffer of high-resolution images during preview and reprocess image(s) from that buffer |
| into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies |
| edge enhancement to low-resolution streams (below maximum recording resolution) to |
| maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/> |
| since those will be reprocessed later if necessary.<wbr/></p> |
| <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera |
| device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/> |
| |