| <!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.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> |
| </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> |
| </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> |
| </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> |
| </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> |
| </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> |
| </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</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"> |
| </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 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is not OFF,<wbr/> TRANSFORM_<wbr/>MATRIX |
| should be ignored.<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"> |
| <p>Output values are expected to be in the range |
| (0,<wbr/>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>This matrix 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>In the latter case,<wbr/> the HAL may round the matrix to account |
| for precision issues; the final rounded matrix should be |
| reported back in this matrix result metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="controls_android.colorCorrection.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 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 [R G_<wbr/>even G_<wbr/>odd B],<wbr/> where G_<wbr/>even is the gain |
| for green pixels on even rows of the output,<wbr/> and G_<wbr/>odd |
| is the gain for greenpixels 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 G_<wbr/>even value,<wbr/>and write G_<wbr/>odd equal to |
| G_<wbr/>even 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 ouput 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"> |
| <p>Output values are expected to be in the range |
| (0,<wbr/>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>This matrix 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>In the latter case,<wbr/> the HAL may round the matrix to account |
| for precision issues; the final rounded matrix should be |
| reported back in this matrix result metadata.<wbr/></p> |
| </td> |
| </tr> |
| |
| |
| <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr> |
| <!-- end of entry --> |
| |
| |
| <tr class="entry" id="dynamic_android.colorCorrection.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 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 [R G_<wbr/>even G_<wbr/>odd B],<wbr/> where G_<wbr/>even is the gain |
| for green pixels on even rows of the output,<wbr/> and G_<wbr/>odd |
| is the gain for greenpixels 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 G_<wbr/>even value,<wbr/>and write G_<wbr/>odd equal to |
| G_<wbr/>even 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 ouput 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</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 AE mode is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> |
| ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<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</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>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined 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</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</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>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined 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</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 the exposure and sensitivity |
| parameters while the lock is active</p></span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether AWB is currently locked to its |
| latest calculated values</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</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</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 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 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</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="1"> |
| 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> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MONO</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NEGATIVE</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SOLARIZE</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SEPIA</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">POSTERIZE</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">WHITEBOARD</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BLACKBOARD</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">AQUA</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether any special color effect is in use.<wbr/> |
| Only used if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</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="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> |
| </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> |
| </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="1"> |
| 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">UNSUPPORTED</span> |
| <span class="entry_type_enum_value">0</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FACE_PRIORITY</span> |
| <span class="entry_type_enum_notes"><p>if face detection support exists Use face |
| detection data to drive 3A routines.<wbr/> If face detection |
| statistics are disabled,<wbr/> should still operate correctly |
| (but not return face detection statistics to the |
| framework).<wbr/></p> |
| <p>Unlike the other scene modes,<wbr/> aeMode,<wbr/> awbMode,<wbr/> and afMode |
| remain active when FACE_<wbr/>PRIORITY is set.<wbr/> This is due to |
| compatibility concerns with the old camera |
| API</p></span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ACTION</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PORTRAIT</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">LANDSCAPE</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NIGHT</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">NIGHT_PORTRAIT</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">THEATRE</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BEACH</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SNOW</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SUNSET</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">STEADYPHOTO</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">FIREWORKS</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">SPORTS</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">PARTY</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">CANDLELIGHT</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">BARCODE</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Which scene mode is active when |
| <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = SCENE_<wbr/>MODE</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="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="1"> |
| 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</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>what subset of the full color effect enum |
| list is supported</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>OFF must be listed</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.availableSceneModes"> |
| <td class="entry_name" rowspan="1"> |
| 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 from android.<wbr/>control.<wbr/>scene<wbr/>Mode,<wbr/> plus UNSUPPORTED to indicate no scene modes are supported</div> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>what subset of the scene mode enum list is |
| supported.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>SCENE_<wbr/>MODE_<wbr/>FACE_<wbr/>PRIORITY must be supported if face |
| detection is supported</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.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_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>For AE,<wbr/> AWB,<wbr/> and AF,<wbr/> how many individual |
| regions can be listed for metering?</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.control.sceneModeOverrides"> |
| <td class="entry_name" rowspan="3"> |
| 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>List of AE,<wbr/> AWB,<wbr/> and AF modes to use for |
| each available scene mode</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>For each listed scene mode,<wbr/> lists the aeMode,<wbr/> |
| awbMode,<wbr/> and afMode that the HAL wants to use for that |
| scene mode.<wbr/></p> |
| <p>For each entry,<wbr/> the order is {aeMode,<wbr/> awbMode,<wbr/> afMode} in |
| order of increasing index</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 HAL is expected |
| to override aeMode,<wbr/> awbMode,<wbr/> and afMode with its |
| preferred settings for that scene mode.<wbr/></p> |
| <p>To simplify communication with old camera API applications,<wbr/> |
| the service wants this override list in the static metadata.<wbr/> |
| The order of this list matches that of availableSceneModes,<wbr/> |
| with 3 entires for each scene mode.<wbr/> The overrides listed |
| for SCENE_<wbr/>MODE_<wbr/>FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that |
| mode,<wbr/> the application-set aeMode,<wbr/> awbMode,<wbr/> and afMode are |
| used instead,<wbr/> like they are when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is |
| AUTO.<wbr/></p> |
| <p>It is recommended that for FACE_<wbr/>PRIORITY,<wbr/> the overrides |
| should be set to 0.<wbr/> As an example,<wbr/> if availableSceneModes is |
| { FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT },<wbr/> then the service expects |
| this field to have 9 entries; for example { 0 ,<wbr/> 0,<wbr/> 0,<wbr/> |
| ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> |
| INCANDESCENT,<wbr/> AUTO }</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"> |
| </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</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>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined 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</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</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>Each area is a rectangle plus weight: xmin,<wbr/> ymin,<wbr/> |
| xmax,<wbr/> ymax,<wbr/> weight.<wbr/> The rectangle is defined 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</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"> |
| </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</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 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 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</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> |
| </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> |
| </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> != 0</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> |
| </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">byte</span> |
| |
| <span class="entry_type_visibility"> [public]</span> |
| |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether this camera has a |
| flash</p> |
| </td> |
| |
| <td class="entry_units"> |
| boolean (0 = false,<wbr/> otherwise true) |
| </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</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> != 0</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> |
| </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="1"> |
| 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 android.<wbr/>flash.<wbr/>available 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 android.<wbr/>flash.<wbr/>available 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 android.<wbr/>flash.<wbr/>available 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</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_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/></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> |
| </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>Lens optical zoom setting</p> |
| </td> |
| |
| <td class="entry_units"> |
| focal length in mm |
| </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>Will not 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"> |
| diopters (1/<wbr/>m) |
| </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 = infinity focus.<wbr/> Used value should be clamped |
| to (0,<wbr/>minimum focus distance)</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> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether optical image stabilization is |
| enabled.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>android.<wbr/>lens.<wbr/>available<wbr/>Optical<wbr/>Stabilization</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>Will not 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>If fitted with optical zoom,<wbr/> what focal |
| lengths are available.<wbr/> If not,<wbr/> the static focal |
| length</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_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 not supported,<wbr/> only one value |
| should be reported</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="1"> |
| 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 of supported optical image |
| stabilization modes</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="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>Hyperfocal distance for this lens; set to |
| 0 if fixed focus</p> |
| </td> |
| |
| <td class="entry_units"> |
| diopters |
| </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>The hyperfocal distance is used for the old |
| API's 'fixed' setting</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</p> |
| </td> |
| |
| <td class="entry_units"> |
| diopters |
| </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</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.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/></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> |
| </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>Lens optical zoom setting</p> |
| </td> |
| |
| <td class="entry_units"> |
| focal length in mm |
| </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>Will not 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"> |
| diopters (1/<wbr/>m) |
| </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) |
| </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> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">ON</span> |
| <span class="entry_type_enum_optional">optional</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Whether optical image stabilization is |
| enabled.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>android.<wbr/>lens.<wbr/>available<wbr/>Optical<wbr/>Stabilization</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>Will not 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="1"> |
| 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> |
| </li> |
| <li> |
| <span class="entry_type_enum_name">MOVING</span> |
| </li> |
| </ul> |
| |
| </td> <!-- entry_type --> |
| |
| <td class="entry_description"> |
| <p>Current lens status</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_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"> |
| </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"> |
| </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"> |
| </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="3"> |
| 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"> |
| </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="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="3"> |
| 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>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="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>Any int</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>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>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>How many output streams can be allocated at |
| the same time for each type of stream</p> |
| </td> |
| |
| <td class="entry_units"> |
| The number of raw sensor streams; the number of |
| processed,<wbr/> uncompressed streams; and the number of |
| JPEG-compressed streams |
| </td> |
| |
| <td class="entry_range"> |
| <p>>=1 for Raw and JPEG-compressed stream.<wbr/> >= 3 |
| for processed,<wbr/> uncompressed streams</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>Video snapshot with preview callbacks requires 3 |
| processed streams (preview,<wbr/> record,<wbr/> app callbacks) and |
| one JPEG stream (snapshot)</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.maxNumReprocessStreams"> |
| <td class="entry_name" rowspan="1"> |
| 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</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 1</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.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>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 --> |
| |
| |
| |
| <!-- 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">RAW_SENSOR</span> |
| <span class="entry_type_enum_optional">optional</span> |
| <span class="entry_type_enum_value">0x20</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> |
| </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 availableJpegSizes.<wbr/> Should |
| correspond to the frame duration when only that JPEG |
| stream is active and captured in a burst,<wbr/> with all |
| processing set to FAST</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When 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>The minimum frame duration that is supported |
| for each resolution in availableProcessedSizes.<wbr/> Should |
| correspond to the frame duration when only that processed |
| stream is active,<wbr/> with all processing set to |
| FAST</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When 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.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>The minimum frame duration that is supported |
| for each raw resolution in availableRawSizes.<wbr/> Should |
| correspond to the frame duration when only the raw stream |
| is active.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_tags"> |
| <ul class="entry_tags"> |
| <li><a href="#tag_BC">BC</a></li> |
| </ul> |
| </td> |
| |
| </tr> |
| <tr class="entries_header"> |
| <th class="th_details" colspan="5">Details</th> |
| </tr> |
| <tr class="entry_cont"> |
| <td class="entry_details" colspan="5"> |
| <p>When 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</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/>info.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</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>Exposure time has priority,<wbr/> so duration is set to |
| max(duration,<wbr/> exposure time + overhead)</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.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 --> |
| |
| |
| |
| <!-- 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="1"> |
| 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; smaller or equal to |
| pixelArraySize.<wbr/></p> |
| </td> |
| |
| <td class="entry_units"> |
| xmin,<wbr/> ymin,<wbr/> width,<wbr/> height.<wbr/> Top left of full |
| pixel array is (0,<wbr/>0) |
| </td> |
| |
| <td class="entry_range"> |
| </td> |
| |
| <td class="entry_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.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="1"> |
| 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</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>Min <= 100e3 (100 us),<wbr/> Max >= 30e9 (30 |
| sec)</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.sensor.info.maxFrameDuration"> |
| <td class="entry_name" rowspan="3"> |
| 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)</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>Minimum duration is a function of resolution,<wbr/> |
| processing settings.<wbr/> See |
| android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations |
| android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations |
| <a href="#static_android.scaler.availableRawMinDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations</a></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</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>Maximum output resolution for raw format must |
| match this in |
| android.<wbr/>scaler.<wbr/>info.<wbr/>available<wbr/>Sizes<wbr/>Per<wbr/>Format</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"> [system]</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 |
| Bayer mosaic channels</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 0 each</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>As per DNG BlackLevelRepeatDim /<wbr/> BlackLevel |
| tags</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</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/> it can be a mix of analog and |
| digital</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 --> |
| |
| |
| |
| <!-- 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</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/>info.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</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>Exposure time has priority,<wbr/> so duration is set to |
| max(duration,<wbr/> exposure time + overhead)</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.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 --> |
| |
| |
| |
| <!-- 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="1"> |
| 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"> [system]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>No 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 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>Quality of lens shading correction applied |
| to the image data</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.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="1"> |
| 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"> [system]</span> |
| |
| <ul class="entry_type_enum"> |
| <li> |
| <span class="entry_type_enum_name">OFF</span> |
| <span class="entry_type_enum_notes"><p>No 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 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>Quality of lens shading correction applied |
| to the image data</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_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 HAL estimated scene illumination lighting |
| frequency</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>Report NONE if there doesn't appear to be flickering |
| illumination</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>Table mapping blue input values to output |
| values</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>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> |
| <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>Table mapping green input values to output |
| values</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>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> |
| <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="3"> |
| 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>Table mapping red input values to output |
| values</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>0-1 on input and output coordinates.<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>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> |
| <p>Since the input and output ranges may vary depending on |
| the camera pipeline,<wbr/> the input and output pixel values |
| are represented by normalized floating-point values |
| between 0 and 1,<wbr/> with 0 == black and 1 == white.<wbr/></p> |
| <p>The curve should be linearly interpolated between the |
| defined points.<wbr/> The points will be listed in increasing |
| order of P_<wbr/>IN.<wbr/> For example,<wbr/> if the array is: [0.<wbr/>0,<wbr/> 0.<wbr/>0,<wbr/> |
| 0.<wbr/>3,<wbr/> 0.<wbr/>5,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> then the input->output mapping |
| for a few sample points would be: 0 -> 0,<wbr/> 0.<wbr/>15 -> |
| 0.<wbr/>25,<wbr/> 0.<wbr/>3 -> 0.<wbr/>5,<wbr/> 0.<wbr/>5 -> 0.<wbr/>64</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="1"> |
| 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</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"> |
| </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.tonemap.maxCurvePoints"> |
| <td class="entry_name" rowspan="1"> |
| 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</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>>= 128</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.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>Table mapping blue input values to output |
| values</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>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> |
| <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>Table mapping green input values to output |
| values</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>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> |
| <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="3"> |
| 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>Table mapping red input values to output |
| values</p> |
| </td> |
| |
| <td class="entry_units"> |
| </td> |
| |
| <td class="entry_range"> |
| <p>0-1 on input and output coordinates.<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>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> |
| <p>Since the input and output ranges may vary depending on |
| the camera pipeline,<wbr/> the input and output pixel values |
| are represented by normalized floating-point values |
| between 0 and 1,<wbr/> with 0 == black and 1 == white.<wbr/></p> |
| <p>The curve should be linearly interpolated between the |
| defined points.<wbr/> The points will be listed in increasing |
| order of P_<wbr/>IN.<wbr/> For example,<wbr/> if the array is: [0.<wbr/>0,<wbr/> 0.<wbr/>0,<wbr/> |
| 0.<wbr/>3,<wbr/> 0.<wbr/>5,<wbr/> 1.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/> then the input->output mapping |
| for a few sample points would be: 0 -> 0,<wbr/> 0.<wbr/>15 -> |
| 0.<wbr/>25,<wbr/> 0.<wbr/>3 -> 0.<wbr/>5,<wbr/> 0.<wbr/>5 -> 0.<wbr/>64</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="1"> |
| 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</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"> |
| </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_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 --> |
| <!-- </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="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a> (static)</li> |
| <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li> |
| <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li> |
| <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li> |
| <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li> |
| <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li> |
| <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li> |
| <li><a href="#static_android.scaler.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.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="#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="#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 --> |
| </ul> |
| </div> |
| |
| [ <a href="#">top</a> ] |
| |
| </body> |
| </html> |