| <!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.0 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; } |
| |
| /* table column sizes */ |
| table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word } |
| td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em } |
| .th_name { width: 20% } |
| .th_units { width: 10% } |
| .th_tags { width: 5% } |
| .th_details { width: 25% } |
| .th_type { width: 20% } |
| .th_description { width: 20% } |
| .th_range { width: 10% } |
| td { font-size: 0.9em; } |
| |
| /* hide the first thead, we need it there only to enforce column sizes */ |
| .thead_dummy { visibility: hidden; } |
| |
| /* Entry flair */ |
| .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; } |
| |
| /* Entry 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_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 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.0 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> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li> |
| <li><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</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> |
| </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.sceneModeOverrides">android.control.sceneModeOverrides</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</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.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.afState">android.control.afState</a></li> |
| <li><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</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.awbState">android.control.awbState</a></li> |
| <li><a href="#dynamic_android.control.mode">android.control.mode</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">dynamic</span> |
| <ul class="toc_section"> |
| <li><a href="#dynamic_android.edge.mode">android.edge.mode</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_flash">flash</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">controls</span> |
| <ul class="toc_section"> |
| <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li> |
| <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li> |
| <li><a href="#controls_android.flash.mode">android.flash.mode</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| |
| <li><a href="#static_android.flash.info.available">android.flash.info.available</a></li> |
| <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li> |
| |
| <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li> |
| <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li> |
| <li><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li> |
| <li><a href="#dynamic_android.flash.mode">android.flash.mode</a></li> |
| <li><a href="#dynamic_android.flash.state">android.flash.state</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_geometric">geometric</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">controls</span> |
| <ul class="toc_section"> |
| <li><a href="#controls_android.geometric.mode">android.geometric.mode</a></li> |
| <li><a href="#controls_android.geometric.strength">android.geometric.strength</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.info.map">android.hotPixel.info.map</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.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.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.geometricCorrectionMap">android.lens.info.geometricCorrectionMap</a></li> |
| <li><a href="#static_android.lens.info.geometricCorrectionMapSize">android.lens.info.geometricCorrectionMapSize</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.opticalAxisAngle">android.lens.opticalAxisAngle</a></li> |
| <li><a href="#static_android.lens.position">android.lens.position</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> |
| </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">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><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li> |
| <li><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li> |
| <li><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li> |
| <li><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><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><a href="#controls_android.request.frameCount">android.request.frameCount</a></li> |
| <li><a href="#controls_android.request.id">android.request.id</a></li> |
| <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li> |
| <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li> |
| <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li> |
| <li><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.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> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li><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><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li> |
| <li><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_scaler">scaler</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">controls</span> |
| <ul class="toc_section"> |
| <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li> |
| <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li> |
| <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li> |
| <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li> |
| <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li> |
| <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li> |
| <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li> |
| <li><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_sensor">sensor</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">controls</span> |
| <ul class="toc_section"> |
| <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li> |
| <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li> |
| <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li> |
| <li><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li> |
| <li><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| |
| <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li> |
| <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li> |
| <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li> |
| <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li> |
| <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li> |
| <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li> |
| <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li> |
| <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li> |
| |
| <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li> |
| <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</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.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li> |
| <li><a href="#static_android.sensor.noiseModelCoefficients">android.sensor.noiseModelCoefficients</a></li> |
| <li><a href="#static_android.sensor.orientation">android.sensor.orientation</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.availableTestPatternModes">android.sensor.availableTestPatternModes</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.testPatternMode">android.sensor.testPatternMode</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> |
| </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.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| |
| <li><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li> |
| <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li> |
| <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li> |
| <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li> |
| <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li> |
| <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li> |
| |
| </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.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.lensShadingMap">android.statistics.lensShadingMap</a></li> |
| <li><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li> |
| <li><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li> |
| <li><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</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.mode">android.tonemap.mode</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> |
| </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.mode">android.tonemap.mode</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_led">led</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">controls</span> |
| <ul class="toc_section"> |
| <li><a href="#controls_android.led.transmit">android.led.transmit</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li><a href="#dynamic_android.led.transmit">android.led.transmit</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| <li><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_info">info</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| <li><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">controls</span> |
| <ul class="toc_section"> |
| <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| <li> |
| <span class="toc_section_header"><a href="#section_sync">sync</a></span> |
| <ul class="toc_section"> |
| <li> |
| <span class="toc_kind_header">dynamic</span> |
| <ul class="toc_section"> |
| <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li> |
| </ul> |
| </li> |
| <li> |
| <span class="toc_kind_header">static</span> |
| <ul class="toc_section"> |
| <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li> |
| </ul> |
| </li> |
| </ul> <!-- toc_section --> |
| </li> |
| </ul> |
| |
| |
| <h1>Properties</h1> |
| <table class="properties"> |
| |
| <thead class="thead_dummy"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> <!-- so that the first occurrence of thead is not |
| above the first occurrence of tr --> |
| <!-- <namespace name="android"> --> |
| <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.colorCorrection.mode"> |
| <td class="entry_name" rowspan="3"> |
| 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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">TRANSFORM_MATRIX</span> |
| <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p> |
| <p>All advanced white balance adjustments (not specified |
| by our white balance pipeline) must be disabled.<wbr/></p> |
| <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then |
| TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override |
| this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Must not slow down capture rate relative to sensor raw |
| output.<wbr/></p> |
| <p>Advanced white balance adjustments above and beyond |
| the specified white balance pipeline may be applied.<wbr/></p> |
| <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then |
| the camera device uses the last frame's AWB values |
| (or defaults if AWB has never been run).<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Capture rate (relative to sensor raw output) |
| may be reduced by high quality.<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> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The mode control selects how the image data is converted from the |
| sensor's native color into linear sRGB color.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When auto-white balance is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this |
| control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the |
| application controls how the color mapping is performed.<wbr/></p> |
| <p>We define the expected processing pipeline below.<wbr/> For consistency |
| across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p> |
| <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may |
| do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and |
| <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the |
| camera device (in the results) and be roughly correct.<wbr/></p> |
| <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from |
| FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point |
| as what was produced by the camera device in the earlier frame.<wbr/></p> |
| <p>The expected processing pipeline is as follows:</p> |
| <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p> |
| <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance |
| gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform |
| matrix (applied after demosaic).<wbr/></p> |
| <p>The 4-channel white-balance gains are defined as:</p> |
| <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ] |
| </code></pre> |
| <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the |
| output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/> |
| These may be identical for a given camera device implementation; if |
| the camera device does not support a separate gain for even/<wbr/>odd green |
| channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to |
| <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p> |
| <p>The matrices for color transforms are defined as a 9-entry vector:</p> |
| <pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ] |
| </code></pre> |
| <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/> |
| to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p> |
| <p>with colors as follows:</p> |
| <pre><code>r' = I0r + I1g + I2b |
| g' = I3r + I4g + I5b |
| b' = I6r + I7g + I8b |
| </code></pre> |
| <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow |
| values are clipped to fit within the range.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.colorCorrection.transform"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>color<wbr/>Correction.<wbr/>transform |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">rational</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 3 x 3 |
| </span> |
| <span class="entry_type_visibility"> [public]</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</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.colorCorrection.gains"> |
| <td class="entry_name" rowspan="3"> |
| 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]</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</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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/> if a HAL |
| does not support a separate gain for even/<wbr/>odd green channels,<wbr/> |
| it should 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>This array is either set by HAL 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 output should be the gains actually applied by the HAL to |
| the current frame.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.colorCorrection.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]</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</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.colorCorrection.gains"> |
| <td class="entry_name" rowspan="3"> |
| 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]</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</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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/> if a HAL |
| does not support a separate gain for even/<wbr/>odd green channels,<wbr/> |
| it should 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>This array is either set by HAL 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 output should be the gains actually applied by the HAL to |
| the current frame.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_control" class="section">control</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.control.aeAntibandingMode"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to |
| avoid banding problems.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">50HZ</span> |
| <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to |
| avoid banding problems with 50Hz illumination sources.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">60HZ</span> |
| <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to |
| avoid banding problems with 60Hz illumination |
| sources.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO</span> |
| <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its |
| antibanding routine to the current illumination |
| conditions.<wbr/> This is the default.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The desired setting for the camera device's auto-exposure |
| algorithm's antibanding compensation.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent |
| lights,<wbr/> flicker at the rate of the power supply frequency |
| (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is |
| typically not noticeable to a person,<wbr/> it can be visible to |
| a camera device.<wbr/> If a camera sets its exposure time to the |
| wrong value,<wbr/> the flicker may become visible in the |
| viewfinder as flicker or in a final captured image,<wbr/> as a |
| set of variable-brightness bands across the image.<wbr/></p> |
| <p>Therefore,<wbr/> the auto-exposure routines of camera devices |
| include antibanding routines that ensure that the chosen |
| exposure value will not cause such banding.<wbr/> The choice of |
| exposure time depends on the rate of flicker,<wbr/> which the |
| camera device can detect automatically,<wbr/> or the expected |
| rate can be selected by the application using this |
| control.<wbr/></p> |
| <p>A given camera device may not support all of the possible |
| options for the antibanding mode.<wbr/> The |
| <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains |
| the available modes for a given camera device.<wbr/></p> |
| <p>The default mode is AUTO,<wbr/> which must be supported by all |
| camera devices.<wbr/></p> |
| <p>If manual exposure control is enabled (by setting |
| <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/> |
| then this setting has no effect,<wbr/> and the application must |
| ensure it selects exposure times that do not cause banding |
| issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist |
| the application in this.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>For all capture request templates,<wbr/> this field must be set |
| to AUTO.<wbr/> AUTO is the only mode that must supported; |
| OFF,<wbr/> 50HZ,<wbr/> 60HZ are all optional.<wbr/></p> |
| <p>If manual exposure control is enabled (by setting |
| <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/> |
| then the exposure values provided by the application must not be |
| adjusted for antibanding.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.aeExposureCompensation"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Adjustment to AE target image |
| brightness</p> |
| </td> |
| |
| <td class="entry_units"> |
| count of positive/<wbr/>negative EV steps |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>For example,<wbr/> if EV step is 0.<wbr/>333,<wbr/> '6' will mean an |
| exposure compensation of +2 EV; -3 will mean an exposure |
| compensation of -1</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.aeLock"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Lock |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [public as boolean]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>Autoexposure lock is disabled; the AE algorithm |
| is free to update its parameters.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| <span class="entry_type_enum_notes"><p>Autoexposure lock is enabled; the AE algorithm |
| must not update the exposure and sensitivity parameters |
| while the lock is active</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether AE is currently locked to its latest |
| calculated values.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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>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 android.<wbr/>control.<wbr/>ae<wbr/>Mode |
| 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/></p> |
| <p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.aeMode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>control.<wbr/>ae<wbr/>Mode |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled; |
| 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></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> |
| with no flash control.<wbr/> The application's values for |
| <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and |
| <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The |
| application has control over the various |
| android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON_AUTO_FLASH</span> |
| <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls |
| the camera's flash unit,<wbr/> firing it in low-light |
| conditions.<wbr/> The flash may be fired during a |
| precapture sequence (triggered by |
| <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired |
| for captures for which the |
| <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to |
| STILL_<wbr/>CAPTURE</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> |
| <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls |
| the camera's flash unit,<wbr/> always firing it for still |
| captures.<wbr/> The flash may be fired during a precapture |
| sequence (triggered by |
| <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always |
| be fired for captures for which the |
| <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to |
| STILL_<wbr/>CAPTURE</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> |
| <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye |
| reduction.<wbr/> If deemed necessary by the camera device,<wbr/> |
| a red eye reduction flash will fire during the |
| precapture sequence.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The desired mode for the camera device's |
| auto-exposure routine.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is |
| AUTO.<wbr/></p> |
| <p>When set to any of the ON modes,<wbr/> the camera device's |
| auto-exposure routine is enabled,<wbr/> overriding the |
| application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> |
| and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and |
| <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes |
| is selected,<wbr/> the camera device's flash unit controls are |
| also overridden.<wbr/></p> |
| <p>The FLASH modes are only available if the camera device |
| has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> |
| <p>If flash TORCH mode is desired,<wbr/> this field must be set to |
| ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> |
| <p>When set to any of the ON modes,<wbr/> the values chosen by the |
| camera device auto-exposure routine for the overridden |
| fields for a given capture will be available in its |
| CaptureResult.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.aeRegions"> |
| <td class="entry_name" rowspan="3"> |
| 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]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of areas to use for |
| metering.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the |
| specified coordinates.<wbr/></p> |
| <p>The coordinate system is based on the active pixel array,<wbr/> |
| with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| bottom-right pixel in the active pixel array.<wbr/> The weight |
| should be nonnegative.<wbr/></p> |
| <p>If all regions have 0 weight,<wbr/> then no specific metering area |
| needs to be used by the HAL.<wbr/> If the metering region is |
| outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL |
| should ignore the sections outside the region and output the |
| used sections in the frame metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.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]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Range over which fps can be adjusted to |
| maintain exposure</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only constrains AE algorithm,<wbr/> not manual control |
| of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.aePrecaptureTrigger"> |
| <td class="entry_name" rowspan="3"> |
| 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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">IDLE</span> |
| <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">START</span> |
| <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started |
| by the camera device.<wbr/> The exact effect of the precapture |
| trigger depends on the current AE mode and 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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This 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 autoexposure |
| precapture metering sequence.<wbr/></p> |
| <p>The effect of 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> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.afMode"> |
| <td class="entry_name" rowspan="3"> |
| 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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</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</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO</span> |
| <span class="entry_type_enum_notes"><p>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/> In this mode,<wbr/> the lens does not move unless |
| the autofocus trigger action is called.<wbr/> When that trigger |
| is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></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</span> |
| <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the |
| autofocus trigger action is called.<wbr/></p> |
| <p>When that trigger is activated,<wbr/> AF must transition to |
| ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or |
| NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens |
| position to default,<wbr/> and sets the AF state to |
| INACTIVE.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONTINUOUS_VIDEO</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</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</span> |
| <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF |
| trigger is ignored,<wbr/> AF state should always be |
| INACTIVE.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether AF is currently enabled,<wbr/> and what |
| mode it is set to</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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO.<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 android.<wbr/>control.<wbr/>af<wbr/>State |
| in result metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.afRegions"> |
| <td class="entry_name" rowspan="3"> |
| 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]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of areas to use for focus |
| estimation.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the |
| specified coordinates.<wbr/></p> |
| <p>The coordinate system is based on the active pixel array,<wbr/> |
| with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| bottom-right pixel in the active pixel array.<wbr/> The weight |
| should be nonnegative.<wbr/></p> |
| <p>If all regions have 0 weight,<wbr/> then no specific focus area |
| needs to be used by the HAL.<wbr/> If the focusing region is |
| outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL |
| should ignore the sections outside the region and output the |
| used sections in the frame metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.afTrigger"> |
| <td class="entry_name" rowspan="3"> |
| 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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">IDLE</span> |
| <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">START</span> |
| <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CANCEL</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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This 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>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what that means for each AF mode.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>Auto-whitebalance 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</span> |
| <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is enabled; the AWB |
| algorithm must not update its parameters while the lock |
| is active.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether 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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Note that AWB lock is only meaningful for AUTO |
| mode; in other modes,<wbr/> AWB is already fixed to a specific |
| setting.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; |
| 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</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active; |
| the application's values for android.<wbr/>color<wbr/>Correction.<wbr/>transform |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">INCANDESCENT</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/> While the exact white balance |
| transforms are up to the camera device,<wbr/> they will approximately |
| match the CIE standard illuminant A.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FLUORESCENT</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/> While the exact white balance |
| transforms are up to the camera device,<wbr/> they will approximately |
| match the CIE standard illuminant F2.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">WARM_FLUORESCENT</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/> While the exact white balance |
| transforms are up to the camera device,<wbr/> they will approximately |
| match the CIE standard illuminant F4.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DAYLIGHT</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/> While the exact white balance |
| transforms are up to the camera device,<wbr/> they will approximately |
| match the CIE standard illuminant D65.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</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></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TWILIGHT</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></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SHADE</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></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether AWB is currently setting the color |
| transform fields,<wbr/> and what its illumination target |
| is</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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| <li><a href="#tag_AWB">AWB</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> |
| <p>When set to the ON 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/></p> |
| <p>When set to the OFF mode,<wbr/> the camera device's auto white balance |
| routine is disabled.<wbr/> The applicantion manually controls the white |
| balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> android.<wbr/>color<wbr/>Correction.<wbr/>gains |
| 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/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.awbRegions"> |
| <td class="entry_name" rowspan="3"> |
| 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]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of areas to use for illuminant |
| estimation.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only used in AUTO mode.<wbr/></p> |
| <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the |
| specified coordinates.<wbr/></p> |
| <p>The coordinate system is based on the active pixel array,<wbr/> |
| with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| bottom-right pixel in the active pixel array.<wbr/> The weight |
| should be nonnegative.<wbr/></p> |
| <p>If all regions have 0 weight,<wbr/> then no specific metering area |
| needs to be used by the HAL.<wbr/> If the metering region is |
| outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL |
| should ignore the sections outside the region and output the |
| used sections in the frame metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">CUSTOM</span> |
| <span class="entry_type_enum_notes"><p>This request doesn't fall into the other |
| categories.<wbr/> Default to preview-like |
| behavior.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PREVIEW</span> |
| <span class="entry_type_enum_notes"><p>This request is for a preview-like usecase.<wbr/> The |
| precapture trigger may be used to start off a metering |
| w/<wbr/>flash sequence</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">STILL_CAPTURE</span> |
| <span class="entry_type_enum_notes"><p>This request is for a still capture-type |
| usecase.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VIDEO_RECORD</span> |
| <span class="entry_type_enum_notes"><p>This request is for a video recording |
| usecase.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span> |
| <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still |
| image while recording video) usecase</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</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</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"> |
| <p>All must be supported</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This control is only effective if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> |
| and any 3A routine is active.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</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</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/> This will typically be grayscale.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NEGATIVE</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</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</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</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</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</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</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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When 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> |
| <p>A color effect will only be applied if |
| <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A |
| routines are disabled,<wbr/> no other settings in |
| android.<wbr/>control.<wbr/>* have any effect</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO</span> |
| <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/> |
| Manual control of capture parameters is disabled.<wbr/> All |
| controls in android.<wbr/>control.<wbr/>* besides sceneMode take |
| effect</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">USE_SCENE_MODE</span> |
| <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables |
| control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode |
| controls; the HAL must ignore those settings while |
| USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY |
| scene mode).<wbr/> Other control entries are still active.<wbr/> |
| This setting can only be used if availableSceneModes != |
| UNSUPPORTED</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">OFF_KEEP_STATE</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 to update their statistics.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Overall mode of 3A control |
| routines</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>all must be supported</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>High-level 3A control.<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,<wbr/> the individual controls in |
| android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements |
| one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) |
| as it wishes.<wbr/> The camera device scene mode 3A settings are provided by |
| <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</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="6"></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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">DISABLED</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</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/> 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 android.<wbr/>control.<wbr/>af<wbr/>Mode |
| remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ACTION</span> |
| <span class="entry_type_enum_optional">optional</span> |
| <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/> |
| Similar to SPORTS.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PORTRAIT</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</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</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</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</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</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</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</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</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</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</span> |
| <span class="entry_type_enum_optional">optional</span> |
| <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/> |
| Similar to ACTION.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PARTY</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</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 flame.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BARCODE</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> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>A camera mode optimized for conditions typical in a particular |
| capture setting.<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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This 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="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <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> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.control.videoStabilizationMode"> |
| <td class="entry_name" rowspan="3"> |
| 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 as boolean]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether video stabilization is |
| active</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.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]</span> |
| <div class="entry_type_notes">list of enums</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The set of auto-exposure antibanding modes that are |
| supported by this camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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; they must include AUTO.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></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]</span> |
| <div class="entry_type_notes">list of enums</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The set of auto-exposure modes that are supported by this |
| camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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-capability camera devices always support OFF mode,<wbr/> |
| which enables application control of camera exposure time,<wbr/> |
| sensitivity,<wbr/> and frame duration.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges"> |
| <td class="entry_name" rowspan="1"> |
| 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]</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 supported by the |
| AE algorithm/<wbr/>hardware</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></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]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Maximum and minimum exposure compensation |
| setting,<wbr/> in counts of |
| android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step<wbr/>Size</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>At least (-2,<wbr/>2)/<wbr/>(exp compensation step |
| size)</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.aeCompensationStep"> |
| <td class="entry_name" rowspan="1"> |
| 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> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Smallest step by which exposure compensation |
| can be changed</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><= 1/<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="6"></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]</span> |
| <div class="entry_type_notes">List of enums</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of AF modes that can be |
| selected with <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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 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> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></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]</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 containing the subset of color effects |
| specified in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that is supported by |
| this device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Any subset of enums from those specified in |
| <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a>.<wbr/> OFF must be included in any subset.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This list contains the color effect modes that can be applied to |
| images produced by the camera device.<wbr/> Only modes that have |
| been fully implemented for the current device may be included here.<wbr/> |
| Implementations are not expected to be consistent across all devices.<wbr/> |
| If no color effect modes are available for a device,<wbr/> this should |
| simply be set to 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/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></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]</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 containing a subset of scene modes |
| specified in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Any subset of the enums specified in android.<wbr/>control.<wbr/>scene<wbr/>Mode |
| not including DISABLED,<wbr/> or solely DISABLED if no |
| scene modes are available.<wbr/> FACE_<wbr/>PRIORITY must be included |
| 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> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This 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/> If no scene modes are supported |
| by the camera device,<wbr/> this will be set to <code>[DISABLED]</code>.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.control.availableVideoStabilizationModes"> |
| <td class="entry_name" rowspan="1"> |
| 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]</span> |
| <div class="entry_type_notes">List of enums.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of video stabilization modes that can |
| be supported</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>OFF must be included</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="6"></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]</span> |
| <div class="entry_type_notes">List of enums</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The set of auto-white-balance modes (<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"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Not 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>Full-capability camera devices 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/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></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"> [public]</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 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_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="6"></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> |
| |
| |
| </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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When 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 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 android.<wbr/>control.<wbr/>mode |
| is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY |
| 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="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <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.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.control.aePrecaptureId"> |
| <td class="entry_name" 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"> [hidden]</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><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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="6"></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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled; |
| 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></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/> |
| with no flash control.<wbr/> The application's values for |
| <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and |
| <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The |
| application has control over the various |
| android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON_AUTO_FLASH</span> |
| <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls |
| the camera's flash unit,<wbr/> firing it in low-light |
| conditions.<wbr/> The flash may be fired during a |
| precapture sequence (triggered by |
| <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired |
| for captures for which the |
| <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to |
| STILL_<wbr/>CAPTURE</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span> |
| <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls |
| the camera's flash unit,<wbr/> always firing it for still |
| captures.<wbr/> The flash may be fired during a precapture |
| sequence (triggered by |
| <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always |
| be fired for captures for which the |
| <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to |
| STILL_<wbr/>CAPTURE</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span> |
| <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye |
| reduction.<wbr/> If deemed necessary by the camera device,<wbr/> |
| a red eye reduction flash will fire during the |
| precapture sequence.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The desired mode for the camera device's |
| auto-exposure routine.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is |
| AUTO.<wbr/></p> |
| <p>When set to any of the ON modes,<wbr/> the camera device's |
| auto-exposure routine is enabled,<wbr/> overriding the |
| application's selected exposure time,<wbr/> sensor sensitivity,<wbr/> |
| and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> |
| <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and |
| <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes |
| is selected,<wbr/> the camera device's flash unit controls are |
| also overridden.<wbr/></p> |
| <p>The FLASH modes are only available if the camera device |
| has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p> |
| <p>If flash TORCH mode is desired,<wbr/> this field must be set to |
| ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p> |
| <p>When set to any of the ON modes,<wbr/> the values chosen by the |
| camera device auto-exposure routine for the overridden |
| fields for a given capture will be available in its |
| CaptureResult.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.aeRegions"> |
| <td class="entry_name" rowspan="3"> |
| 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]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of areas to use for |
| metering.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the |
| specified coordinates.<wbr/></p> |
| <p>The coordinate system is based on the active pixel array,<wbr/> |
| with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| bottom-right pixel in the active pixel array.<wbr/> The weight |
| should be nonnegative.<wbr/></p> |
| <p>If all regions have 0 weight,<wbr/> then no specific metering area |
| needs to be used by the HAL.<wbr/> If the metering region is |
| outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL |
| should ignore the sections outside the region and output the |
| used sections in the frame metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">INACTIVE</span> |
| <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/> When a camera device is opened,<wbr/> it starts in |
| this state.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SEARCHING</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></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONVERGED</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</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</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</span> |
| <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence |
| (through the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> START),<wbr/> |
| and is currently executing it.<wbr/> Once PRECAPTURE |
| completes,<wbr/> AE will transition to CONVERGED or |
| FLASH_<wbr/>REQUIRED as appropriate.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current state of AE algorithm</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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 align="center">State</th> |
| <th align="center">Transition Cause</th> |
| <th align="center">New State</th> |
| <th align="center">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center"></td> |
| <td align="center">INACTIVE</td> |
| <td 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_<wbr/>*:</p> |
| <table> |
| <thead> |
| <tr> |
| <th align="center">State</th> |
| <th align="center">Transition Cause</th> |
| <th align="center">New State</th> |
| <th align="center">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center">Camera device initiates AE scan</td> |
| <td align="center">SEARCHING</td> |
| <td align="center">Values changing</td> |
| </tr> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td align="center">LOCKED</td> |
| <td align="center">Values locked</td> |
| </tr> |
| <tr> |
| <td align="center">SEARCHING</td> |
| <td align="center">Camera device finishes AE scan</td> |
| <td align="center">CONVERGED</td> |
| <td align="center">Good values,<wbr/> not changing</td> |
| </tr> |
| <tr> |
| <td align="center">SEARCHING</td> |
| <td align="center">Camera device finishes AE scan</td> |
| <td align="center">FLASH_<wbr/>REQUIRED</td> |
| <td align="center">Converged but too dark w/<wbr/>o flash</td> |
| </tr> |
| <tr> |
| <td align="center">SEARCHING</td> |
| <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td align="center">LOCKED</td> |
| <td align="center">Values locked</td> |
| </tr> |
| <tr> |
| <td align="center">CONVERGED</td> |
| <td align="center">Camera device initiates AE scan</td> |
| <td align="center">SEARCHING</td> |
| <td align="center">Values changing</td> |
| </tr> |
| <tr> |
| <td align="center">CONVERGED</td> |
| <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td align="center">LOCKED</td> |
| <td align="center">Values locked</td> |
| </tr> |
| <tr> |
| <td align="center">FLASH_<wbr/>REQUIRED</td> |
| <td align="center">Camera device initiates AE scan</td> |
| <td align="center">SEARCHING</td> |
| <td align="center">Values changing</td> |
| </tr> |
| <tr> |
| <td align="center">FLASH_<wbr/>REQUIRED</td> |
| <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td align="center">LOCKED</td> |
| <td align="center">Values locked</td> |
| </tr> |
| <tr> |
| <td align="center">LOCKED</td> |
| <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| <td align="center">SEARCHING</td> |
| <td align="center">Values not good after unlock</td> |
| </tr> |
| <tr> |
| <td align="center">LOCKED</td> |
| <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| <td align="center">CONVERGED</td> |
| <td align="center">Values good after unlock</td> |
| </tr> |
| <tr> |
| <td align="center">LOCKED</td> |
| <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| <td align="center">FLASH_<wbr/>REQUIRED</td> |
| <td align="center">Exposure good,<wbr/> but too dark</td> |
| </tr> |
| <tr> |
| <td align="center">PRECAPTURE</td> |
| <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td> |
| <td align="center">CONVERGED</td> |
| <td align="center">Ready for high-quality capture</td> |
| </tr> |
| <tr> |
| <td align="center">PRECAPTURE</td> |
| <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td> |
| <td align="center">LOCKED</td> |
| <td align="center">Ready for high-quality capture</td> |
| </tr> |
| <tr> |
| <td align="center">Any state</td> |
| <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td> |
| <td align="center">PRECAPTURE</td> |
| <td align="center">Start AE precapture metering sequence</td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.afMode"> |
| <td class="entry_name" rowspan="3"> |
| 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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</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</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO</span> |
| <span class="entry_type_enum_notes"><p>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/> In this mode,<wbr/> the lens does not move unless |
| the autofocus trigger action is called.<wbr/> When that trigger |
| is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to |
| the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></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</span> |
| <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the |
| autofocus trigger action is called.<wbr/></p> |
| <p>When that trigger is activated,<wbr/> AF must transition to |
| ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or |
| NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens |
| position to default,<wbr/> and sets the AF state to |
| INACTIVE.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONTINUOUS_VIDEO</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</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</span> |
| <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF |
| trigger is ignored,<wbr/> AF state should always be |
| INACTIVE.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether AF is currently enabled,<wbr/> and what |
| mode it is set to</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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO.<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 android.<wbr/>control.<wbr/>af<wbr/>State |
| in result metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.afRegions"> |
| <td class="entry_name" rowspan="3"> |
| 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]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of areas to use for focus |
| estimation.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the |
| specified coordinates.<wbr/></p> |
| <p>The coordinate system is based on the active pixel array,<wbr/> |
| with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| bottom-right pixel in the active pixel array.<wbr/> The weight |
| should be nonnegative.<wbr/></p> |
| <p>If all regions have 0 weight,<wbr/> then no specific focus area |
| needs to be used by the HAL.<wbr/> If the focusing region is |
| outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL |
| should ignore the sections outside the region and output the |
| used sections in the frame metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">INACTIVE</span> |
| <span class="entry_type_enum_notes"><p>AF off or has not yet tried to scan/<wbr/>been asked |
| to scan.<wbr/> When a camera device is opened,<wbr/> it starts in |
| this state.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PASSIVE_SCAN</span> |
| <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF is |
| currently doing an AF scan initiated by a continuous |
| autofocus mode</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PASSIVE_FOCUSED</span> |
| <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF currently |
| believes it is in focus,<wbr/> but may restart scanning at |
| any time.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ACTIVE_SCAN</span> |
| <span class="entry_type_enum_notes"><p>if AUTO or MACRO modes are supported.<wbr/> AF is doing |
| an AF scan because it was triggered by AF |
| trigger</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FOCUSED_LOCKED</span> |
| <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF |
| believes it is focused correctly and is |
| locked</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span> |
| <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF has |
| failed to focus successfully and is |
| locked</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span> |
| <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF finished a |
| passive scan without finding focus,<wbr/> and may restart |
| scanning at any time.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current state of AF algorithm</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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 align="center">State</th> |
| <th align="center">Transition Cause</th> |
| <th align="center">New State</th> |
| <th align="center">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center"></td> |
| <td align="center">INACTIVE</td> |
| <td 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 align="center">State</th> |
| <th align="center">Transition Cause</th> |
| <th align="center">New State</th> |
| <th align="center">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">ACTIVE_<wbr/>SCAN</td> |
| <td align="center">Start AF sweep,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td align="center">ACTIVE_<wbr/>SCAN</td> |
| <td align="center">AF sweep done</td> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Focused,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">ACTIVE_<wbr/>SCAN</td> |
| <td align="center">AF sweep done</td> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Not focused,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">ACTIVE_<wbr/>SCAN</td> |
| <td align="center">AF_<wbr/>CANCEL</td> |
| <td align="center">INACTIVE</td> |
| <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>CANCEL</td> |
| <td align="center">INACTIVE</td> |
| <td align="center">Cancel/<wbr/>reset AF</td> |
| </tr> |
| <tr> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">ACTIVE_<wbr/>SCAN</td> |
| <td align="center">Start new sweep,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>CANCEL</td> |
| <td align="center">INACTIVE</td> |
| <td align="center">Cancel/<wbr/>reset AF</td> |
| </tr> |
| <tr> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">ACTIVE_<wbr/>SCAN</td> |
| <td align="center">Start new sweep,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td align="center">Any state</td> |
| <td align="center">Mode change</td> |
| <td align="center">INACTIVE</td> |
| <td align="center"></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 align="center">State</th> |
| <th align="center">Transition Cause</th> |
| <th align="center">New State</th> |
| <th align="center">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center">Camera device initiates new scan</td> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF state query,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Camera device completes current scan</td> |
| <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| <td align="center">End AF scan,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Camera device fails current scan</td> |
| <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td align="center">End AF scan,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Immediate trans.<wbr/> If focus is good,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Immediate trans.<wbr/> if focus is bad,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">AF_<wbr/>CANCEL</td> |
| <td align="center">INACTIVE</td> |
| <td align="center">Reset lens position,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| <td align="center">Camera device initiates new scan</td> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td align="center">Camera device initiates new scan</td> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Immediate trans.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Immediate trans.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">No effect</td> |
| </tr> |
| <tr> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>CANCEL</td> |
| <td align="center">INACTIVE</td> |
| <td align="center">Restart AF scan</td> |
| </tr> |
| <tr> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">No effect</td> |
| </tr> |
| <tr> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>CANCEL</td> |
| <td align="center">INACTIVE</td> |
| <td 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 align="center">State</th> |
| <th align="center">Transition Cause</th> |
| <th align="center">New State</th> |
| <th align="center">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center">Camera device initiates new scan</td> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF state query,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Camera device completes current scan</td> |
| <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| <td align="center">End AF scan,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Camera device fails current scan</td> |
| <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td align="center">End AF scan,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Eventual trans.<wbr/> once focus good,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Eventual trans.<wbr/> if cannot focus,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">AF_<wbr/>CANCEL</td> |
| <td align="center">INACTIVE</td> |
| <td align="center">Reset lens position,<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| <td align="center">Camera device initiates new scan</td> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td align="center">Camera device initiates new scan</td> |
| <td align="center">PASSIVE_<wbr/>SCAN</td> |
| <td align="center">Start AF scan,<wbr/> Lens now moving</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>FOCUSED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Immediate trans.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">PASSIVE_<wbr/>UNFOCUSED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">Immediate trans.<wbr/> Lens now locked</td> |
| </tr> |
| <tr> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">No effect</td> |
| </tr> |
| <tr> |
| <td align="center">FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>CANCEL</td> |
| <td align="center">INACTIVE</td> |
| <td align="center">Restart AF scan</td> |
| </tr> |
| <tr> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>TRIGGER</td> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">No effect</td> |
| </tr> |
| <tr> |
| <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td> |
| <td align="center">AF_<wbr/>CANCEL</td> |
| <td align="center">INACTIVE</td> |
| <td align="center">Restart AF scan</td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.afTriggerId"> |
| <td class="entry_name" 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"> [hidden]</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><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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="6"></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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled; |
| 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</span> |
| <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active; |
| the application's values for android.<wbr/>color<wbr/>Correction.<wbr/>transform |
| and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">INCANDESCENT</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/> While the exact white balance |
| transforms are up to the camera device,<wbr/> they will approximately |
| match the CIE standard illuminant A.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FLUORESCENT</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/> While the exact white balance |
| transforms are up to the camera device,<wbr/> they will approximately |
| match the CIE standard illuminant F2.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">WARM_FLUORESCENT</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/> While the exact white balance |
| transforms are up to the camera device,<wbr/> they will approximately |
| match the CIE standard illuminant F4.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DAYLIGHT</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/> While the exact white balance |
| transforms are up to the camera device,<wbr/> they will approximately |
| match the CIE standard illuminant D65.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</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></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TWILIGHT</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></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SHADE</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></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether AWB is currently setting the color |
| transform fields,<wbr/> and what its illumination target |
| is</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_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| <li><a href="#tag_AWB">AWB</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p> |
| <p>When set to the ON 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/></p> |
| <p>When set to the OFF mode,<wbr/> the camera device's auto white balance |
| routine is disabled.<wbr/> The applicantion manually controls the white |
| balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> android.<wbr/>color<wbr/>Correction.<wbr/>gains |
| 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/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.control.awbRegions"> |
| <td class="entry_name" rowspan="3"> |
| 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]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of areas to use for illuminant |
| estimation.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><code>area_<wbr/>count <= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only used in AUTO mode.<wbr/></p> |
| <p>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined to be inclusive of the |
| specified coordinates.<wbr/></p> |
| <p>The coordinate system is based on the active pixel array,<wbr/> |
| with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and |
| (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/> |
| <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the |
| bottom-right pixel in the active pixel array.<wbr/> The weight |
| should be nonnegative.<wbr/></p> |
| <p>If all regions have 0 weight,<wbr/> then no specific metering area |
| needs to be used by the HAL.<wbr/> If the metering region is |
| outside the current <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> the HAL |
| should ignore the sections outside the region and output the |
| used sections in the frame metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">INACTIVE</span> |
| <span class="entry_type_enum_notes"><p>AWB is not in auto mode.<wbr/> When a camera device is opened,<wbr/> it |
| starts in this state.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SEARCHING</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></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CONVERGED</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</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 AWB algorithm</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>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 align="center">State</th> |
| <th align="center">Transition Cause</th> |
| <th align="center">New State</th> |
| <th align="center">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center"></td> |
| <td align="center">INACTIVE</td> |
| <td 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 align="center">State</th> |
| <th align="center">Transition Cause</th> |
| <th align="center">New State</th> |
| <th align="center">Notes</th> |
| </tr> |
| </thead> |
| <tbody> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center">Camera device initiates AWB scan</td> |
| <td align="center">SEARCHING</td> |
| <td align="center">Values changing</td> |
| </tr> |
| <tr> |
| <td align="center">INACTIVE</td> |
| <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> |
| <td align="center">LOCKED</td> |
| <td align="center">Values locked</td> |
| </tr> |
| <tr> |
| <td align="center">SEARCHING</td> |
| <td align="center">Camera device finishes AWB scan</td> |
| <td align="center">CONVERGED</td> |
| <td align="center">Good values,<wbr/> not changing</td> |
| </tr> |
| <tr> |
| <td align="center">SEARCHING</td> |
| <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> |
| <td align="center">LOCKED</td> |
| <td align="center">Values locked</td> |
| </tr> |
| <tr> |
| <td align="center">CONVERGED</td> |
| <td align="center">Camera device initiates AWB scan</td> |
| <td align="center">SEARCHING</td> |
| <td align="center">Values changing</td> |
| </tr> |
| <tr> |
| <td align="center">CONVERGED</td> |
| <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td> |
| <td align="center">LOCKED</td> |
| <td align="center">Values locked</td> |
| </tr> |
| <tr> |
| <td align="center">LOCKED</td> |
| <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> |
| <td align="center">SEARCHING</td> |
| <td align="center">Values not good after unlock</td> |
| </tr> |
| <tr> |
| <td align="center">LOCKED</td> |
| <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td> |
| <td align="center">CONVERGED</td> |
| <td align="center">Values good after unlock</td> |
| </tr> |
| </tbody> |
| </table> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A |
| routines are disabled,<wbr/> no other settings in |
| android.<wbr/>control.<wbr/>* have any effect</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AUTO</span> |
| <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/> |
| Manual control of capture parameters is disabled.<wbr/> All |
| controls in android.<wbr/>control.<wbr/>* besides sceneMode take |
| effect</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">USE_SCENE_MODE</span> |
| <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables |
| control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode |
| controls; the HAL must ignore those settings while |
| USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY |
| scene mode).<wbr/> Other control entries are still active.<wbr/> |
| This setting can only be used if availableSceneModes != |
| UNSUPPORTED</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">OFF_KEEP_STATE</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 to update their statistics.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Overall mode of 3A control |
| routines</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>all must be supported</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>High-level 3A control.<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,<wbr/> the individual controls in |
| android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements |
| one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY) |
| as it wishes.<wbr/> The camera device scene mode 3A settings are provided by |
| <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.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</span> |
| <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to |
| Bayer RAW output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>High-quality may reduce output frame |
| rate</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Controls the quality of the demosaicing |
| processing</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_edge" class="section">edge</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.edge.mode"> |
| <td class="entry_name" rowspan="3"> |
| 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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>No edge enhancement is applied</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor |
| output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high |
| quality</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Operation mode for edge |
| enhancement</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no |
| enhancement will be applied by the HAL.<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/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.edge.strength"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>edge.<wbr/>strength |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Control the amount of edge enhancement |
| applied to the images</p> |
| </td> |
| |
| <td class="entry_units"> |
| 1-10; 10 is maximum sharpening |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.edge.mode"> |
| <td class="entry_name" rowspan="3"> |
| 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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>No edge enhancement is applied</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor |
| output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high |
| quality</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Operation mode for edge |
| enhancement</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no |
| enhancement will be applied by the HAL.<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/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_flash" class="section">flash</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.flash.firingPower"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>flash.<wbr/>firing<wbr/>Power |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Power for flash firing/<wbr/>torch</p> |
| </td> |
| |
| <td class="entry_units"> |
| 10 is max power; 0 is no flash.<wbr/> Linear |
| </td> |
| |
| <td class="entry_range"> |
| <p>0 - 10</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Power for snapshot may use a different scale than |
| for torch mode.<wbr/> Only one entry for torch mode will be |
| used</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.flash.firingTime"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>flash.<wbr/>firing<wbr/>Time |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Firing time of flash relative to start of |
| exposure</p> |
| </td> |
| |
| <td class="entry_units"> |
| nanoseconds |
| </td> |
| |
| <td class="entry_range"> |
| <p>0-(exposure time-flash duration)</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Clamped to (0,<wbr/> exposure time - flash |
| duration).<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.flash.mode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>flash.<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</span> |
| <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SINGLE</span> |
| <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash |
| for this capture based on <a href="#controls_android.flash.firingPower">android.<wbr/>flash.<wbr/>firing<wbr/>Power</a> and |
| <a href="#controls_android.flash.firingTime">android.<wbr/>flash.<wbr/>firing<wbr/>Time</a>.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TORCH</span> |
| <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The desired mode for for the camera device's flash control.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This control is only effective when flash unit is available |
| (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> |
| <p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/> |
| Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> |
| ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> |
| <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> |
| <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera |
| device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this |
| control should be used along with AE precapture metering sequence |
| (<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>),<wbr/> otherwise,<wbr/> the image may be incorrectly exposed.<wbr/></p> |
| <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used |
| for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> |
| <p>The flash status will be reported by <a href="#dynamic_android.flash.state">android.<wbr/>flash.<wbr/>state</a> in the capture result metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.flash.info.available"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>flash.<wbr/>info.<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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">FALSE</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TRUE</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether this camera device has a |
| flash.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If no flash,<wbr/> none of the flash controls do |
| anything.<wbr/> All other metadata should return 0.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.flash.info.chargeDuration"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Time taken before flash can fire |
| again</p> |
| </td> |
| |
| <td class="entry_units"> |
| nanoseconds |
| </td> |
| |
| <td class="entry_range"> |
| <p>0-1e9</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>1 second too long/<wbr/>too short for recharge? Should |
| this be power-dependent?</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.flash.colorTemperature"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>flash.<wbr/>color<wbr/>Temperature |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The x,<wbr/>y whitepoint of the |
| flash</p> |
| </td> |
| |
| <td class="entry_units"> |
| pair of floats |
| </td> |
| |
| <td class="entry_range"> |
| <p>0-1 for both</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_ADV">ADV</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.flash.maxEnergy"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>flash.<wbr/>max<wbr/>Energy |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Max energy output of the flash for a full |
| power single flash</p> |
| </td> |
| |
| <td class="entry_units"> |
| lumen-seconds |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_ADV">ADV</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.flash.firingPower"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>flash.<wbr/>firing<wbr/>Power |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Power for flash firing/<wbr/>torch</p> |
| </td> |
| |
| <td class="entry_units"> |
| 10 is max power; 0 is no flash.<wbr/> Linear |
| </td> |
| |
| <td class="entry_range"> |
| <p>0 - 10</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Power for snapshot may use a different scale than |
| for torch mode.<wbr/> Only one entry for torch mode will be |
| used</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.flash.firingTime"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>flash.<wbr/>firing<wbr/>Time |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Firing time of flash relative to start of |
| exposure</p> |
| </td> |
| |
| <td class="entry_units"> |
| nanoseconds |
| </td> |
| |
| <td class="entry_range"> |
| <p>0-(exposure time-flash duration)</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Clamped to (0,<wbr/> exposure time - flash |
| duration).<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.flash.mode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>flash.<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</span> |
| <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SINGLE</span> |
| <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash |
| for this capture based on <a href="#controls_android.flash.firingPower">android.<wbr/>flash.<wbr/>firing<wbr/>Power</a> and |
| <a href="#controls_android.flash.firingTime">android.<wbr/>flash.<wbr/>firing<wbr/>Time</a>.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TORCH</span> |
| <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The desired mode for for the camera device's flash control.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This control is only effective when flash unit is available |
| (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p> |
| <p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/> |
| Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> |
| ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p> |
| <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p> |
| <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera |
| device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this |
| control should be used along with AE precapture metering sequence |
| (<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>),<wbr/> otherwise,<wbr/> the image may be incorrectly exposed.<wbr/></p> |
| <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used |
| for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p> |
| <p>The flash status will be reported by <a href="#dynamic_android.flash.state">android.<wbr/>flash.<wbr/>state</a> in the capture result metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.flash.state"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>flash.<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">UNAVAILABLE</span> |
| <span class="entry_type_enum_notes"><p>No flash on camera</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CHARGING</span> |
| <span class="entry_type_enum_notes"><p>if <a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is true Flash is |
| charging and cannot be fired</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">READY</span> |
| <span class="entry_type_enum_notes"><p>if <a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is true Flash is |
| ready to fire</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FIRED</span> |
| <span class="entry_type_enum_notes"><p>if <a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is true Flash fired |
| for this capture</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current state of the flash |
| unit.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When the camera device doesn't have flash unit |
| (i.<wbr/>e.<wbr/> <code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == false</code>),<wbr/> this state will always be UNAVAILABLE.<wbr/> |
| Other states indicate the current flash status.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_geometric" class="section">geometric</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.geometric.mode"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>geometric.<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">OFF</span> |
| <span class="entry_type_enum_notes"><p>No geometric correction is |
| applied</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to raw |
| bayer output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high |
| quality</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Operating mode of geometric |
| correction</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.geometric.strength"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>geometric.<wbr/>strength |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Control the amount of shading correction |
| applied to the images</p> |
| </td> |
| |
| <td class="entry_units"> |
| unitless: 1-10; 10 is full shading |
| compensation |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_ADV">ADV</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.hotPixel.mode"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>hot<wbr/>Pixel.<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">OFF</span> |
| <span class="entry_type_enum_notes"><p>No hot pixel correction can be |
| applied</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Frame rate must not be reduced compared to raw |
| Bayer output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high |
| quality</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Set operational mode for hot pixel |
| correction</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.hotPixel.info.map"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>hot<wbr/>Pixel.<wbr/>info.<wbr/>map |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 x n |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Location of hot/<wbr/>defective pixels on |
| sensor</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_ADV">ADV</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.hotPixel.mode"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>hot<wbr/>Pixel.<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">OFF</span> |
| <span class="entry_type_enum_notes"><p>No hot pixel correction can be |
| applied</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Frame rate must not be reduced compared to raw |
| Bayer output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high |
| quality</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Set operational mode for hot pixel |
| correction</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.jpeg.gpsCoordinates"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">double</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 3 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>GPS coordinates to include in output JPEG |
| EXIF</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [public as string]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>32 characters describing GPS algorithm to |
| include in EXIF</p> |
| </td> |
| |
| <td class="entry_units"> |
| UTF-8 null-terminated string |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.jpeg.gpsTimestamp"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Time GPS fix was made to include in |
| EXIF</p> |
| </td> |
| |
| <td class="entry_units"> |
| UTC in seconds since January 1,<wbr/> 1970 |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.jpeg.orientation"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>orientation |
| </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>Orientation of JPEG image to |
| write</p> |
| </td> |
| |
| <td class="entry_units"> |
| Degrees in multiples of 90 |
| </td> |
| |
| <td class="entry_range"> |
| <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.jpeg.quality"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>jpeg.<wbr/>quality |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Compression quality of the final JPEG |
| image</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>1-100; larger is higher quality</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>85-95 is typical usage range</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.jpeg.thumbnailQuality"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Compression quality of JPEG |
| thumbnail</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>1-100; larger is higher quality</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.jpeg.thumbnailSize"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [public as size]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Resolution of embedded JPEG thumbnail</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Size must be one of the size from <a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> |
| but the captured JPEG will still be a valid image.<wbr/></p> |
| <p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have |
| the same aspect ratio as the jpeg image.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.jpeg.availableThumbnailSizes"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 x n |
| </span> |
| <span class="entry_type_visibility"> [public as size]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Supported resolutions for the JPEG thumbnail</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Will include at least one valid resolution,<wbr/> plus |
| (0,<wbr/>0) for no thumbnail generation,<wbr/> and each size will be distinct.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Below condiditions will be satisfied for this size list:</p> |
| <ul> |
| <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/> |
| If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li> |
| <li>The aspect ratio of the largest thumbnail size will be same as the |
| aspect ratio of largest size in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/> |
| The largest size is defined as the size that has the largest pixel area |
| in a given size list.<wbr/></li> |
| <li>Each size in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a> will have at least |
| one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/> |
| and vice versa.<wbr/></li> |
| <li>All non (0,<wbr/> 0) sizes will have non-zero widths and heights.<wbr/></li> |
| </ul> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.jpeg.maxSize"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>jpeg.<wbr/>max<wbr/>Size |
| </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>Maximum size in bytes for the compressed |
| JPEG buffer</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Must be large enough to fit any JPEG produced by |
| the camera</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This is used for sizing the gralloc buffers for |
| JPEG</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">double</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 3 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>GPS coordinates to include in output JPEG |
| EXIF</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [public as string]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>32 characters describing GPS algorithm to |
| include in EXIF</p> |
| </td> |
| |
| <td class="entry_units"> |
| UTF-8 null-terminated string |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Time GPS fix was made to include in |
| EXIF</p> |
| </td> |
| |
| <td class="entry_units"> |
| UTC in seconds since January 1,<wbr/> 1970 |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.jpeg.orientation"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>orientation |
| </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>Orientation of JPEG image to |
| write</p> |
| </td> |
| |
| <td class="entry_units"> |
| Degrees in multiples of 90 |
| </td> |
| |
| <td class="entry_range"> |
| <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.jpeg.quality"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>jpeg.<wbr/>quality |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Compression quality of the final JPEG |
| image</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>1-100; larger is higher quality</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>85-95 is typical usage range</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.jpeg.size"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>jpeg.<wbr/>size |
| </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 size of the compressed JPEG image,<wbr/> in |
| bytes</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If no JPEG output is produced for the request,<wbr/> |
| this must be 0.<wbr/></p> |
| <p>Otherwise,<wbr/> this describes the real size of the compressed |
| JPEG image placed in the output stream.<wbr/> More specifically,<wbr/> |
| if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture |
| has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from |
| the JPEG stream will be 1000000 bytes,<wbr/> of which the first |
| 500000 make up the real data.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Compression quality of JPEG |
| thumbnail</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>1-100; larger is higher quality</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.jpeg.thumbnailSize"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [public as size]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Resolution of embedded JPEG thumbnail</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Size must be one of the size from <a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/> |
| but the captured JPEG will still be a valid image.<wbr/></p> |
| <p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have |
| the same aspect ratio as the jpeg image.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_lens" class="section">lens</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.lens.aperture"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>aperture |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The ratio of lens focal length to the effective |
| aperture diameter.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| f-number (f/<wbr/>NNN) |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This will only be supported on the camera devices that |
| have variable aperture lens.<wbr/> The aperture value can only be |
| one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p> |
| <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> |
| this can be set along with <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 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration |
| to achieve manual exposure control.<wbr/></p> |
| <p>The requested aperture value may take several frames to reach the |
| requested value; the camera device will report the current (intermediate) |
| aperture size in capture result metadata while the aperture is changing.<wbr/> |
| While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> |
| <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of |
| the ON modes,<wbr/> this will be overridden by the camera device |
| auto-exposure algorithm,<wbr/> the overridden values are then provided |
| back to the user in the corresponding result.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.lens.filterDensity"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>filter<wbr/>Density |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>State of lens neutral density filter(s).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| Steps of Exposure Value (EV).<wbr/> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This will not be supported on most camera devices.<wbr/> On devices |
| where this is supported,<wbr/> this may only be set to one of the |
| values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p> |
| <p>Lens filters are typically used to lower the amount of light the |
| sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV |
| step is the standard logarithmic representation,<wbr/> which are |
| non-negative,<wbr/> and inversely proportional to the amount of light |
| hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result |
| in no reduction of the incoming light,<wbr/> and setting this to 2 would |
| mean that the filter is set to reduce incoming light by two stops |
| (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> |
| <p>It may take several frames before the lens filter density changes |
| to the requested value.<wbr/> While the filter density is still changing,<wbr/> |
| <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.lens.focalLength"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>focal<wbr/>Length |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The current lens focal length; used for optical zoom.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| focal length in mm |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This setting controls the physical focal length of the camera |
| device's lens.<wbr/> Changing the focal length changes the field of |
| view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> |
| <p>Like <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> this |
| setting won't be applied instantaneously,<wbr/> and it may take several |
| frames before the lens can change to the requested focal length.<wbr/> |
| While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will |
| be set to MOVING.<wbr/></p> |
| <p>This is expected not to be supported on most devices.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.lens.focusDistance"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>focus<wbr/>Distance |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Distance to plane of sharpest focus,<wbr/> |
| measured from frontmost surface of the lens</p> |
| </td> |
| |
| <td class="entry_units"> |
| See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>0 means infinity focus.<wbr/> Used value will be clamped |
| to [0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>].<wbr/></p> |
| <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied |
| instantaneously,<wbr/> and it may take several frames before the lens |
| can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/> |
| <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.lens.opticalStabilizationMode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>optical<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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| <span class="entry_type_enum_optional">optional</span> |
| <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Sets whether the camera device uses optical image stabilization (OIS) |
| when capturing images.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>OIS is used to compensate for motion blur due to small movements of |
| the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes |
| use of mechanical elements to stabilize the camera sensor,<wbr/> and thus |
| allows for longer exposure times before camera shake becomes |
| apparent.<wbr/></p> |
| <p>This is not expected to be supported on most devices.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.lens.info.availableApertures"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of supported aperture |
| values.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>one entry required,<wbr/> > 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If the camera device doesn't support variable apertures,<wbr/> |
| listed value will be the fixed aperture.<wbr/></p> |
| <p>If the camera device supports variable apertures,<wbr/> the aperture value |
| in this list will be sorted in ascending order.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.info.availableFilterDensities"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of supported neutral density filter values for |
| <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>At least one value is required.<wbr/> Values must be >= 0.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If changing <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> is not supported,<wbr/> |
| availableFilterDensities must contain only 0.<wbr/> Otherwise,<wbr/> this |
| list contains only the exact filter density values available on |
| this camera device.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.info.availableFocalLengths"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">The list of available focal lengths</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The available focal lengths for this device for use with |
| <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Each value in this list must be > 0.<wbr/> This list must |
| contain at least one value.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If optical zoom is not supported,<wbr/> this will only report |
| a single value corresponding to the static focal length of the |
| device.<wbr/> Otherwise,<wbr/> this will report every focal length supported |
| by the device.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.info.availableOpticalStabilization"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">list of enums</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List containing a subset of the optical image |
| stabilization (OIS) modes specified in |
| <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If OIS is not implemented for a given camera device,<wbr/> this should |
| contain only OFF.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.info.geometricCorrectionMap"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>geometric<wbr/>Correction<wbr/>Map |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 x 3 x n x m |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">2D array of destination coordinate pairs for uniform grid points in source image,<wbr/> per color channel.<wbr/> Size in the range of 2x3x40x30</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>A low-resolution map for correction of |
| geometric distortions and chromatic aberrations,<wbr/> per |
| color channel</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>N,<wbr/> M >= 2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>[DNG wants a function instead].<wbr/> What's easiest |
| for implementers? With an array size (M,<wbr/> N),<wbr/> entry (i,<wbr/> |
| j) provides the destination for pixel (i/<wbr/>(M-1) * width,<wbr/> |
| j/<wbr/>(N-1) * height).<wbr/> Data is row-major,<wbr/> with each array |
| entry being ( (X,<wbr/> Y)_<wbr/>r,<wbr/> (X,<wbr/> Y)_<wbr/>g,<wbr/> (X,<wbr/> Y)_<wbr/>b ) )</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.info.geometricCorrectionMapSize"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>geometric<wbr/>Correction<wbr/>Map<wbr/>Size |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [system as size]</span> |
| <div class="entry_type_notes">width and height of geometric correction map</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Dimensions of geometric correction |
| map</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Both values >= 2</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.info.hyperfocalDistance"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Optional.<wbr/> Hyperfocal distance for this lens.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If the lens is fixed focus,<wbr/> the camera device will report 0.<wbr/></p> |
| <p>If the lens is not fixed focus,<wbr/> the camera device will report this |
| field when <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> is APPROXIMATE or CALIBRATED.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.info.minimumFocusDistance"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Shortest distance from frontmost surface |
| of the lens that can be focused correctly.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If the lens is fixed-focus,<wbr/> this should be |
| 0.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.info.shadingMapSize"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [public as size]</span> |
| <div class="entry_type_notes">width and height of lens shading map provided by the HAL.<wbr/> (N x M)</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Dimensions of lens shading map.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Both values >= 1</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The map should be on the order of 30-40 rows and columns,<wbr/> and |
| must be smaller than 64x64.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.info.focusDistanceCalibration"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration |
| </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">UNCALIBRATED</span> |
| <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for |
| <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/> |
| Setting the lens to the same focus distance on separate occasions may |
| result in a different real focus distance,<wbr/> depending on factors such |
| as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> |
| and the device temperature.<wbr/> The focus distance value will still be |
| in the range of <code>[0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>,<wbr/> where 0 |
| represents the farthest focus.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">APPROXIMATE</span> |
| <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> However,<wbr/> setting the lens |
| to the same focus distance on separate occasions may result in a |
| different real focus distance,<wbr/> depending on factors such as the |
| orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> and |
| the device temperature.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CALIBRATED</span> |
| <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> The lens mechanism is |
| calibrated so that setting the same focus distance is repeatable on |
| multiple occasions with good accuracy,<wbr/> and the focus distance corresponds |
| to the real physical distance to the plane of best focus.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The lens focus distance calibration quality.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The lens focus distance calibration quality determines the reliability of |
| focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> |
| <a href="#dynamic_android.lens.focusRange">android.<wbr/>lens.<wbr/>focus<wbr/>Range</a>,<wbr/> <a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a>,<wbr/> and |
| <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.lens.facing"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>lens.<wbr/>facing |
| </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">FRONT</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BACK</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Direction the camera faces relative to |
| device screen</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.opticalAxisAngle"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>optical<wbr/>Axis<wbr/>Angle |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">degrees.<wbr/> First defines the angle of separation between the perpendicular to the screen and the camera optical axis.<wbr/> The second then defines the clockwise rotation of the optical axis from native device up.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Relative angle of camera optical axis to the |
| perpendicular axis from the display</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>[0-90) for first angle,<wbr/> [0-360) for second</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_ADV">ADV</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Examples:</p> |
| <p>(0,<wbr/>0) means that the camera optical axis |
| is perpendicular to the display surface;</p> |
| <p>(45,<wbr/>0) means that the camera points 45 degrees up when |
| device is held upright;</p> |
| <p>(45,<wbr/>90) means the camera points 45 degrees to the right when |
| the device is held upright.<wbr/></p> |
| <p>Use FACING field to determine perpendicular outgoing |
| direction</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.lens.position"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>lens.<wbr/>position |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 3, location in mm, in the sensor coordinate |
| system |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Coordinates of camera optical axis on |
| device</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.lens.aperture"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>aperture |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The ratio of lens focal length to the effective |
| aperture diameter.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| f-number (f/<wbr/>NNN) |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This will only be supported on the camera devices that |
| have variable aperture lens.<wbr/> The aperture value can only be |
| one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p> |
| <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> |
| this can be set along with <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 android.<wbr/>sensor.<wbr/>frame<wbr/>Duration |
| to achieve manual exposure control.<wbr/></p> |
| <p>The requested aperture value may take several frames to reach the |
| requested value; the camera device will report the current (intermediate) |
| aperture size in capture result metadata while the aperture is changing.<wbr/> |
| While the aperture is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> |
| <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of |
| the ON modes,<wbr/> this will be overridden by the camera device |
| auto-exposure algorithm,<wbr/> the overridden values are then provided |
| back to the user in the corresponding result.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.lens.filterDensity"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>filter<wbr/>Density |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>State of lens neutral density filter(s).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| Steps of Exposure Value (EV).<wbr/> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This will not be supported on most camera devices.<wbr/> On devices |
| where this is supported,<wbr/> this may only be set to one of the |
| values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p> |
| <p>Lens filters are typically used to lower the amount of light the |
| sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV |
| step is the standard logarithmic representation,<wbr/> which are |
| non-negative,<wbr/> and inversely proportional to the amount of light |
| hitting the sensor.<wbr/> For example,<wbr/> setting this to 0 would result |
| in no reduction of the incoming light,<wbr/> and setting this to 2 would |
| mean that the filter is set to reduce incoming light by two stops |
| (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p> |
| <p>It may take several frames before the lens filter density changes |
| to the requested value.<wbr/> While the filter density is still changing,<wbr/> |
| <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.lens.focalLength"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>focal<wbr/>Length |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The current lens focal length; used for optical zoom.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| focal length in mm |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This setting controls the physical focal length of the camera |
| device's lens.<wbr/> Changing the focal length changes the field of |
| view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p> |
| <p>Like <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> this |
| setting won't be applied instantaneously,<wbr/> and it may take several |
| frames before the lens can change to the requested focal length.<wbr/> |
| While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will |
| be set to MOVING.<wbr/></p> |
| <p>This is expected not to be supported on most devices.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.lens.focusDistance"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>focus<wbr/>Distance |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Distance to plane of sharpest focus,<wbr/> |
| measured from frontmost surface of the lens</p> |
| </td> |
| |
| <td class="entry_units"> |
| See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Should be zero for fixed-focus cameras</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.lens.focusRange"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>focus<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]</span> |
| <div class="entry_type_notes">Range of scene distances that are in focus</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The range of scene distances that are in |
| sharp focus (depth of field)</p> |
| </td> |
| |
| <td class="entry_units"> |
| pair of focus distances in diopters: (near,<wbr/> |
| far),<wbr/> see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>=0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If variable focus not supported,<wbr/> can still report |
| fixed depth of field range</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<wbr/>optical<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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| <span class="entry_type_enum_optional">optional</span> |
| <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Sets whether the camera device uses optical image stabilization (OIS) |
| when capturing images.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>OIS is used to compensate for motion blur due to small movements of |
| the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes |
| use of mechanical elements to stabilize the camera sensor,<wbr/> and thus |
| allows for longer exposure times before camera shake becomes |
| apparent.<wbr/></p> |
| <p>This is not expected to be supported on most devices.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.lens.state"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>lens.<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">STATIONARY</span> |
| <span class="entry_type_enum_notes"><p>The lens parameters (<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> android.<wbr/>lens.<wbr/>focus<wbr/>Distance |
| android.<wbr/>lens.<wbr/>filter<wbr/>Density and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) are not changing.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MOVING</span> |
| <span class="entry_type_enum_notes"><p>Any of the lens parameters (<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> android.<wbr/>lens.<wbr/>focus<wbr/>Distance |
| android.<wbr/>lens.<wbr/>filter<wbr/>Density or <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) is changing.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current lens status.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>For lens parameters <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/> |
| <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> when changes are requested,<wbr/> |
| they may take several frames to reach the requested values.<wbr/> This state indicates |
| the current status of the lens parameters.<wbr/></p> |
| <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be |
| either because the parameters are all fixed,<wbr/> or because the lens has had enough |
| time to reach the most recently-requested values.<wbr/> |
| If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p> |
| <ul> |
| <li>Fixed focus (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> == 0</code>),<wbr/> which means |
| <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li> |
| <li>Fixed focal length (<a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a> contains single value),<wbr/> |
| which means the optical zoom is not supported.<wbr/></li> |
| <li>No ND filter (<a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a> contains only 0).<wbr/></li> |
| <li>Fixed aperture (<a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a> contains single value).<wbr/></li> |
| </ul> |
| <p>Then this state will always be STATIONARY.<wbr/></p> |
| <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters |
| is changing.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.noiseReduction.mode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>noise<wbr/>Reduction.<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</span> |
| <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor |
| output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest |
| quality</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Mode of operation for the noise reduction |
| algorithm</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Modes</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Noise filtering control.<wbr/> OFF means no noise reduction |
| will be applied by the HAL.<wbr/></p> |
| <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering |
| will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device |
| will use the highest-quality noise filtering algorithms,<wbr/> |
| even if it slows down capture rate.<wbr/> FAST means the camera device should not |
| slow down capture rate when applying noise filtering.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.noiseReduction.strength"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>noise<wbr/>Reduction.<wbr/>strength |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Control the amount of noise reduction |
| applied to the images</p> |
| </td> |
| |
| <td class="entry_units"> |
| 1-10; 10 is max noise reduction |
| </td> |
| |
| <td class="entry_range"> |
| <p>1 - 10</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.noiseReduction.mode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>noise<wbr/>Reduction.<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</span> |
| <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor |
| output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest |
| quality</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Mode of operation for the noise reduction |
| algorithm</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Modes</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Noise filtering control.<wbr/> OFF means no noise reduction |
| will be applied by the HAL.<wbr/></p> |
| <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering |
| will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device |
| will use the highest-quality noise filtering algorithms,<wbr/> |
| even if it slows down capture rate.<wbr/> FAST means the camera device should not |
| slow down capture rate when applying noise filtering.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.quirks.meteringCropRegion"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>If set to 1,<wbr/> the camera service does not |
| scale 'normalized' coordinates with respect to the crop |
| region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region |
| and output (face rectangles).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Normalized coordinates refer to those in the |
| (-1000,<wbr/>1000) range mentioned in the |
| android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p> |
| <p>HAL implementations should instead always use and emit |
| sensor array-relative coordinates for all region data.<wbr/> Does |
| not need to be listed in static metadata.<wbr/> Support will be |
| removed in future versions of camera service.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.quirks.triggerAfWithAuto"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>If set to 1,<wbr/> then the camera service always |
| switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF |
| trigger.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>HAL implementations should implement AF trigger |
| modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and |
| CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does |
| not need to be listed in static metadata.<wbr/> Support will be |
| removed in future versions of camera service</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.quirks.useZslFormat"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>If set to 1,<wbr/> the camera service uses |
| CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of |
| HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero |
| shutter lag stream</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>HAL implementations should use gralloc usage flags |
| to determine that a stream will be used for |
| zero-shutter-lag,<wbr/> instead of relying on an explicit |
| format setting.<wbr/> Does not need to be listed in static |
| metadata.<wbr/> Support will be removed in future versions of |
| camera service.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.quirks.usePartialResult"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [hidden]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>If set to 1,<wbr/> the HAL will always split result |
| metadata for a single capture into multiple buffers,<wbr/> |
| returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Does not need to be listed in static |
| metadata.<wbr/> Support for partial results will be reworked in |
| future versions of camera service.<wbr/> This quirk will stop |
| working at that point; DO NOT USE without careful |
| consideration of future support.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> |
| for information on how to implement partial results.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.quirks.partialResult"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>quirks.<wbr/>partial<wbr/>Result |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [hidden as boolean]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">FINAL</span> |
| <span class="entry_type_enum_notes"><p>The last or only metadata result buffer |
| for this capture.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PARTIAL</span> |
| <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this |
| capture.<wbr/> More result buffers for this capture will be sent |
| by the HAL,<wbr/> the last of which will be marked |
| FINAL.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether a result given to the framework is the |
| final one for the capture,<wbr/> or only a partial that contains a |
| subset of the full set of dynamic metadata |
| values.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> Optional.<wbr/> Default value is FINAL.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The entries in the result metadata buffers for a |
| single capture may not overlap,<wbr/> except for this entry.<wbr/> The |
| FINAL buffers must retain FIFO ordering relative to the |
| requests that generate them,<wbr/> so the FINAL buffer for frame 3 must |
| always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and |
| before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned |
| in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given |
| capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may |
| only be used by the HAL if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code> |
| for information on how to implement partial results.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_request" class="section">request</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.request.frameCount"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>request.<wbr/>frame<wbr/>Count |
| </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>A frame counter set by the framework.<wbr/> Must |
| be maintained unchanged in output frame.<wbr/> This value monotonically |
| increases with every new result (that is,<wbr/> each new result has a unique |
| frameCount value).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| incrementing integer |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> Any int.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.request.id"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>request.<wbr/>id |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [hidden]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>An application-specified ID for the current |
| request.<wbr/> Must be maintained unchanged in output |
| frame</p> |
| </td> |
| |
| <td class="entry_units"> |
| arbitrary integer assigned by application |
| </td> |
| |
| <td class="entry_range"> |
| <p>Any int</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.request.inputStreams"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>request.<wbr/>input<wbr/>Streams |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List which camera reprocess stream is used |
| for the source of reprocessing data.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| List of camera reprocess stream IDs |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> |
| <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p> |
| <p>If android.<wbr/>jpeg.<wbr/>needs<wbr/>Thumbnail is set,<wbr/> then multiple |
| reprocess streams may be included in a single request; they |
| must be different scaled versions of the same image.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_HAL2">HAL2</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> == |
| REPROCESS.<wbr/> Ignored otherwise</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.request.metadataMode"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>request.<wbr/>metadata<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">NONE</span> |
| <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except |
| for application-bound buffer data.<wbr/> If no |
| application-bound streams exist,<wbr/> no frame should be |
| placed in the output frame queue.<wbr/> If such streams |
| exist,<wbr/> a frame should be placed on the output queue |
| with null metadata but with the necessary output buffer |
| information.<wbr/> Timestamp information should still be |
| included with any output stream buffers</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FULL</span> |
| <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will |
| only be produced if they are separately |
| enabled</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>How much metadata to produce on |
| output</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.request.outputStreams"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>request.<wbr/>output<wbr/>Streams |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Lists which camera output streams image data |
| from this capture must be sent to</p> |
| </td> |
| |
| <td class="entry_units"> |
| List of camera stream IDs |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> List must only include streams that have been |
| created</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_HAL2">HAL2</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If no output streams are listed,<wbr/> then the image |
| data should simply be discarded.<wbr/> The image data must |
| still be captured for metadata and statistics production,<wbr/> |
| and the lens and flash must operate as requested.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.request.type"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>request.<wbr/>type |
| </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">CAPTURE</span> |
| <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/> |
| and process it according to the |
| settings</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">REPROCESS</span> |
| <span class="entry_type_enum_notes"><p>Process previously captured data; the |
| android.<wbr/>request.<wbr/>input<wbr/>Stream parameter determines the |
| source reprocessing stream.<wbr/> TODO: Mark dynamic metadata |
| needed for reprocessing with [RP]</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The type of the request; either CAPTURE or |
| REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_HAL2">HAL2</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.request.maxNumOutputStreams"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 3 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The maximum numbers of different types of output streams |
| that can be configured and used simultaneously by a camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 1 for JPEG-compressed format streams.<wbr/></p> |
| <p>>= 0 for Raw format streams.<wbr/></p> |
| <p>>= 3 for processed,<wbr/> uncompressed format streams.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This is a 3 element tuple that contains the max number of output simultaneous |
| streams for raw sensor,<wbr/> processed (and uncompressed),<wbr/> and JPEG formats respectively.<wbr/> |
| For example,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams |
| number is 3,<wbr/> and max JPEG stream number is 2,<wbr/> then this tuple should be <code>(1,<wbr/> 3,<wbr/> 2)</code>.<wbr/></p> |
| <p>This lists the upper bound of the number of output streams supported by |
| the camera device.<wbr/> Using more streams simultaneously may require more hardware and |
| CPU resources that will consume more power.<wbr/> The image format for a output stream can |
| be any supported format provided by <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a>.<wbr/> The formats |
| defined in <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a> can be catergorized into the 3 stream types |
| as below:</p> |
| <ul> |
| <li>JPEG-compressed format: BLOB.<wbr/></li> |
| <li>Raw formats: RAW_<wbr/>SENSOR and RAW_<wbr/>OPAQUE.<wbr/></li> |
| <li>processed,<wbr/> uncompressed formats: YCb<wbr/>Cr_<wbr/>420_<wbr/>888,<wbr/> YCr<wbr/>Cb_<wbr/>420_<wbr/>SP,<wbr/> YV12.<wbr/></li> |
| </ul> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.request.maxNumReprocessStreams"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 1 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>How many reprocessing streams of any type |
| can be allocated at the same time.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_HAL2">HAL2</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p><strong>Deprecated</strong>.<wbr/> Only used by HAL2.<wbr/>x.<wbr/></p> |
| <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.request.maxNumInputStreams"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams |
| </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 maximum numbers of any type of input streams |
| that can be configured and used simultaneously by a camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0 for LIMITED mode device (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/> |
| >= 1 for FULL mode device (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>).<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p> |
| <p>The image format for a input stream can be any supported format provided |
| by android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Formats.<wbr/> When using an input stream,<wbr/> there must be |
| at least one output stream configured to to receive the reprocessed images.<wbr/></p> |
| <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input |
| stream image format will be RAW_<wbr/>OPAQUE,<wbr/> the associated output stream image format |
| should be JPEG.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.request.pipelineMaxDepth"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Specifies the number of maximum pipeline stages a frame |
| has to go through from when it's exposed to when it's available |
| to the framework.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>A typical minimum value for this is 2 (one stage to expose,<wbr/> |
| one stage to readout) from the sensor.<wbr/> The ISP then usually adds |
| its own stages to do custom HW processing.<wbr/> Further stages may be |
| added by SW processing.<wbr/></p> |
| <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what |
| processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline |
| depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than |
| the max pipeline depth.<wbr/></p> |
| <p>A pipeline depth of X stages is equivalent to a pipeline latency of |
| X frame intervals.<wbr/></p> |
| <p>This value will be 8 or less.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This value should be 4 or less.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.request.partialResultCount"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count |
| </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>Optional.<wbr/> Defaults to 1.<wbr/> Defines how many sub-components |
| a result will be composed of.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 1</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>In order to combat the pipeline latency,<wbr/> partial results |
| may be delivered to the application layer from the camera device as |
| soon as they are available.<wbr/></p> |
| <p>A value of 1 means that partial results are not supported.<wbr/></p> |
| <p>A typical use case for this might be: after requesting an AF lock the |
| new AF state might be available 50% of the way through the pipeline.<wbr/> |
| The camera device could then immediately dispatch this state via a |
| partial result to the framework/<wbr/>application layer,<wbr/> and the rest of |
| the metadata via later partial results.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.request.frameCount"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>request.<wbr/>frame<wbr/>Count |
| </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>A frame counter set by the framework.<wbr/> This value monotonically |
| increases with every new result (that is,<wbr/> each new result has a unique |
| frameCount value).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| count of frames |
| </td> |
| |
| <td class="entry_range"> |
| <p>> 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Reset on release()</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.request.id"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>request.<wbr/>id |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [hidden]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>An application-specified ID for the current |
| request.<wbr/> Must be maintained unchanged in output |
| frame</p> |
| </td> |
| |
| <td class="entry_units"> |
| arbitrary integer assigned by application |
| </td> |
| |
| <td class="entry_range"> |
| <p>Any int</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.request.metadataMode"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>request.<wbr/>metadata<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">NONE</span> |
| <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except |
| for application-bound buffer data.<wbr/> If no |
| application-bound streams exist,<wbr/> no frame should be |
| placed in the output frame queue.<wbr/> If such streams |
| exist,<wbr/> a frame should be placed on the output queue |
| with null metadata but with the necessary output buffer |
| information.<wbr/> Timestamp information should still be |
| included with any output stream buffers</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FULL</span> |
| <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will |
| only be produced if they are separately |
| enabled</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>How much metadata to produce on |
| output</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.request.outputStreams"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>request.<wbr/>output<wbr/>Streams |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Lists which camera output streams image data |
| from this capture must be sent to</p> |
| </td> |
| |
| <td class="entry_units"> |
| List of camera stream IDs |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/> List must only include streams that have been |
| created</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_HAL2">HAL2</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If no output streams are listed,<wbr/> then the image |
| data should simply be discarded.<wbr/> The image data must |
| still be captured for metadata and statistics production,<wbr/> |
| and the lens and flash must operate as requested.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.request.pipelineDepth"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>request.<wbr/>pipeline<wbr/>Depth |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Specifies the number of pipeline stages the frame went |
| through from when it was exposed to when the final completed result |
| was available to the framework.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Depending on what settings are used in the request,<wbr/> and |
| what streams are configured,<wbr/> the data may undergo less processing,<wbr/> |
| and some pipeline stages skipped.<wbr/></p> |
| <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This value must always represent the accurate count of how many |
| pipeline stages were actually used.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.scaler.cropRegion"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>scaler.<wbr/>crop<wbr/>Region |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 4 |
| </span> |
| <span class="entry_type_visibility"> [public as rectangle]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p> |
| <p>A rectangle with the top-level corner of (x,<wbr/>y) and size |
| (width,<wbr/> height).<wbr/> The region of the sensor that is used for |
| output.<wbr/> Each stream must use this rectangle to produce its |
| output,<wbr/> cropping to a smaller region if necessary to |
| maintain the stream's aspect ratio.<wbr/></p> |
| <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> |
| </td> |
| |
| <td class="entry_units"> |
| (x,<wbr/>y) of top-left corner,<wbr/> width and height of region |
| in pixels; (0,<wbr/>0) is top-left corner of |
| android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Any additional per-stream cropping must be done to |
| maximize the final pixel area of the stream.<wbr/></p> |
| <p>For example,<wbr/> if the crop region is set to a 4:3 aspect |
| ratio,<wbr/> then 4:3 streams should use the exact crop |
| region.<wbr/> 16:9 streams should further crop vertically |
| (letterbox).<wbr/></p> |
| <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 |
| outputs should crop horizontally (pillarbox),<wbr/> and 16:9 |
| streams should match exactly.<wbr/> These additional crops must |
| be centered within the crop region.<wbr/></p> |
| <p>The output streams must maintain square pixels at all |
| times,<wbr/> no matter what the relative aspect ratios of the |
| crop region and the stream are.<wbr/> Negative values for |
| corner are allowed for raw output if full pixel array is |
| larger than active pixel array.<wbr/> Width and height may be |
| rounded to nearest larger supportable width,<wbr/> especially |
| for raw output,<wbr/> where only a few fixed scales may be |
| possible.<wbr/> The width and height of the crop region cannot |
| be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/> |
| android.<wbr/>scaler.<wbr/>max<wbr/>Digital<wbr/>Zoom ) and floor( |
| activeArraySize.<wbr/>height /<wbr/> android.<wbr/>scaler.<wbr/>max<wbr/>Digital<wbr/>Zoom),<wbr/> |
| respectively.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.scaler.availableFormats"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>scaler.<wbr/>available<wbr/>Formats |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public as imageFormat]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">RAW16</span> |
| <span class="entry_type_enum_optional">optional</span> |
| <span class="entry_type_enum_value">0x20</span> |
| <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image |
| buffers with 16-bit pixels.<wbr/> Buffers of this format are typically |
| expected to have a Bayer Color Filter Array (CFA) layout,<wbr/> which |
| is given in <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors |
| with CFAs that are not representable by a format in |
| <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not use this |
| format.<wbr/></p> |
| <p>Buffers of this format will also follow the constraints given for |
| RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p> |
| <p>See android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Formats for the full set of |
| performance guarantees.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">RAW_OPAQUE</span> |
| <span class="entry_type_enum_optional">optional</span> |
| <span class="entry_type_enum_value">0x24</span> |
| <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an |
| image sensor.<wbr/> The actual structure of buffers of this format is |
| platform-specific,<wbr/> but must follow several constraints:</p> |
| <ol> |
| <li>No image post-processing operations may have been applied to |
| buffers of this type.<wbr/> These buffers contain raw image data coming |
| directly from the image sensor.<wbr/></li> |
| <li>If a buffer of this format is passed to the camera device for |
| reprocessing,<wbr/> the resulting images will be identical to the images |
| produced if the buffer had come directly from the sensor and was |
| processed with the same settings.<wbr/></li> |
| </ol> |
| <p>The intended use for this format is to allow access to the native |
| raw format buffers coming directly from the camera sensor without |
| any additional conversions or decrease in framerate.<wbr/></p> |
| <p>See android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Formats for the full set of |
| performance guarantees.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">YV12</span> |
| <span class="entry_type_enum_optional">optional</span> |
| <span class="entry_type_enum_value">0x32315659</span> |
| <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">YCrCb_420_SP</span> |
| <span class="entry_type_enum_optional">optional</span> |
| <span class="entry_type_enum_value">0x11</span> |
| <span class="entry_type_enum_notes"><p>NV21</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span> |
| <span class="entry_type_enum_value">0x22</span> |
| <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">YCbCr_420_888</span> |
| <span class="entry_type_enum_value">0x23</span> |
| <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BLOB</span> |
| <span class="entry_type_enum_value">0x21</span> |
| <span class="entry_type_enum_notes"><p>JPEG format</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The list of image formats that are supported by this |
| camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p> |
| <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in |
| system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p> |
| <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform |
| gralloc module will select a format based on the usage flags provided |
| by the camera HAL device and the other endpoint of the stream.<wbr/> It is |
| usually used by preview and recording streams,<wbr/> where the application doesn't |
| need access the image data.<wbr/></p> |
| <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream |
| needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p> |
| <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p> |
| <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly |
| recommended that any information used by the camera device when |
| processing images is fully expressed by the result metadata |
| for that image buffer.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.scaler.availableJpegMinDurations"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The minimum frame duration that is supported |
| for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| ns |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This corresponds to the minimum steady-state frame duration when only |
| that JPEG stream is active and captured in a burst,<wbr/> with all |
| processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p> |
| <p>When multiple streams are configured,<wbr/> the minimum |
| frame duration will be >= max(individual stream min |
| durations)</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.scaler.availableJpegSizes"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 2 |
| </span> |
| <span class="entry_type_visibility"> [public as size]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The JPEG resolutions that are supported by this camera device.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support |
| sensor maximum resolution (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The HAL must include sensor maximum resolution |
| (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/> |
| and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The maximum ratio between active area width |
| and crop region width,<wbr/> or between active area height and |
| crop region height,<wbr/> if the crop region height is larger |
| than width</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>=1</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.scaler.availableProcessedMinDurations"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>For each available processed output size (defined in |
| <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the |
| minimum supportable frame duration for that size.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| ns |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This should correspond to the frame duration when only that processed |
| stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) |
| set to FAST.<wbr/></p> |
| <p>When multiple streams are configured,<wbr/> the minimum frame duration will |
| be >= max(individual stream min durations).<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.scaler.availableProcessedSizes"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 2 |
| </span> |
| <span class="entry_type_visibility"> [public as size]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The resolutions available for use with |
| processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and |
| platform opaque YUV/<wbr/>RGB streams to the GPU or video |
| encoders.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p> |
| <p>For a given use case,<wbr/> the actual maximum supported resolution |
| may be lower than what is listed here,<wbr/> depending on the destination |
| Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/> |
| the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p) |
| smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448) |
| can provide.<wbr/></p> |
| <p>Please reference the documentation for the image data destination to |
| check if it limits the maximum size for image data.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>For FULL capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>),<wbr/> |
| the HAL must include all JPEG sizes listed in android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes |
| and each below resolution if it is smaller than or equal to the sensor |
| maximum resolution (if they are not listed in JPEG sizes already):</p> |
| <ul> |
| <li>240p (320 x 240)</li> |
| <li>480p (640 x 480)</li> |
| <li>720p (1280 x 720)</li> |
| <li>1080p (1920 x 1080)</li> |
| </ul> |
| <p>For LIMITED capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/> |
| the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.scaler.availableRawMinDurations"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>For each available raw output size (defined in |
| <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum |
| supportable frame duration for that size.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| ns |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Should correspond to the frame duration when only the raw stream is |
| active.<wbr/></p> |
| <p>When multiple streams are configured,<wbr/> the minimum |
| frame duration will be >= max(individual stream min |
| durations)</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.scaler.availableRawSizes"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 2 |
| </span> |
| <span class="entry_type_visibility"> [system as size]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The resolutions available for use with raw |
| sensor output streams,<wbr/> listed as width,<wbr/> |
| height</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Must include: - sensor maximum resolution</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.scaler.cropRegion"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>scaler.<wbr/>crop<wbr/>Region |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 4 |
| </span> |
| <span class="entry_type_visibility"> [public as rectangle]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p> |
| <p>A rectangle with the top-level corner of (x,<wbr/>y) and size |
| (width,<wbr/> height).<wbr/> The region of the sensor that is used for |
| output.<wbr/> Each stream must use this rectangle to produce its |
| output,<wbr/> cropping to a smaller region if necessary to |
| maintain the stream's aspect ratio.<wbr/></p> |
| <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p> |
| </td> |
| |
| <td class="entry_units"> |
| (x,<wbr/>y) of top-left corner,<wbr/> width and height of region |
| in pixels; (0,<wbr/>0) is top-left corner of |
| android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Any additional per-stream cropping must be done to |
| maximize the final pixel area of the stream.<wbr/></p> |
| <p>For example,<wbr/> if the crop region is set to a 4:3 aspect |
| ratio,<wbr/> then 4:3 streams should use the exact crop |
| region.<wbr/> 16:9 streams should further crop vertically |
| (letterbox).<wbr/></p> |
| <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3 |
| outputs should crop horizontally (pillarbox),<wbr/> and 16:9 |
| streams should match exactly.<wbr/> These additional crops must |
| be centered within the crop region.<wbr/></p> |
| <p>The output streams must maintain square pixels at all |
| times,<wbr/> no matter what the relative aspect ratios of the |
| crop region and the stream are.<wbr/> Negative values for |
| corner are allowed for raw output if full pixel array is |
| larger than active pixel array.<wbr/> Width and height may be |
| rounded to nearest larger supportable width,<wbr/> especially |
| for raw output,<wbr/> where only a few fixed scales may be |
| possible.<wbr/> The width and height of the crop region cannot |
| be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/> |
| android.<wbr/>scaler.<wbr/>max<wbr/>Digital<wbr/>Zoom ) and floor( |
| activeArraySize.<wbr/>height /<wbr/> android.<wbr/>scaler.<wbr/>max<wbr/>Digital<wbr/>Zoom),<wbr/> |
| respectively.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.sensor.exposureTime"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>exposure<wbr/>Time |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Duration each pixel is exposed to |
| light.<wbr/></p> |
| <p>If the sensor can't expose this exact duration,<wbr/> it should shorten the |
| duration exposed to the nearest possible value (rather than expose longer).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| nanoseconds |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>1/<wbr/>10000 - 30 sec range.<wbr/> No bulb mode</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.sensor.frameDuration"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>frame<wbr/>Duration |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Duration from start of frame exposure to |
| start of next frame exposure.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| nanoseconds |
| </td> |
| |
| <td class="entry_range"> |
| <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> |
| android.<wbr/>scaler.<wbr/>available*Min<wbr/>Durations.<wbr/> The duration |
| is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The maximum frame rate that can be supported by a camera subsystem is |
| a function of many factors:</p> |
| <ul> |
| <li>Requested resolutions of output image streams</li> |
| <li>Availability of binning /<wbr/> skipping modes on the imager</li> |
| <li>The bandwidth of the imager interface</li> |
| <li>The bandwidth of the various ISP processing blocks</li> |
| </ul> |
| <p>Since these factors can vary greatly between different ISPs and |
| sensors,<wbr/> the camera abstraction tries to represent the bandwidth |
| restrictions with as simple a model as possible.<wbr/></p> |
| <p>The model presented has the following characteristics:</p> |
| <ul> |
| <li>The image sensor is always configured to output the smallest |
| resolution possible given the application's requested output stream |
| sizes.<wbr/> The smallest resolution is defined as being at least as large |
| as the largest requested output stream size; the camera pipeline must |
| never digitally upsample sensor data when the crop region covers the |
| whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream |
| resolutions are configured,<wbr/> the sensor can provide a higher frame |
| rate.<wbr/></li> |
| <li>Since any request may use any or all the currently configured |
| output streams,<wbr/> the sensor and ISP must be configured to support |
| scaling a single capture to all the streams at the same time.<wbr/> This |
| means the camera pipeline must be ready to produce the largest |
| requested output size without any delay.<wbr/> Therefore,<wbr/> the overall |
| frame rate of a given configured stream set is governed only by the |
| largest requested stream resolution.<wbr/></li> |
| <li>Using more than one output stream in a request does not affect the |
| frame duration.<wbr/></li> |
| <li>JPEG streams act like processed YUV streams in requests for which |
| they are not included; in requests in which they are directly |
| referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a |
| JPEG stream requires the underlying YUV data to always be ready for |
| use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact |
| frame duration) on requests that actually reference a JPEG stream.<wbr/></li> |
| <li>The JPEG processor can run concurrently to the rest of the camera |
| pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> |
| </ul> |
| <p>The necessary information for the application,<wbr/> given the model above,<wbr/> |
| is provided via the android.<wbr/>scaler.<wbr/>available*Min<wbr/>Durations fields.<wbr/> |
| These are used to determine the maximum frame rate /<wbr/> minimum frame |
| duration that is possible for a given stream configuration.<wbr/></p> |
| <p>Specifically,<wbr/> the application can use the following rules to |
| determine the minimum frame duration it can request from the HAL |
| device:</p> |
| <ol> |
| <li>Given the application's currently configured set of output |
| streams,<wbr/> <code>S</code>,<wbr/> divide them into three sets: streams in a JPEG format |
| <code>SJ</code>,<wbr/> streams in a raw sensor format <code>SR</code>,<wbr/> and the rest ('processed') |
| <code>SP</code>.<wbr/></li> |
| <li>For each subset of streams,<wbr/> find the largest resolution (by pixel |
| count) in the subset.<wbr/> This gives (at most) three resolutions <code>RJ</code>,<wbr/> |
| <code>RR</code>,<wbr/> and <code>RP</code>.<wbr/></li> |
| <li>If <code>RJ</code> is greater than <code>RP</code>,<wbr/> set <code>RP</code> equal to <code>RJ</code>.<wbr/> If there is |
| no exact match for <code>RP == RJ</code> (in particular there isn't an available |
| processed resolution at the same size as <code>RJ</code>),<wbr/> then set <code>RP</code> equal |
| to the smallest processed resolution that is larger than <code>RJ</code>.<wbr/> If |
| there are no processed resolutions larger than <code>RJ</code>,<wbr/> then set <code>RJ</code> to |
| the processed resolution closest to <code>RJ</code>.<wbr/></li> |
| <li>If <code>RP</code> is greater than <code>RR</code>,<wbr/> set <code>RR</code> equal to <code>RP</code>.<wbr/> If there is |
| no exact match for <code>RR == RP</code> (in particular there isn't an available |
| raw resolution at the same size as <code>RP</code>),<wbr/> then set <code>RR</code> equal to |
| or to the smallest raw resolution that is larger than <code>RP</code>.<wbr/> If |
| there are no raw resolutions larger than <code>RP</code>,<wbr/> then set <code>RR</code> to |
| the raw resolution closest to <code>RP</code>.<wbr/></li> |
| <li>Look up the matching minimum frame durations in the property lists |
| <a href="#static_android.scaler.availableJpegMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations</a>,<wbr/> |
| <a href="#static_android.scaler.availableRawMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations</a>,<wbr/> and |
| <a href="#static_android.scaler.availableProcessedMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations</a>.<wbr/> This gives three |
| minimum frame durations <code>FJ</code>,<wbr/> <code>FR</code>,<wbr/> and <code>FP</code>.<wbr/></li> |
| <li>If a stream of requests do not use a JPEG stream,<wbr/> then the minimum |
| supported frame duration for each request is <code>max(FR,<wbr/> FP)</code>.<wbr/></li> |
| <li>If a stream of requests all use the JPEG stream,<wbr/> then the minimum |
| supported frame duration for each request is <code>max(FR,<wbr/> FP,<wbr/> FJ)</code>.<wbr/></li> |
| <li>If a mix of JPEG-using and non-JPEG-using requests is submitted by |
| the application,<wbr/> then the HAL will have to delay JPEG-using requests |
| whenever the JPEG encoder is still busy processing an older capture.<wbr/> |
| This will happen whenever a JPEG-using request starts capture less |
| than <code>FJ</code> <em>ns</em> after a previous JPEG-using request.<wbr/> The minimum |
| supported frame duration will vary between the values calculated in |
| #6 and #7.<wbr/></li> |
| </ol> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.sensor.sensitivity"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>sensitivity |
| </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>Gain applied to image data.<wbr/> Must be |
| implemented through analog gain only if set to values |
| below 'maximum analog sensitivity'.<wbr/></p> |
| <p>If the sensor can't apply this exact gain,<wbr/> it should lessen the |
| gain to the nearest possible value (rather than gain more).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| ISO arithmetic units |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>ISO 12232:2006 REI method</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.sensor.testPatternData"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 4 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern |
| when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Optional.<wbr/> |
| Must be supported if <a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a> contains |
| SOLID_<wbr/>COLOR.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/> |
| The camera device then uses the most significant X bits |
| that correspond to how many bits are in its Bayer raw sensor |
| output.<wbr/></p> |
| <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the |
| 10 most significant bits from each color channel.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.sensor.testPatternMode"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode |
| </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</span> |
| <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera |
| device returns captures from the image sensor.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SOLID_COLOR</span> |
| <span class="entry_type_enum_notes"><p>Each pixel in <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> is replaced by its |
| respective color channel provided in |
| <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> |
| <p>For example:</p> |
| <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] |
| </code></pre> |
| <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> |
| <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] |
| </code></pre> |
| <p>All red pixels are 100% red.<wbr/> Only the odd green pixels |
| are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">COLOR_BARS</span> |
| <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> |
| <p>The vertical bars (left-to-right) are as follows:</p> |
| <ul> |
| <li>100% white</li> |
| <li>yellow</li> |
| <li>cyan</li> |
| <li>green</li> |
| <li>magenta</li> |
| <li>red</li> |
| <li>blue</li> |
| <li>black</li> |
| </ul> |
| <p>In general the image would look like the following:</p> |
| <pre><code>W Y C G M R B K |
| W Y C G M R B K |
| W Y C G M R B K |
| W Y C G M R B K |
| W Y C G M R B K |
| .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| |
| (B = Blue,<wbr/> K = Black) |
| </code></pre> |
| <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> |
| When this is not possible,<wbr/> the bar size should be rounded |
| down to the nearest integer and the pattern can repeat |
| on the right side.<wbr/></p> |
| <p>Each bar's height must always take up the full sensor |
| pixel array height.<wbr/></p> |
| <p>Each pixel in this test pattern must be set to either |
| 0% intensity or 100% intensity.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> |
| <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that |
| each bar should start at its specified color at the top,<wbr/> |
| and fade to gray at the bottom.<wbr/></p> |
| <p>Furthermore each bar is further subdivided into a left and |
| right half.<wbr/> The left half should have a smooth gradient,<wbr/> |
| and the right half should have a quantized gradient.<wbr/></p> |
| <p>In particular,<wbr/> the right half's should consist of blocks of the |
| same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> |
| <p>The least significant bits in the quantized gradient should |
| be copied from the most significant bits of the smooth gradient.<wbr/></p> |
| <p>The height of each bar should always be a multiple of 128.<wbr/> |
| When this is not the case,<wbr/> the pattern should repeat at the bottom |
| of the image.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PN9</span> |
| <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence |
| generated from a PN9 512-bit sequence (typically implemented |
| in hardware with a linear feedback shift register).<wbr/></p> |
| <p>The generator should be reset at the beginning of each frame,<wbr/> |
| and thus each subsequent raw frame with this test pattern should |
| be exactly the same as the last.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CUSTOM1</span> |
| <span class="entry_type_enum_value">256</span> |
| <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are |
| available only on this camera device are at least this numeric |
| value.<wbr/></p> |
| <p>All of the custom test patterns will be static |
| (that is the raw image must not vary from frame to frame).<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>When enabled,<wbr/> the sensor sends a test pattern instead of |
| doing a real exposure from the camera.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of |
| <a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified |
| by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should |
| work as normal.<wbr/></p> |
| <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still |
| occur (and that the test pattern remain unmodified,<wbr/> since the flash |
| would not actually affect it).<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>All test patterns are specified in the Bayer domain.<wbr/></p> |
| <p>The HAL may choose to substitute test patterns from the sensor |
| with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be |
| indistinguishable to the ISP whether the data came from the |
| sensor interconnect bus (such as CSI2) or memory.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.sensor.info.activeArraySize"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 4 |
| </span> |
| <span class="entry_type_visibility"> [public as rectangle]</span> |
| <div class="entry_type_notes">Four ints defining the active pixel rectangle</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Area of raw data which corresponds to only |
| active pixels.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be |
| >= <code>(0,<wbr/>0)</code>.<wbr/> The <code>(width,<wbr/> height)</code> must be <= |
| <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>It is smaller or equal to |
| sensor full pixel array,<wbr/> which could include the black calibration pixels.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.info.sensitivityRange"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<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]</span> |
| <div class="entry_type_notes">Range of supported sensitivities</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Range of valid sensitivities</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Min <= 100,<wbr/> Max >= 1600</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.info.colorFilterArrangement"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement |
| </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">RGGB</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">GRBG</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">GBRG</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BGGR</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">RGB</span> |
| <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit |
| values for each pixel,<wbr/> instead of just 1 16-bit value |
| per pixel.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Arrangement of color filters on sensor; |
| represents the colors in the top-left 2x2 section of |
| the sensor,<wbr/> in reading order</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.info.exposureTimeRange"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">nanoseconds</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Range of valid exposure |
| times used by <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Min <= 100e3 (100 us),<wbr/> Max >= 1e9 (1 |
| sec)</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The maximum of the range must be at least |
| 1 second.<wbr/> It should be at least 30 seconds.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.info.maxFrameDuration"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Maximum possible frame duration (minimum frame |
| rate).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| nanoseconds |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 30e9</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The largest possible android.<wbr/>sensor.<wbr/>frame<wbr/>Duration |
| that will be accepted by the camera device.<wbr/> Attempting to use |
| frame durations beyond the maximum will result in the frame duration |
| being clipped to the maximum.<wbr/> See that control |
| for a full definition of frame durations.<wbr/></p> |
| <p>Refer to |
| <a href="#static_android.scaler.availableProcessedMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations</a>,<wbr/> |
| <a href="#static_android.scaler.availableJpegMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations</a>,<wbr/> and |
| <a href="#static_android.scaler.availableRawMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations</a> for the minimum |
| frame duration values.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This value must be at least 1 second.<wbr/> It should be at least 30 |
| seconds (30e9 ns).<wbr/></p> |
| <p>android.<wbr/>sensor.<wbr/>max<wbr/>Frame<wbr/>Duration must be greater or equal to the |
| android.<wbr/>sensor.<wbr/>exposure<wbr/>Time<wbr/>Range max value (since exposure time |
| overrides frame duration).<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.info.physicalSize"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">width x height in millimeters</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The physical dimensions of the full pixel |
| array</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Needed for FOV calculation for old API</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.info.pixelArraySize"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [system as size]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Dimensions of full pixel array,<wbr/> possibly |
| including black calibration pixels.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The maximum output resolution for raw format in |
| <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a> will be equal to this size.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.info.whiteLevel"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level |
| </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>Maximum raw value output by |
| sensor</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>> 1024 (10-bit output)</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Defines sensor bit depth (10-14 bits is |
| expected)</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.sensor.baseGainFactor"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">rational</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Gain factor from electrons to raw units when |
| ISO=100</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| <li><a href="#tag_FULL">FULL</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.blackLevelPattern"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 4 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">2x2 raw count block</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>A fixed black level offset for each of the color filter arrangement |
| (CFA) mosaic channels.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0 for each.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This tag specifies the zero light value for each of the CFA mosaic |
| channels in the camera sensor.<wbr/></p> |
| <p>The values are given in row-column scan order,<wbr/> with the first value |
| corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.calibrationTransform1"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1 |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">rational</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 9 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Per-device calibration on top of color space |
| transform 1</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.calibrationTransform2"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2 |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">rational</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 9 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Per-device calibration on top of color space |
| transform 2</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.colorTransform1"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>color<wbr/>Transform1 |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">rational</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 9 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Linear mapping from XYZ (D50) color space to |
| reference linear sensor color,<wbr/> for first reference |
| illuminant</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Use as follows XYZ = inv(transform) * clip( (raw - |
| black level(raw) ) /<wbr/> ( white level - max black level) ).<wbr/> |
| At least in the simple case</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.colorTransform2"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>color<wbr/>Transform2 |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">rational</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 9 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Linear mapping from XYZ (D50) color space to |
| reference linear sensor color,<wbr/> for second reference |
| illuminant</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.forwardMatrix1"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1 |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">rational</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 9 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Used by DNG for better WB |
| adaptation</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.forwardMatrix2"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2 |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">rational</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 9 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">3x3 matrix in row-major-order</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Used by DNG for better WB |
| adaptation</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.maxAnalogSensitivity"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity |
| </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>Maximum sensitivity that is implemented |
| purely through analog gain.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| <li><a href="#tag_FULL">FULL</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or |
| equal to this,<wbr/> all applied gain must be analog.<wbr/> For |
| values above this,<wbr/> the gain applied can be a mix of analog and |
| digital.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.noiseModelCoefficients"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>noise<wbr/>Model<wbr/>Coefficients |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">float constants A,<wbr/> B for the noise variance model</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Estimation of sensor noise |
| characteristics</p> |
| </td> |
| |
| <td class="entry_units"> |
| var(raw pixel value) = electrons * (baseGainFactor |
| * iso/<wbr/>100)^2 + A * (baseGainFactor * iso/<wbr/>100)^2 + |
| B |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>A represents sensor read noise before analog |
| amplification; B represents noise from A/<wbr/>D conversion and |
| other circuits after amplification.<wbr/> Both noise sources |
| are assumed to be gaussian,<wbr/> independent,<wbr/> and not to vary |
| across the sensor</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.orientation"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>orientation |
| </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>Clockwise angle through which the output |
| image needs to be rotated to be upright on the device |
| screen in its native orientation.<wbr/> Also defines the |
| direction of rolling shutter readout,<wbr/> which is from top |
| to bottom in the sensor's coordinate system</p> |
| </td> |
| |
| <td class="entry_units"> |
| degrees clockwise rotation,<wbr/> only multiples of |
| 90 |
| </td> |
| |
| <td class="entry_range"> |
| <p>0,<wbr/>90,<wbr/>180,<wbr/>270</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="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.referenceIlluminant1"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1 |
| </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">DAYLIGHT</span> |
| <span class="entry_type_enum_value">1</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FLUORESCENT</span> |
| <span class="entry_type_enum_value">2</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">TUNGSTEN</span> |
| <span class="entry_type_enum_value">3</span> |
| <span class="entry_type_enum_notes"><p>Incandescent light</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FLASH</span> |
| <span class="entry_type_enum_value">4</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FINE_WEATHER</span> |
| <span class="entry_type_enum_value">9</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CLOUDY_WEATHER</span> |
| <span class="entry_type_enum_value">10</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SHADE</span> |
| <span class="entry_type_enum_value">11</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span> |
| <span class="entry_type_enum_value">12</span> |
| <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span> |
| <span class="entry_type_enum_value">13</span> |
| <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span> |
| <span class="entry_type_enum_value">14</span> |
| <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">WHITE_FLUORESCENT</span> |
| <span class="entry_type_enum_value">15</span> |
| <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">STANDARD_A</span> |
| <span class="entry_type_enum_value">17</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">STANDARD_B</span> |
| <span class="entry_type_enum_value">18</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">STANDARD_C</span> |
| <span class="entry_type_enum_value">19</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">D55</span> |
| <span class="entry_type_enum_value">20</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">D65</span> |
| <span class="entry_type_enum_value">21</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">D75</span> |
| <span class="entry_type_enum_value">22</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">D50</span> |
| <span class="entry_type_enum_value">23</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span> |
| <span class="entry_type_enum_value">24</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Light source used to define transform |
| 1</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| <li><a href="#tag_EXIF">EXIF</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>[EXIF LightSource tag] Must all these be |
| supported? Need CCT for each!</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.referenceIlluminant2"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2 |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Light source used to define transform |
| 2</p> |
| </td> |
| |
| <td class="entry_units"> |
| Same as illuminant 1 |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.sensor.availableTestPatternModes"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Optional.<wbr/> Defaults to [OFF].<wbr/> Lists the supported test |
| pattern modes for android.<wbr/>test.<wbr/>pattern<wbr/>Mode.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Must include OFF.<wbr/> All custom modes must be >= CUSTOM1</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.sensor.exposureTime"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>exposure<wbr/>Time |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Duration each pixel is exposed to |
| light.<wbr/></p> |
| <p>If the sensor can't expose this exact duration,<wbr/> it should shorten the |
| duration exposed to the nearest possible value (rather than expose longer).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| nanoseconds |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>1/<wbr/>10000 - 30 sec range.<wbr/> No bulb mode</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.sensor.frameDuration"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>frame<wbr/>Duration |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Duration from start of frame exposure to |
| start of next frame exposure.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| nanoseconds |
| </td> |
| |
| <td class="entry_range"> |
| <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> |
| android.<wbr/>scaler.<wbr/>available*Min<wbr/>Durations.<wbr/> The duration |
| is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The maximum frame rate that can be supported by a camera subsystem is |
| a function of many factors:</p> |
| <ul> |
| <li>Requested resolutions of output image streams</li> |
| <li>Availability of binning /<wbr/> skipping modes on the imager</li> |
| <li>The bandwidth of the imager interface</li> |
| <li>The bandwidth of the various ISP processing blocks</li> |
| </ul> |
| <p>Since these factors can vary greatly between different ISPs and |
| sensors,<wbr/> the camera abstraction tries to represent the bandwidth |
| restrictions with as simple a model as possible.<wbr/></p> |
| <p>The model presented has the following characteristics:</p> |
| <ul> |
| <li>The image sensor is always configured to output the smallest |
| resolution possible given the application's requested output stream |
| sizes.<wbr/> The smallest resolution is defined as being at least as large |
| as the largest requested output stream size; the camera pipeline must |
| never digitally upsample sensor data when the crop region covers the |
| whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream |
| resolutions are configured,<wbr/> the sensor can provide a higher frame |
| rate.<wbr/></li> |
| <li>Since any request may use any or all the currently configured |
| output streams,<wbr/> the sensor and ISP must be configured to support |
| scaling a single capture to all the streams at the same time.<wbr/> This |
| means the camera pipeline must be ready to produce the largest |
| requested output size without any delay.<wbr/> Therefore,<wbr/> the overall |
| frame rate of a given configured stream set is governed only by the |
| largest requested stream resolution.<wbr/></li> |
| <li>Using more than one output stream in a request does not affect the |
| frame duration.<wbr/></li> |
| <li>JPEG streams act like processed YUV streams in requests for which |
| they are not included; in requests in which they are directly |
| referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a |
| JPEG stream requires the underlying YUV data to always be ready for |
| use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact |
| frame duration) on requests that actually reference a JPEG stream.<wbr/></li> |
| <li>The JPEG processor can run concurrently to the rest of the camera |
| pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li> |
| </ul> |
| <p>The necessary information for the application,<wbr/> given the model above,<wbr/> |
| is provided via the android.<wbr/>scaler.<wbr/>available*Min<wbr/>Durations fields.<wbr/> |
| These are used to determine the maximum frame rate /<wbr/> minimum frame |
| duration that is possible for a given stream configuration.<wbr/></p> |
| <p>Specifically,<wbr/> the application can use the following rules to |
| determine the minimum frame duration it can request from the HAL |
| device:</p> |
| <ol> |
| <li>Given the application's currently configured set of output |
| streams,<wbr/> <code>S</code>,<wbr/> divide them into three sets: streams in a JPEG format |
| <code>SJ</code>,<wbr/> streams in a raw sensor format <code>SR</code>,<wbr/> and the rest ('processed') |
| <code>SP</code>.<wbr/></li> |
| <li>For each subset of streams,<wbr/> find the largest resolution (by pixel |
| count) in the subset.<wbr/> This gives (at most) three resolutions <code>RJ</code>,<wbr/> |
| <code>RR</code>,<wbr/> and <code>RP</code>.<wbr/></li> |
| <li>If <code>RJ</code> is greater than <code>RP</code>,<wbr/> set <code>RP</code> equal to <code>RJ</code>.<wbr/> If there is |
| no exact match for <code>RP == RJ</code> (in particular there isn't an available |
| processed resolution at the same size as <code>RJ</code>),<wbr/> then set <code>RP</code> equal |
| to the smallest processed resolution that is larger than <code>RJ</code>.<wbr/> If |
| there are no processed resolutions larger than <code>RJ</code>,<wbr/> then set <code>RJ</code> to |
| the processed resolution closest to <code>RJ</code>.<wbr/></li> |
| <li>If <code>RP</code> is greater than <code>RR</code>,<wbr/> set <code>RR</code> equal to <code>RP</code>.<wbr/> If there is |
| no exact match for <code>RR == RP</code> (in particular there isn't an available |
| raw resolution at the same size as <code>RP</code>),<wbr/> then set <code>RR</code> equal to |
| or to the smallest raw resolution that is larger than <code>RP</code>.<wbr/> If |
| there are no raw resolutions larger than <code>RP</code>,<wbr/> then set <code>RR</code> to |
| the raw resolution closest to <code>RP</code>.<wbr/></li> |
| <li>Look up the matching minimum frame durations in the property lists |
| <a href="#static_android.scaler.availableJpegMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations</a>,<wbr/> |
| <a href="#static_android.scaler.availableRawMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations</a>,<wbr/> and |
| <a href="#static_android.scaler.availableProcessedMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations</a>.<wbr/> This gives three |
| minimum frame durations <code>FJ</code>,<wbr/> <code>FR</code>,<wbr/> and <code>FP</code>.<wbr/></li> |
| <li>If a stream of requests do not use a JPEG stream,<wbr/> then the minimum |
| supported frame duration for each request is <code>max(FR,<wbr/> FP)</code>.<wbr/></li> |
| <li>If a stream of requests all use the JPEG stream,<wbr/> then the minimum |
| supported frame duration for each request is <code>max(FR,<wbr/> FP,<wbr/> FJ)</code>.<wbr/></li> |
| <li>If a mix of JPEG-using and non-JPEG-using requests is submitted by |
| the application,<wbr/> then the HAL will have to delay JPEG-using requests |
| whenever the JPEG encoder is still busy processing an older capture.<wbr/> |
| This will happen whenever a JPEG-using request starts capture less |
| than <code>FJ</code> <em>ns</em> after a previous JPEG-using request.<wbr/> The minimum |
| supported frame duration will vary between the values calculated in |
| #6 and #7.<wbr/></li> |
| </ol> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.sensor.sensitivity"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>sensitivity |
| </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>Gain applied to image data.<wbr/> Must be |
| implemented through analog gain only if set to values |
| below 'maximum analog sensitivity'.<wbr/></p> |
| <p>If the sensor can't apply this exact gain,<wbr/> it should lessen the |
| gain to the nearest possible value (rather than gain more).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| ISO arithmetic units |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>ISO 12232:2006 REI method</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.sensor.timestamp"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>timestamp |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int64</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Time at start of exposure of first |
| row</p> |
| </td> |
| |
| <td class="entry_units"> |
| nanoseconds |
| </td> |
| |
| <td class="entry_range"> |
| <p>> 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Monotonic,<wbr/> should be synced to other timestamps in |
| system</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.sensor.temperature"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>sensor.<wbr/>temperature |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The temperature of the sensor,<wbr/> sampled at the time |
| exposure began for this frame.<wbr/></p> |
| <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or |
| somewhere close to it.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| celsius |
| </td> |
| |
| <td class="entry_range"> |
| <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_FULL">FULL</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.sensor.neutralColorPoint"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point |
| </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 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The estimated white balance at the time of capture.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The estimated white balance encoded as the RGB values of the |
| perfectly neutral color point in the linear native sensor color space.<wbr/> |
| The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.sensor.testPatternMode"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode |
| </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</span> |
| <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera |
| device returns captures from the image sensor.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SOLID_COLOR</span> |
| <span class="entry_type_enum_notes"><p>Each pixel in <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> is replaced by its |
| respective color channel provided in |
| <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p> |
| <p>For example:</p> |
| <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0] |
| </code></pre> |
| <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p> |
| <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0] |
| </code></pre> |
| <p>All red pixels are 100% red.<wbr/> Only the odd green pixels |
| are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">COLOR_BARS</span> |
| <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p> |
| <p>The vertical bars (left-to-right) are as follows:</p> |
| <ul> |
| <li>100% white</li> |
| <li>yellow</li> |
| <li>cyan</li> |
| <li>green</li> |
| <li>magenta</li> |
| <li>red</li> |
| <li>blue</li> |
| <li>black</li> |
| </ul> |
| <p>In general the image would look like the following:</p> |
| <pre><code>W Y C G M R B K |
| W Y C G M R B K |
| W Y C G M R B K |
| W Y C G M R B K |
| W Y C G M R B K |
| .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> |
| |
| (B = Blue,<wbr/> K = Black) |
| </code></pre> |
| <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/> |
| When this is not possible,<wbr/> the bar size should be rounded |
| down to the nearest integer and the pattern can repeat |
| on the right side.<wbr/></p> |
| <p>Each bar's height must always take up the full sensor |
| pixel array height.<wbr/></p> |
| <p>Each pixel in this test pattern must be set to either |
| 0% intensity or 100% intensity.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span> |
| <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that |
| each bar should start at its specified color at the top,<wbr/> |
| and fade to gray at the bottom.<wbr/></p> |
| <p>Furthermore each bar is further subdivided into a left and |
| right half.<wbr/> The left half should have a smooth gradient,<wbr/> |
| and the right half should have a quantized gradient.<wbr/></p> |
| <p>In particular,<wbr/> the right half's should consist of blocks of the |
| same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p> |
| <p>The least significant bits in the quantized gradient should |
| be copied from the most significant bits of the smooth gradient.<wbr/></p> |
| <p>The height of each bar should always be a multiple of 128.<wbr/> |
| When this is not the case,<wbr/> the pattern should repeat at the bottom |
| of the image.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PN9</span> |
| <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence |
| generated from a PN9 512-bit sequence (typically implemented |
| in hardware with a linear feedback shift register).<wbr/></p> |
| <p>The generator should be reset at the beginning of each frame,<wbr/> |
| and thus each subsequent raw frame with this test pattern should |
| be exactly the same as the last.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CUSTOM1</span> |
| <span class="entry_type_enum_value">256</span> |
| <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are |
| available only on this camera device are at least this numeric |
| value.<wbr/></p> |
| <p>All of the custom test patterns will be static |
| (that is the raw image must not vary from frame to frame).<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>When enabled,<wbr/> the sensor sends a test pattern instead of |
| doing a real exposure from the camera.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of |
| <a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified |
| by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should |
| work as normal.<wbr/></p> |
| <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still |
| occur (and that the test pattern remain unmodified,<wbr/> since the flash |
| would not actually affect it).<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>All test patterns are specified in the Bayer domain.<wbr/></p> |
| <p>The HAL may choose to substitute test patterns from the sensor |
| with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be |
| indistinguishable to the ISP whether the data came from the |
| sensor interconnect bus (such as CSI2) or memory.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_shading" class="section">shading</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.shading.mode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>shading.<wbr/>mode |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [hidden]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Quality of lens shading correction applied |
| to the image data.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the |
| camera device,<wbr/> and an identity lens shading map data will be provided |
| if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens |
| shading map with size specified as <code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]</code>,<wbr/> |
| the output <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> for this case will be an identity map |
| shown below:</p> |
| <pre><code>[ 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ] |
| </code></pre> |
| <p>When set to other modes,<wbr/> lens shading correction will be applied by the |
| camera device.<wbr/> Applications can request lens shading map data by setting |
| <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide |
| lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified |
| by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.shading.strength"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>shading.<wbr/>strength |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Control the amount of shading correction |
| applied to the images</p> |
| </td> |
| |
| <td class="entry_units"> |
| unitless: 1-10; 10 is full shading |
| compensation |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_ADV">ADV</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.shading.mode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>shading.<wbr/>mode |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [hidden]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Quality of lens shading correction applied |
| to the image data.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the |
| camera device,<wbr/> and an identity lens shading map data will be provided |
| if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens |
| shading map with size specified as <code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]</code>,<wbr/> |
| the output <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> for this case will be an identity map |
| shown below:</p> |
| <pre><code>[ 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ] |
| </code></pre> |
| <p>When set to other modes,<wbr/> lens shading correction will be applied by the |
| camera device.<wbr/> Applications can request lens shading map data by setting |
| <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide |
| lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified |
| by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.statistics.faceDetectMode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>face<wbr/>Detect<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</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SIMPLE</span> |
| <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence |
| only</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FULL</span> |
| <span class="entry_type_enum_notes"><p>Optional Return all face |
| metadata</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>State of the face detector |
| unit</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Whether face detection is enabled,<wbr/> and whether it |
| should output just the basic fields or the full set of |
| fields.<wbr/> Value must be one of the |
| <a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.statistics.histogramMode"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [system as boolean]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Operating mode for histogram |
| generation</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.statistics.sharpnessMapMode"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [system as boolean]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Operating mode for sharpness map |
| generation</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.statistics.lensShadingMapMode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<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</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether the HAL needs to output the lens |
| shading map in output result metadata</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When set to ON,<wbr/> |
| <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> must be provided in |
| the output result metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Which face detection modes are available,<wbr/> |
| if any</p> |
| </td> |
| |
| <td class="entry_units"> |
| List of enum: |
| OFF |
| SIMPLE |
| FULL |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>OFF means face detection is disabled,<wbr/> it must |
| be included in the list.<wbr/></p> |
| <p>SIMPLE means the device supports the |
| <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and |
| <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a> outputs.<wbr/></p> |
| <p>FULL means the device additionally supports the |
| <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a> and |
| <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a> outputs.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.statistics.info.histogramBucketCount"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count |
| </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>Number of histogram buckets |
| supported</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 64</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.statistics.info.maxFaceCount"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count |
| </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>Maximum number of simultaneously detectable |
| faces</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 4 if availableFaceDetectionModes lists |
| modes besides OFF,<wbr/> otherwise 0</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.statistics.info.maxHistogramCount"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count |
| </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>Maximum value possible for a histogram |
| bucket</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| |
| <span class="entry_type_visibility"> [system]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Maximum value possible for a sharpness map |
| region.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="static_android.statistics.info.sharpnessMapSize"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 2 |
| </span> |
| <span class="entry_type_visibility"> [system as size]</span> |
| <div class="entry_type_notes">width x height</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Dimensions of the sharpness |
| map</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Must be at least 32 x 32</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.faceDetectMode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>face<wbr/>Detect<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</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SIMPLE</span> |
| <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence |
| only</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FULL</span> |
| <span class="entry_type_enum_notes"><p>Optional Return all face |
| metadata</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>State of the face detector |
| unit</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Whether face detection is enabled,<wbr/> and whether it |
| should output just the basic fields or the full set of |
| fields.<wbr/> Value must be one of the |
| <a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.faceIds"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>face<wbr/>Ids |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [hidden]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of unique IDs for detected |
| faces</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only available if faceDetectMode == FULL</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.faceLandmarks"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 6 |
| </span> |
| <span class="entry_type_visibility"> [hidden]</span> |
| <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of landmarks for detected |
| faces</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only available if faceDetectMode == FULL</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.faceRectangles"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 4 |
| </span> |
| <span class="entry_type_visibility"> [hidden as rectangle]</span> |
| <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of the bounding rectangles for detected |
| faces</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only available if faceDetectMode != OFF</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.faceScores"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>face<wbr/>Scores |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [hidden]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>List of the face confidence scores for |
| detected faces</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>1-100</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Only available if faceDetectMode != OFF.<wbr/> The value should be |
| meaningful (for example,<wbr/> setting 100 at all times is illegal).<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.histogram"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>histogram |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 3 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">count of pixels for each color channel that fall into each histogram bucket,<wbr/> scaled to be between 0 and maxHistogramCount</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>A 3-channel histogram based on the raw |
| sensor data</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The k'th bucket (0-based) covers the input range |
| (with w = <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>) of [ k * w/<wbr/>N,<wbr/> |
| (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is |
| supported,<wbr/> all channels should have the same data</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.histogramMode"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [system as boolean]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Operating mode for histogram |
| generation</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.sharpnessMap"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">int32</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x m x 3 |
| </span> |
| <span class="entry_type_visibility"> [system]</span> |
| <div class="entry_type_notes">estimated sharpness for each region of the input image.<wbr/> Normalized to be between 0 and maxSharpnessMapValue.<wbr/> Higher values mean sharper (better focused)</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>A 3-channel sharpness map,<wbr/> based on the raw |
| sensor data</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If only a monochrome sharpness map is supported,<wbr/> |
| all channels should have the same data</p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [system as boolean]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Operating mode for sharpness map |
| generation</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_V1">V1</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.lensShadingMap"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| 4 x n x m |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The shading map is a low-resolution floating-point map |
| that lists the coefficients used to correct for vignetting,<wbr/> for each |
| Bayer color channel.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Each gain factor is >= 1</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The least shaded section of the image should have a gain factor |
| of 1; all other sections should have gains above 1.<wbr/></p> |
| <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map |
| must take into account the colorCorrection settings.<wbr/></p> |
| <p>The shading map is for the entire active pixel array,<wbr/> and is not |
| affected by the crop region specified in the request.<wbr/> Each shading map |
| entry is the value of the shading compensation map over a specific |
| pixel on the sensor.<wbr/> Specifically,<wbr/> with a (N x M) resolution shading |
| map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry |
| (x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at |
| pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/> |
| The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p> |
| <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green |
| channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/> |
| The shading map is stored in a fully interleaved format,<wbr/> and its size |
| is provided in the camera static metadata by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>.<wbr/></p> |
| <p>The shading map should have on the order of 30-40 rows and columns,<wbr/> |
| and must be smaller than 64x64.<wbr/></p> |
| <p>As an example,<wbr/> given a very small map defined as:</p> |
| <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ] |
| <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> = |
| [ 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> |
| 1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>3,<wbr/> |
| 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/> |
| 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>25,<wbr/> 1.<wbr/>2,<wbr/> |
| 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>2,<wbr/> |
| 1.<wbr/>2,<wbr/> 1.<wbr/>1,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3,<wbr/> 1.<wbr/>15,<wbr/> 1.<wbr/>2,<wbr/> 1.<wbr/>3 ] |
| </code></pre> |
| <p>The low-resolution scaling map images for each channel are |
| (displayed using nearest-neighbor interpolation):</p> |
| <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/> |
| <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/> |
| <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/> |
| <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p> |
| <p>As a visualization only,<wbr/> inverting the full-color map to recover an |
| image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p> |
| <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.predictedColorGains"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<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"> [hidden]</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>The best-fit color channel gains calculated |
| by the HAL's statistics units for the current output frame</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This may be different than the gains used for this frame,<wbr/> |
| since statistics processing on data from a new frame |
| typically completes after the transform has already been |
| applied to that frame.<wbr/></p> |
| <p>The 4 channel gains are defined in Bayer domain,<wbr/> |
| see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p> |
| <p>This value should always be calculated by the AWB block,<wbr/> |
| regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.predictedColorTransform"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<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"> [hidden]</span> |
| <div class="entry_type_notes">3x3 rational matrix in row-major order</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The best-fit color transform matrix estimate |
| calculated by the HAL's statistics units for the current |
| output frame</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p><strong>Deprecated</strong>.<wbr/> Do not use.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>The HAL must provide the estimate from its |
| statistics unit on the white balance transforms to use |
| for the next frame.<wbr/> These are the values the HAL believes |
| are the best fit for the current output frame.<wbr/> This may |
| be different than the transform used for this frame,<wbr/> since |
| statistics processing on data from a new frame typically |
| completes after the transform has already been applied to |
| that frame.<wbr/></p> |
| <p>These estimates must be provided for all frames,<wbr/> even if |
| capture settings and color transforms are set by the application.<wbr/></p> |
| <p>This value should always be calculated by the AWB block,<wbr/> |
| regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.statistics.sceneFlicker"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker |
| </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">NONE</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">50HZ</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">60HZ</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The camera device estimated scene illumination lighting |
| frequency.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate |
| that depends on the local utility power standards.<wbr/> This flicker must be |
| accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/> |
| The camera device uses this entry to tell the application what the scene |
| illuminant frequency is.<wbr/></p> |
| <p>When manual exposure control is enabled |
| (<code><a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> == OFF</code> or <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == OFF</code>),<wbr/> |
| the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't do the antibanding,<wbr/> and the |
| application can ensure it selects exposure times that do not cause banding |
| issues by looking into this metadata field.<wbr/> See android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode |
| for more details.<wbr/></p> |
| <p>Report NONE if there doesn't appear to be flickering illumination.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.tonemap.curveBlue"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 2 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue |
| channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| CONTRAST_<wbr/>CURVE.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red |
| </td> |
| |
| <td class="entry_range"> |
| <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.tonemap.curveGreen"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>tonemap.<wbr/>curve<wbr/>Green |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 2 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green |
| channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| CONTRAST_<wbr/>CURVE.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red |
| </td> |
| |
| <td class="entry_range"> |
| <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.tonemap.curveRed"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>tonemap.<wbr/>curve<wbr/>Red |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 2 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red |
| channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| CONTRAST_<wbr/>CURVE.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>0-1 on both input and output coordinates,<wbr/> normalized |
| as a floating-point value such that 0 == black and 1 == white.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Each channel's curve is defined by an array of control points:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = |
| [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] |
| 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> |
| <p>These are sorted in order of increasing <code>Pin</code>; it is always |
| guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to |
| define a complete mapping.<wbr/> For input values between control points,<wbr/> |
| the camera device must linearly interpolate between the control |
| points.<wbr/></p> |
| <p>Each curve can have an independent number of points,<wbr/> and the number |
| of points can be less than max (that is,<wbr/> the request doesn't have to |
| always provide a curve with number of points equivalent to |
| <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> |
| <p>A few examples,<wbr/> and their corresponding graphical mappings; these |
| only specify the red channel and the precision is limited to 4 |
| digits,<wbr/> for conciseness.<wbr/></p> |
| <p>Linear mapping:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ] |
| </code></pre> |
| <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> |
| <p>Invert mapping:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 0 ] |
| </code></pre> |
| <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> |
| <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ |
| 0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2920,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4002,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4812,<wbr/> |
| 0.<wbr/>2667,<wbr/> 0.<wbr/>5484,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6069,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6594,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7072,<wbr/> |
| 0.<wbr/>5333,<wbr/> 0.<wbr/>7515,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7928,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8317,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8685,<wbr/> |
| 0.<wbr/>8000,<wbr/> 0.<wbr/>9035,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9370,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9691,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ] |
| </code></pre> |
| <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> |
| <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ |
| 0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2864,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4007,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4845,<wbr/> |
| 0.<wbr/>2667,<wbr/> 0.<wbr/>5532,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6125,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6652,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7130,<wbr/> |
| 0.<wbr/>5333,<wbr/> 0.<wbr/>7569,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7977,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8360,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8721,<wbr/> |
| 0.<wbr/>8000,<wbr/> 0.<wbr/>9063,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9389,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9701,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ] |
| </code></pre> |
| <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>For good quality of mapping,<wbr/> at least 128 control points are |
| preferred.<wbr/></p> |
| <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many |
| control points used as are available.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.tonemap.mode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>tonemap.<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">CONTRAST_CURVE</span> |
| <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in |
| android.<wbr/>tonemap.<wbr/>curve.<wbr/></p> |
| <p>All color enhancement and tonemapping must be disabled,<wbr/> except |
| for applying the tonemapping curve specified by |
| <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>,<wbr/> or |
| <a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>.<wbr/></p> |
| <p>Must not slow down frame rate relative to raw |
| sensor output.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> |
| <p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> |
| <p>May slow down frame rate relative to raw sensor output.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When switching to an application-defined contrast curve by setting |
| <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined |
| per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the |
| mapping from input high-bit-depth pixel value to the output |
| low-bit-depth value.<wbr/> Since the actual pixel ranges of both input |
| and output may change depending on the camera pipeline,<wbr/> the values |
| are specified by normalized floating-point numbers.<wbr/></p> |
| <p>More-complex color mapping operations such as 3D color look-up |
| tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color |
| transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| CONTRAST_<wbr/>CURVE.<wbr/></p> |
| <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will |
| emit its own tonemap curve in <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> |
| <a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>,<wbr/> and <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>.<wbr/> |
| These values are always available,<wbr/> and as close as possible to the |
| actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> |
| <p>If a request is sent with TRANSFORM_<wbr/>MATRIX with the camera device's |
| provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be |
| roughly the same.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.tonemap.maxCurvePoints"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points |
| </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>Maximum number of supported points in the |
| tonemap curve that can be used for <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> or |
| <a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>,<wbr/> or <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 64</p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If the actual number of points provided by the application (in |
| android.<wbr/>tonemap.<wbr/>curve*) is less than max,<wbr/> the camera device will |
| resample the curve to its internal representation,<wbr/> using linear |
| interpolation.<wbr/></p> |
| <p>The output curves in the result metadata may have a different number |
| of points than the input curves,<wbr/> and will represent the actual |
| hardware curves used as closely as possible when linearly interpolated.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.tonemap.curveBlue"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 2 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue |
| channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| CONTRAST_<wbr/>CURVE.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red |
| </td> |
| |
| <td class="entry_range"> |
| <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.tonemap.curveGreen"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>tonemap.<wbr/>curve<wbr/>Green |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 2 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green |
| channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| CONTRAST_<wbr/>CURVE.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red |
| </td> |
| |
| <td class="entry_range"> |
| <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.tonemap.curveRed"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>tonemap.<wbr/>curve<wbr/>Red |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name">float</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n x 2 |
| </span> |
| <span class="entry_type_visibility"> [public]</span> |
| <div class="entry_type_notes">1D array of float pairs (P_<wbr/>IN,<wbr/> P_<wbr/>OUT).<wbr/> The maximum number of pairs is specified by android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points.<wbr/></div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red |
| channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| CONTRAST_<wbr/>CURVE.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>0-1 on both input and output coordinates,<wbr/> normalized |
| as a floating-point value such that 0 == black and 1 == white.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_DNG">DNG</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Each channel's curve is defined by an array of control points:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = |
| [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ] |
| 2 <= N <= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre> |
| <p>These are sorted in order of increasing <code>Pin</code>; it is always |
| guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to |
| define a complete mapping.<wbr/> For input values between control points,<wbr/> |
| the camera device must linearly interpolate between the control |
| points.<wbr/></p> |
| <p>Each curve can have an independent number of points,<wbr/> and the number |
| of points can be less than max (that is,<wbr/> the request doesn't have to |
| always provide a curve with number of points equivalent to |
| <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p> |
| <p>A few examples,<wbr/> and their corresponding graphical mappings; these |
| only specify the red channel and the precision is limited to 4 |
| digits,<wbr/> for conciseness.<wbr/></p> |
| <p>Linear mapping:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0 ] |
| </code></pre> |
| <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p> |
| <p>Invert mapping:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ 0,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0,<wbr/> 0 ] |
| </code></pre> |
| <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p> |
| <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ |
| 0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2920,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4002,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4812,<wbr/> |
| 0.<wbr/>2667,<wbr/> 0.<wbr/>5484,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6069,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6594,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7072,<wbr/> |
| 0.<wbr/>5333,<wbr/> 0.<wbr/>7515,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7928,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8317,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8685,<wbr/> |
| 0.<wbr/>8000,<wbr/> 0.<wbr/>9035,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9370,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9691,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ] |
| </code></pre> |
| <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p> |
| <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p> |
| <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [ |
| 0.<wbr/>0000,<wbr/> 0.<wbr/>0000,<wbr/> 0.<wbr/>0667,<wbr/> 0.<wbr/>2864,<wbr/> 0.<wbr/>1333,<wbr/> 0.<wbr/>4007,<wbr/> 0.<wbr/>2000,<wbr/> 0.<wbr/>4845,<wbr/> |
| 0.<wbr/>2667,<wbr/> 0.<wbr/>5532,<wbr/> 0.<wbr/>3333,<wbr/> 0.<wbr/>6125,<wbr/> 0.<wbr/>4000,<wbr/> 0.<wbr/>6652,<wbr/> 0.<wbr/>4667,<wbr/> 0.<wbr/>7130,<wbr/> |
| 0.<wbr/>5333,<wbr/> 0.<wbr/>7569,<wbr/> 0.<wbr/>6000,<wbr/> 0.<wbr/>7977,<wbr/> 0.<wbr/>6667,<wbr/> 0.<wbr/>8360,<wbr/> 0.<wbr/>7333,<wbr/> 0.<wbr/>8721,<wbr/> |
| 0.<wbr/>8000,<wbr/> 0.<wbr/>9063,<wbr/> 0.<wbr/>8667,<wbr/> 0.<wbr/>9389,<wbr/> 0.<wbr/>9333,<wbr/> 0.<wbr/>9701,<wbr/> 1.<wbr/>0000,<wbr/> 1.<wbr/>0000 ] |
| </code></pre> |
| <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>For good quality of mapping,<wbr/> at least 128 control points are |
| preferred.<wbr/></p> |
| <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many |
| control points used as are available.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.tonemap.mode"> |
| <td class="entry_name" rowspan="3"> |
| android.<wbr/>tonemap.<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">CONTRAST_CURVE</span> |
| <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in |
| android.<wbr/>tonemap.<wbr/>curve.<wbr/></p> |
| <p>All color enhancement and tonemapping must be disabled,<wbr/> except |
| for applying the tonemapping curve specified by |
| <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>,<wbr/> or |
| <a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>.<wbr/></p> |
| <p>Must not slow down frame rate relative to raw |
| sensor output.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FAST</span> |
| <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> |
| <p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">HIGH_QUALITY</span> |
| <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p> |
| <p>May slow down frame rate relative to raw sensor output.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When switching to an application-defined contrast curve by setting |
| <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined |
| per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the |
| mapping from input high-bit-depth pixel value to the output |
| low-bit-depth value.<wbr/> Since the actual pixel ranges of both input |
| and output may change depending on the camera pipeline,<wbr/> the values |
| are specified by normalized floating-point numbers.<wbr/></p> |
| <p>More-complex color mapping operations such as 3D color look-up |
| tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color |
| transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is |
| CONTRAST_<wbr/>CURVE.<wbr/></p> |
| <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will |
| emit its own tonemap curve in <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a>,<wbr/> |
| <a href="#controls_android.tonemap.curveGreen">android.<wbr/>tonemap.<wbr/>curve<wbr/>Green</a>,<wbr/> and <a href="#controls_android.tonemap.curveBlue">android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue</a>.<wbr/> |
| These values are always available,<wbr/> and as close as possible to the |
| actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p> |
| <p>If a request is sent with TRANSFORM_<wbr/>MATRIX with the camera device's |
| provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be |
| roughly the same.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_led" class="section">led</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.led.transmit"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>led.<wbr/>transmit |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [hidden as boolean]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>This LED is nominally used to indicate to the user |
| that the camera is powered on and may be streaming images back to the |
| Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may |
| disable this when video is processed locally and not transmitted to |
| any untrusted applications.<wbr/></p> |
| <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be |
| transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever |
| data is stored locally on the device.<wbr/></p> |
| <p>The LED <em>may</em> be off if a trusted application is using the data that |
| doesn't violate the above rules.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.led.transmit"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>led.<wbr/>transmit |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| |
| <span class="entry_type_visibility"> [hidden as boolean]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>This LED is nominally used to indicate to the user |
| that the camera is powered on and may be streaming images back to the |
| Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may |
| disable this when video is processed locally and not transmitted to |
| any untrusted applications.<wbr/></p> |
| <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be |
| transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever |
| data is stored locally on the device.<wbr/></p> |
| <p>The LED <em>may</em> be off if a trusted application is using the data that |
| doesn't violate the above rules.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.led.availableLeds"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>led.<wbr/>available<wbr/>Leds |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">byte</span> |
| <span class="entry_type_container">x</span> |
| |
| <span class="entry_type_array"> |
| n |
| </span> |
| <span class="entry_type_visibility"> [hidden]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">TRANSMIT</span> |
| <span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>A list of camera LEDs that are available on this system.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_info" class="section">info</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.info.supportedHardwareLevel"> |
| <td class="entry_name" rowspan="1"> |
| android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level |
| </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">LIMITED</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FULL</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The camera 3 HAL device can implement one of two possible |
| operational modes; limited and full.<wbr/> Full support is |
| expected from new higher-end devices.<wbr/> Limited mode has |
| hardware requirements roughly in line with those for a |
| camera HAL device v1 implementation,<wbr/> and is expected from |
| older or inexpensive devices.<wbr/> Full is a strict superset of |
| limited,<wbr/> and they share the same essential operational flow.<wbr/></p> |
| <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Optional.<wbr/> Default value is LIMITED.<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| </td> |
| |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">controls</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="controls_android.blackLevel.lock"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>black<wbr/>Level.<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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether black-level compensation is locked |
| to its current values,<wbr/> or is free to vary.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_HAL2">HAL2</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When set to ON,<wbr/> the values used for black-level |
| compensation will not change until the lock is set to |
| OFF.<wbr/></p> |
| <p>Since changes to certain capture parameters (such as |
| exposure time) may require resetting of black level |
| compensation,<wbr/> the camera device must report whether setting |
| the black level lock was successful in the output result |
| metadata.<wbr/></p> |
| <p>For example,<wbr/> if a sequence of requests is as follows:</p> |
| <ul> |
| <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> |
| <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> |
| <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> |
| <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| </ul> |
| <p>And the exposure change in Request 4 requires the camera |
| device to reset the black level offsets,<wbr/> then the output |
| result metadata is expected to be:</p> |
| <ul> |
| <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li> |
| <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li> |
| <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li> |
| <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li> |
| <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li> |
| </ul> |
| <p>This indicates to the application that on frame 4,<wbr/> black |
| levels were reset due to exposure value changes,<wbr/> and pixel |
| values may not be consistent across captures.<wbr/></p> |
| <p>The camera device will maintain the lock to the extent |
| possible,<wbr/> only overriding the lock to OFF when changes to |
| other request parameters require a black level recalculation |
| or reset.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If for some reason black level locking is no longer possible |
| (for example,<wbr/> the analog gain has changed,<wbr/> which forces |
| black level offsets to be recalculated),<wbr/> then the HAL must |
| override this request (and it must report 'OFF' when this |
| does happen) until the next capture for which locking is |
| possible again.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.blackLevel.lock"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>black<wbr/>Level.<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> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether black-level compensation is locked |
| to its current values,<wbr/> or is free to vary.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_HAL2">HAL2</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Whether the black level offset was locked for this frame.<wbr/> Should be |
| ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless |
| a change in other capture settings forced the camera device to |
| perform a black level reset.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>If for some reason black level locking is no longer possible |
| (for example,<wbr/> the analog gain has changed,<wbr/> which forces |
| black level offsets to be recalculated),<wbr/> then the HAL must |
| override this request (and it must report 'OFF' when this |
| does happen) until the next capture for which locking is |
| possible again.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <tr><td colspan="6" id="section_sync" class="section">sync</td></tr> |
| |
| |
| <tr><td colspan="6" class="kind">dynamic</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="dynamic_android.sync.frameNumber"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>sync.<wbr/>frame<wbr/>Number |
| </td> |
| <td class="entry_type"> |
| <span class="entry_type_name entry_type_name_enum">int64</span> |
| |
| <span class="entry_type_visibility"> [hidden]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">CONVERGING</span> |
| <span class="entry_type_enum_value">-1</span> |
| <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/> |
| Synchronization is in progress,<wbr/> and reading metadata from this |
| result may include a mix of data that have taken effect since the |
| last synchronization time.<wbr/></p> |
| <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/> |
| this value will update to the actual frame number frame number |
| the result is guaranteed to be synchronized to (as long as the |
| request settings remain constant).<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">UNKNOWN</span> |
| <span class="entry_type_enum_value">-2</span> |
| <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/> The |
| result may have already converged,<wbr/> or it may be in progress.<wbr/> |
| Reading from this result may include some mix of settings from |
| past requests.<wbr/></p> |
| <p>After a settings change,<wbr/> the new settings will eventually all |
| take effect for the output buffers and results.<wbr/> However,<wbr/> this |
| value will not change when that happens.<wbr/> Altering settings |
| rapidly may provide outcomes using mixes of settings from recent |
| requests.<wbr/></p> |
| <p>This value is intended primarily for backwards compatibility with |
| the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The frame number corresponding to the last request |
| with which the output result (metadata + buffers) has been fully |
| synchronized.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Either a non-negative value corresponding to a |
| <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_LIMITED">LIMITED</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When a request is submitted to the camera device,<wbr/> there is usually a |
| delay of several frames before the controls get applied.<wbr/> A camera |
| device may either choose to account for this delay by implementing a |
| pipeline and carefully submit well-timed atomic control updates,<wbr/> or |
| it may start streaming control changes that span over several frame |
| boundaries.<wbr/></p> |
| <p>In the latter case,<wbr/> whenever a request's settings change relative to |
| the previous submitted request,<wbr/> the full set of changes may take |
| multiple frame durations to fully take effect.<wbr/> Some settings may |
| take effect sooner (in less frame durations) than others.<wbr/></p> |
| <p>While a set of control changes are being propagated,<wbr/> this value |
| will be CONVERGING.<wbr/></p> |
| <p>Once it is fully known that a set of control changes have been |
| finished propagating,<wbr/> and the resulting updated control settings |
| have been read back by the camera device,<wbr/> this value will be set |
| to a non-negative frame number (corresponding to the request to |
| which the results have synchronized to).<wbr/></p> |
| <p>Older camera device implementations may not have a way to detect |
| when all camera controls have been applied,<wbr/> and will always set this |
| value to UNKNOWN.<wbr/></p> |
| <p>FULL capability devices will always have this value set to the |
| frame number of the request corresponding to this result.<wbr/></p> |
| <p><em>Further details</em>:</p> |
| <ul> |
| <li>Whenever a request differs from the last request,<wbr/> any future |
| results not yet returned may have this value set to CONVERGING (this |
| could include any in-progress captures not yet returned by the camera |
| device,<wbr/> for more details see pipeline considerations below).<wbr/></li> |
| <li>Submitting a series of multiple requests that differ from the |
| previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3) |
| moves the new synchronization frame to the last non-repeating |
| request (using the smallest frame number from the contiguous list of |
| repeating requests).<wbr/></li> |
| <li>Submitting the same request repeatedly will not change this value |
| to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li> |
| <li>When this value changes to non-negative,<wbr/> that means that all of the |
| metadata controls from the request have been applied,<wbr/> all of the |
| metadata controls from the camera device have been read to the |
| updated values (into the result),<wbr/> and all of the graphics buffers |
| corresponding to this result are also synchronized to the request.<wbr/></li> |
| </ul> |
| <p><em>Pipeline considerations</em>:</p> |
| <p>Submitting a request with updated controls relative to the previously |
| submitted requests may also invalidate the synchronization state |
| of all the results corresponding to currently in-flight requests.<wbr/></p> |
| <p>In other words,<wbr/> results for this current request and up to |
| <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their |
| <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Using UNKNOWN here is illegal unless android.<wbr/>sync.<wbr/>max<wbr/>Latency |
| is also UNKNOWN.<wbr/></p> |
| <p>FULL capability devices should simply set this value to the |
| <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| <tr><td colspan="6" class="kind">static</td></tr> |
| |
| <thead class="entries_header"> |
| <tr> |
| <th class="th_name">Property Name</th> |
| <th class="th_type">Type</th> |
| <th class="th_description">Description</th> |
| <th class="th_units">Units</th> |
| <th class="th_range">Range</th> |
| <th class="th_tags">Tags</th> |
| </tr> |
| </thead> |
| |
| <tbody> |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| <tr class="entry" id="static_android.sync.maxLatency"> |
| <td class="entry_name" rowspan="5"> |
| android.<wbr/>sync.<wbr/>max<wbr/>Latency |
| </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">PER_FRAME_CONTROL</span> |
| <span class="entry_type_enum_value">0</span> |
| <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/> |
| (and furthermore for all results,<wbr/> |
| <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a></code>)</p> |
| <p>Changing controls over multiple requests one after another will |
| produce results that have those controls applied atomically |
| each frame.<wbr/></p> |
| <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">UNKNOWN</span> |
| <span class="entry_type_enum_value">-1</span> |
| <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set) |
| of the past requests applied to the camera settings.<wbr/></p> |
| <p>By submitting a series of identical requests,<wbr/> the camera device |
| will eventually have the camera settings applied,<wbr/> but it is |
| unknown when that exact point will be.<wbr/></p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>The maximum number of frames that can occur after a request |
| (different than the previous) has been submitted,<wbr/> and before the |
| result's state becomes synchronized (by setting |
| <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| number of processed requests |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= -1</p> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_LIMITED">LIMITED</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>This defines the maximum distance (in number of metadata results),<wbr/> |
| between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent |
| <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p> |
| <p>In other words this acts as an upper boundary for how many frames |
| must occur before the camera device knows for a fact that the new |
| submitted camera settings have been applied in outgoing frames.<wbr/></p> |
| <p>For example if the distance was 2,<wbr/></p> |
| <pre><code>initial request = X (repeating) |
| request1 = X |
| request2 = Y |
| request3 = Y |
| request4 = Y |
| |
| where requestN has frameNumber N,<wbr/> and the first of the repeating |
| initial request's has frameNumber F (and F < 1).<wbr/> |
| |
| initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } |
| result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F } |
| result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } |
| result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING } |
| result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 } |
| |
| where resultN has frameNumber N.<wbr/> |
| </code></pre> |
| <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and |
| <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly |
| <code>4 - 2 = 2</code>.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">HAL Implementation Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of |
| <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p> |
| <p>LIMITED devices are strongly encouraged to use a non-negative |
| value.<wbr/> If UNKNOWN is used here then app developers do not have a way |
| to know when sensor settings have been applied.<wbr/></p> |
| </td> |
| </tr> |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| |
| <!-- end of kind --> |
| </tbody> |
| |
| <!-- end of section --> |
| <!-- </namespace> --> |
| </table> |
| |
| <div class="tags" id="tag_index"> |
| <h2>Tags</h2> |
| <ul> |
| <li id="tag_AWB">AWB - |
| Needed for auto white balance |
| |
| <ul class="tags_entries"> |
| <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> |
| </ul> |
| </li> <!-- tag_AWB --> |
| <li id="tag_BC">BC - |
| Needed for backwards compatibility with old Java API |
| |
| <ul class="tags_entries"> |
| <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li> |
| <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li> |
| <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li> |
| <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li> |
| <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li> |
| <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li> |
| <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li> |
| <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li> |
| <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li> |
| <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li> |
| <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li> |
| <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li> |
| <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li> |
| <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li> |
| <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li> |
| <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li> |
| <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li> |
| <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li> |
| <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li> |
| <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li> |
| <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li> |
| <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li> |
| <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li> |
| <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li> |
| <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li> |
| <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li> |
| <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li> |
| <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li> |
| <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li> |
| <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li> |
| <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li> |
| <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li> |
| <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li> |
| <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li> |
| <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li> |
| <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li> |
| <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li> |
| <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li> |
| <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> |
| <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> |
| <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> |
| <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> |
| <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> |
| <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> |
| <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> |
| <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> |
| <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li> |
| <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li> |
| <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li> |
| <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li> |
| <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> |
| <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> |
| <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> |
| <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> |
| <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> |
| <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li> |
| <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li> |
| <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li> |
| <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li> |
| <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li> |
| <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li> |
| <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li> |
| <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li> |
| <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li> |
| </ul> |
| </li> <!-- tag_BC --> |
| <li id="tag_V1">V1 - |
| New features for first camera 2 release (API1) |
| |
| <ul class="tags_entries"> |
| <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li> |
| <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li> |
| <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li> |
| <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li> |
| <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li> |
| <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li> |
| <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li> |
| <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li> |
| <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li> |
| <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li> |
| <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li> |
| <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li> |
| <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li> |
| <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li> |
| <li><a href="#static_android.lens.info.geometricCorrectionMapSize">android.lens.info.geometricCorrectionMapSize</a> (static)</li> |
| <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li> |
| <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li> |
| <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li> |
| <li><a href="#static_android.lens.position">android.lens.position</a> (static)</li> |
| <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li> |
| <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li> |
| <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li> |
| <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li> |
| <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li> |
| <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li> |
| <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li> |
| <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li> |
| <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li> |
| <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li> |
| <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> |
| <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> |
| <li><a href="#static_android.sensor.noiseModelCoefficients">android.sensor.noiseModelCoefficients</a> (static)</li> |
| <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li> |
| <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li> |
| <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li> |
| <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li> |
| <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li> |
| <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li> |
| <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li> |
| <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li> |
| </ul> |
| </li> <!-- tag_V1 --> |
| <li id="tag_ADV">ADV - None |
| <ul class="tags_entries"> |
| <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li> |
| <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li> |
| <li><a href="#controls_android.geometric.strength">android.geometric.strength</a> (controls)</li> |
| <li><a href="#static_android.hotPixel.info.map">android.hotPixel.info.map</a> (static)</li> |
| <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a> (static)</li> |
| <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li> |
| </ul> |
| </li> <!-- tag_ADV --> |
| <li id="tag_DNG">DNG - |
| Needed for DNG file support |
| |
| <ul class="tags_entries"> |
| <li><a href="#static_android.lens.info.geometricCorrectionMap">android.lens.info.geometricCorrectionMap</a> (static)</li> |
| <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li> |
| <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li> |
| <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li> |
| <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li> |
| <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li> |
| <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li> |
| <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li> |
| <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li> |
| <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li> |
| <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li> |
| <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li> |
| <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> |
| <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li> |
| <li><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a> (controls)</li> |
| </ul> |
| </li> <!-- tag_DNG --> |
| <li id="tag_EXIF">EXIF - None |
| <ul class="tags_entries"> |
| <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li> |
| </ul> |
| </li> <!-- tag_EXIF --> |
| <li id="tag_HAL2">HAL2 - |
| Entry is only used by camera device HAL 2.x |
| |
| <ul class="tags_entries"> |
| <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li> |
| <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li> |
| <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li> |
| <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li> |
| <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li> |
| </ul> |
| </li> <!-- tag_HAL2 --> |
| <li id="tag_FULL">FULL - |
| Entry is required for full hardware level devices, and optional for other hardware levels |
| |
| <ul class="tags_entries"> |
| <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li> |
| <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li> |
| <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li> |
| </ul> |
| </li> <!-- tag_FULL --> |
| <li id="tag_LIMITED">LIMITED - |
| Entry assists with LIMITED device implementation. LIMITED devices |
| must implement all entries with this tag. Optional for FULL devices. |
| |
| <ul class="tags_entries"> |
| <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li> |
| <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li> |
| </ul> |
| </li> <!-- tag_LIMITED --> |
| </ul> |
| </div> |
| |
| [ <a href="#">top</a> ] |
| |
| </body> |
| </html> |