summaryrefslogtreecommitdiffstats
path: root/camera/docs
diff options
context:
space:
mode:
Diffstat (limited to 'camera/docs')
-rw-r--r--camera/docs/docs.html232
-rw-r--r--camera/docs/metadata_properties.xml157
2 files changed, 332 insertions, 57 deletions
diff --git a/camera/docs/docs.html b/camera/docs/docs.html
index c9ae10f..0674494 100644
--- a/camera/docs/docs.html
+++ b/camera/docs/docs.html
@@ -1833,9 +1833,9 @@ supported by this camera device.<wbr/></p>
<td class="entry_details" colspan="5">
<p>This key lists the valid modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a>.<wbr/> If no
aberration correction modes are available for a device,<wbr/> this list will solely include
-OFF mode.<wbr/></p>
-<p>For FULL capability device (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL),<wbr/> OFF is
-always included.<wbr/></p>
+OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
+<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
+OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
<p>LEGACY devices will always only support FAST mode.<wbr/></p>
</td>
</tr>
@@ -1913,7 +1913,8 @@ sources.<wbr/></p></span>
<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>
+condition.<wbr/> This is the default mode if AUTO is
+available on given camera device.<wbr/></p></span>
</li>
</ul>
@@ -1962,8 +1963,10 @@ control.<wbr/></p>
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 is supported by all
-camera devices.<wbr/></p>
+<p>AUTO mode is the default if it is available on given
+camera device.<wbr/> When AUTO mode is not available,<wbr/> the
+default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
+and 60HZ will be available.<wbr/></p>
<p>If manual exposure control is enabled (by setting
<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
then this setting has no effect,<wbr/> and the application must
@@ -1979,8 +1982,9 @@ the application in this.<wbr/></p>
<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>
+to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
+the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
+60HZ must be available.<wbr/></p>
<p>If manual exposure control is enabled (by setting
<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
then the exposure values provided by the application must not be
@@ -2175,6 +2179,14 @@ any flicker during the switch,<wbr/> the following procedure is recommended:</p>
<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
a flash unit for this camera device.<wbr/></p>
+<p>Note that auto-white balance (AWB) and auto-focus (AF)
+behavior is device dependent when AE is in OFF mode.<wbr/>
+To have consistent behavior across different devices,<wbr/>
+it is recommended to either set AWB and AF to OFF mode
+or lock AWB and AF before setting AE to OFF.<wbr/>
+See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
+<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
+for more details.<wbr/></p>
<p>LEGACY devices do not support the OFF mode and will
override attempts to use this value to ON.<wbr/></p></span>
</li>
@@ -2479,9 +2491,9 @@ metering sequence when it processes this request.<wbr/></p>
<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
+set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
precapture metering sequence.<wbr/></p>
-<p>The precapture sequence should triggered before starting a
+<p>The precapture sequence should be triggered before starting a
high-quality still capture for final metering decisions to
be made,<wbr/> and for firing pre-capture flash pulses to estimate
scene brightness and required final capture flash power,<wbr/> when
@@ -2489,6 +2501,14 @@ the flash is enabled.<wbr/></p>
<p>Normally,<wbr/> this entry should be set to START for only a
single request,<wbr/> and the application should wait until the
sequence completes before starting a new one.<wbr/></p>
+<p>When a precapture metering sequence is finished,<wbr/> the camera device
+may lock the auto-exposure routine internally to be able to accurately expose the
+subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
+For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
+submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
+submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request
+with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a
+still capture request after the precapture sequence completes.<wbr/></p>
<p>The exact effect of auto-exposure (AE) precapture trigger
depends on the current AE mode and state; see
<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
@@ -2632,7 +2652,10 @@ mode it is set to.<wbr/></p>
<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 and the lens is not fixed focus
-(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/></p>
+(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
+when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
+dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
+setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
in result metadata.<wbr/></p>
@@ -3073,7 +3096,10 @@ is.<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>
+<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
+is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
+also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before
+setting AE mode to OFF.<wbr/></p>
<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
routine is disabled.<wbr/> The application manually controls the white
balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>
@@ -3695,10 +3721,38 @@ the application avoids unnecessary scene mode switch as much as possible.<wbr/><
<li>
<span class="entry_type_enum_name">HDR</span>
<span class="entry_type_enum_optional">[optional]</span>
- <span class="entry_type_enum_optional">[hidden]</span>
- <span class="entry_type_enum_notes"><p>Turn on custom high dynamic range (HDR) mode.<wbr/></p>
-<p>This is intended for LEGACY mode devices only;
-HAL3+ camera devices should not implement this mode.<wbr/></p></span>
+ <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
+<p>In this scene mode,<wbr/> the camera device captures images
+that keep a larger range of scene illumination levels
+visible in the final image.<wbr/> For example,<wbr/> when taking a
+picture of a object in front of a bright window,<wbr/> both
+the object and the scene through the window may be
+visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
+one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
+HDR mode generally takes much longer to capture a single
+image,<wbr/> has no user control,<wbr/> and may have other artifacts
+depending on the HDR method used.<wbr/></p>
+<p>Therefore,<wbr/> HDR captures operate at a much slower rate
+than regular captures.<wbr/></p>
+<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
+is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
+STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
+using a high dynamic range capture technique.<wbr/> On LEGACY
+devices,<wbr/> captures that target a JPEG-format output will
+be captured with HDR,<wbr/> and the capture intent is not
+relevant.<wbr/></p>
+<p>The HDR capture may involve the device capturing a burst
+of images internally and combining them into one,<wbr/> or it
+may involve the device using specialized high dynamic
+range capture hardware.<wbr/> In all cases,<wbr/> a single image is
+produced in response to a capture request submitted
+while in HDR mode.<wbr/></p>
+<p>Since substantial post-processing is generally needed to
+produce an HDR image,<wbr/> only YUV and JPEG outputs are
+supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
+JPEG outputs are supported for LEGACY HDR
+captures.<wbr/> Using a RAW output for HDR capture is not
+supported.<wbr/></p></span>
</li>
</ul>
@@ -3913,8 +3967,7 @@ supported by this camera device.<wbr/></p>
supported by a given camera device.<wbr/> This field lists the
valid anti-banding modes that the application may request
for this camera device with the
-<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/> This list
-always includes AUTO.<wbr/></p>
+<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
</td>
</tr>
@@ -4079,8 +4132,12 @@ that are supported by this camera device.<wbr/></p>
</td>
<td class="entry_range">
- <p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &lt;= -2 EV</code></p>
+ <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
+<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
+compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
+<p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &lt;= -2 EV</code></p>
<p><code>Max.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &gt;= 2 EV</code></p>
+<p>LEGACY devices may support a smaller range than this.<wbr/></p>
</td>
<td class="entry_tags">
@@ -4990,7 +5047,8 @@ sources.<wbr/></p></span>
<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>
+condition.<wbr/> This is the default mode if AUTO is
+available on given camera device.<wbr/></p></span>
</li>
</ul>
@@ -5039,8 +5097,10 @@ control.<wbr/></p>
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 is supported by all
-camera devices.<wbr/></p>
+<p>AUTO mode is the default if it is available on given
+camera device.<wbr/> When AUTO mode is not available,<wbr/> the
+default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
+and 60HZ will be available.<wbr/></p>
<p>If manual exposure control is enabled (by setting
<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
then this setting has no effect,<wbr/> and the application must
@@ -5056,8 +5116,9 @@ the application in this.<wbr/></p>
<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>
+to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
+the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
+60HZ must be available.<wbr/></p>
<p>If manual exposure control is enabled (by setting
<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
then the exposure values provided by the application must not be
@@ -5252,6 +5313,14 @@ any flicker during the switch,<wbr/> the following procedure is recommended:</p>
<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
a flash unit for this camera device.<wbr/></p>
+<p>Note that auto-white balance (AWB) and auto-focus (AF)
+behavior is device dependent when AE is in OFF mode.<wbr/>
+To have consistent behavior across different devices,<wbr/>
+it is recommended to either set AWB and AF to OFF mode
+or lock AWB and AF before setting AE to OFF.<wbr/>
+See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
+<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
+for more details.<wbr/></p>
<p>LEGACY devices do not support the OFF mode and will
override attempts to use this value to ON.<wbr/></p></span>
</li>
@@ -5556,9 +5625,9 @@ metering sequence when it processes this request.<wbr/></p>
<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
+set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
precapture metering sequence.<wbr/></p>
-<p>The precapture sequence should triggered before starting a
+<p>The precapture sequence should be triggered before starting a
high-quality still capture for final metering decisions to
be made,<wbr/> and for firing pre-capture flash pulses to estimate
scene brightness and required final capture flash power,<wbr/> when
@@ -5566,6 +5635,14 @@ the flash is enabled.<wbr/></p>
<p>Normally,<wbr/> this entry should be set to START for only a
single request,<wbr/> and the application should wait until the
sequence completes before starting a new one.<wbr/></p>
+<p>When a precapture metering sequence is finished,<wbr/> the camera device
+may lock the auto-exposure routine internally to be able to accurately expose the
+subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
+For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
+submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
+submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request
+with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a
+still capture request after the precapture sequence completes.<wbr/></p>
<p>The exact effect of auto-exposure (AE) precapture trigger
depends on the current AE mode and state; see
<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
@@ -5976,7 +6053,10 @@ mode it is set to.<wbr/></p>
<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 and the lens is not fixed focus
-(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/></p>
+(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
+when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
+dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
+setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
in result metadata.<wbr/></p>
@@ -6955,7 +7035,10 @@ is.<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>
+<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
+is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
+also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before
+setting AE mode to OFF.<wbr/></p>
<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
routine is disabled.<wbr/> The application manually controls the white
balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>
@@ -7763,10 +7846,38 @@ the application avoids unnecessary scene mode switch as much as possible.<wbr/><
<li>
<span class="entry_type_enum_name">HDR</span>
<span class="entry_type_enum_optional">[optional]</span>
- <span class="entry_type_enum_optional">[hidden]</span>
- <span class="entry_type_enum_notes"><p>Turn on custom high dynamic range (HDR) mode.<wbr/></p>
-<p>This is intended for LEGACY mode devices only;
-HAL3+ camera devices should not implement this mode.<wbr/></p></span>
+ <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
+<p>In this scene mode,<wbr/> the camera device captures images
+that keep a larger range of scene illumination levels
+visible in the final image.<wbr/> For example,<wbr/> when taking a
+picture of a object in front of a bright window,<wbr/> both
+the object and the scene through the window may be
+visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
+one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
+HDR mode generally takes much longer to capture a single
+image,<wbr/> has no user control,<wbr/> and may have other artifacts
+depending on the HDR method used.<wbr/></p>
+<p>Therefore,<wbr/> HDR captures operate at a much slower rate
+than regular captures.<wbr/></p>
+<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
+is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
+STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
+using a high dynamic range capture technique.<wbr/> On LEGACY
+devices,<wbr/> captures that target a JPEG-format output will
+be captured with HDR,<wbr/> and the capture intent is not
+relevant.<wbr/></p>
+<p>The HDR capture may involve the device capturing a burst
+of images internally and combining them into one,<wbr/> or it
+may involve the device using specialized high dynamic
+range capture hardware.<wbr/> In all cases,<wbr/> a single image is
+produced in response to a capture request submitted
+while in HDR mode.<wbr/></p>
+<p>Since substantial post-processing is generally needed to
+produce an HDR image,<wbr/> only YUV and JPEG outputs are
+supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
+JPEG outputs are supported for LEGACY HDR
+captures.<wbr/> Using a RAW output for HDR capture is not
+supported.<wbr/></p></span>
</li>
</ul>
@@ -13751,6 +13862,53 @@ raw sensor images.<wbr/></p>
resolution of JPEG streams.<wbr/></li>
</ul></span>
</li>
+ <li>
+ <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
+ <span class="entry_type_enum_optional">[optional]</span>
+ <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
+the sensor controls while the built-in 3A algorithm is running.<wbr/> This allows
+reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
+<p>The values reported for the following controls are guaranteed to be available
+in the CaptureResult,<wbr/> including when 3A is enabled:</p>
+<ul>
+<li>Exposure control<ul>
+<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
+</ul>
+</li>
+<li>Sensitivity control<ul>
+<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
+</ul>
+</li>
+<li>Lens controls (if the lens is adjustable)<ul>
+<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
+<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
+</ul>
+</li>
+</ul>
+<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
+always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">BURST_CAPTURE</span>
+ <span class="entry_type_enum_optional">[optional]</span>
+ <span class="entry_type_enum_notes"><p>The camera device supports capturing maximum-resolution
+images at &gt;= 20 frames per second,<wbr/> in at least the
+uncompressed YUV format,<wbr/> when post-processing settings
+are set to FAST.<wbr/></p>
+<p>More specifically,<wbr/> this means that a size matching the
+camera device's active array size is listed as a
+supported size for the YUV_<wbr/>420_<wbr/>888 format in
+<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>,<wbr/> the minimum frame
+duration for that format and size is &lt;= 1/<wbr/>20 s,<wbr/> and
+the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
+lists at least one FPS range where the minimum FPS is</p>
+<blockquote>
+<p>= 1 /<wbr/> minimumFrameDuration for the maximum-size
+YUV_<wbr/>420_<wbr/>888 format.<wbr/></p>
+</blockquote>
+<p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is
+guaranted to have a value between 0 and 4,<wbr/> inclusive.<wbr/></p></span>
+ </li>
</ul>
</td> <!-- entry_type -->
@@ -22594,12 +22752,16 @@ doesn't violate the above rules.<wbr/></p>
<p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p>
<p>A FULL device will support below capabilities:</p>
<ul>
-<li>30fps at maximum resolution (== sensor resolution) is preferred,<wbr/> more than 20fps is required.<wbr/></li>
+<li>30fps operation at maximum resolution (== sensor resolution) is preferred,<wbr/> more than
+ 20fps is required,<wbr/> for at least uncompressed YUV
+ output.<wbr/> (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li>
<li>Per frame control (<a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> <code>==</code> PER_<wbr/>FRAME_<wbr/>CONTROL)</li>
<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li>
-<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
+<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
+ MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
<li>Arbitrary cropping region (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM)</li>
-<li>At least 3 processed (but not stalling) format output streams (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>&gt;=</code> 3)</li>
+<li>At least 3 processed (but not stalling) format output streams
+ (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>&gt;=</code> 3)</li>
<li>The required stream configuration defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li>
<li>The required exposure time range defined in <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
<li>The required maxFrameDuration defined in <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
diff --git a/camera/docs/metadata_properties.xml b/camera/docs/metadata_properties.xml
index c3a8eb4..d7ce6df 100644
--- a/camera/docs/metadata_properties.xml
+++ b/camera/docs/metadata_properties.xml
@@ -336,10 +336,10 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
<details>
This key lists the valid modes for android.colorCorrection.aberrationMode. If no
aberration correction modes are available for a device, this list will solely include
- OFF mode.
+ OFF mode. All camera devices will support either OFF or FAST mode.
- For FULL capability device (android.info.supportedHardwareLevel `==` FULL), OFF is
- always included.
+ Camera devices that support the MANUAL_POST_PROCESSING capability will always list
+ OFF mode. This includes all FULL level devices.
LEGACY devices will always only support FAST mode.
</details>
@@ -375,7 +375,8 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
<notes>
The camera device will automatically adapt its
antibanding routine to the current illumination
- conditions. This is the default.
+ condition. This is the default mode if AUTO is
+ available on given camera device.
</notes>
</value>
</enum>
@@ -409,8 +410,10 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
android.control.aeAvailableAntibandingModes key contains
the available modes for a given camera device.
- The default mode is AUTO, which is supported by all
- camera devices.
+ AUTO mode is the default if it is available on given
+ camera device. When AUTO mode is not available, the
+ default will be either 50HZ or 60HZ, and both 50HZ
+ and 60HZ will be available.
If manual exposure control is enabled (by setting
android.control.aeMode or android.control.mode to OFF),
@@ -421,8 +424,9 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
</details>
<hal_details>
For all capture request templates, this field must be set
- to AUTO. AUTO is the only mode that must supported;
- OFF, 50HZ, 60HZ are all optional.
+ to AUTO if AUTO mode is available. If AUTO is not available,
+ the default must be either 50HZ or 60HZ, and both 50HZ and
+ 60HZ must be available.
If manual exposure control is enabled (by setting
android.control.aeMode or android.control.mode to OFF),
@@ -524,6 +528,15 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
device, along with android.flash.* fields, if there's
a flash unit for this camera device.
+ Note that auto-white balance (AWB) and auto-focus (AF)
+ behavior is device dependent when AE is in OFF mode.
+ To have consistent behavior across different devices,
+ it is recommended to either set AWB and AF to OFF mode
+ or lock AWB and AF before setting AE to OFF.
+ See android.control.awbMode, android.control.afMode,
+ android.control.awbLock, and android.control.afTrigger
+ for more details.
+
LEGACY devices do not support the OFF mode and will
override attempts to use this value to ON.
</notes>
@@ -692,10 +705,10 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
metering sequence when it processes this request.</description>
<details>This entry is normally set to IDLE, or is not
included at all in the request settings. When included and
- set to START, the camera device will trigger the autoexposure
+ set to START, the camera device will trigger the auto-exposure (AE)
precapture metering sequence.
- The precapture sequence should triggered before starting a
+ The precapture sequence should be triggered before starting a
high-quality still capture for final metering decisions to
be made, and for firing pre-capture flash pulses to estimate
scene brightness and required final capture flash power, when
@@ -705,6 +718,15 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
single request, and the application should wait until the
sequence completes before starting a new one.
+ When a precapture metering sequence is finished, the camera device
+ may lock the auto-exposure routine internally to be able to accurately expose the
+ subsequent still capture image (`android.control.captureIntent == STILL_CAPTURE`).
+ For this case, the AE may not resume normal scan if no subsequent still capture is
+ submitted. To ensure that the AE routine restarts normal scan, the application should
+ submit a request with `android.control.aeLock == true`, followed by a request
+ with `android.control.aeLock == false`, if the application decides not to submit a
+ still capture request after the precapture sequence completes.
+
The exact effect of auto-exposure (AE) precapture trigger
depends on the current AE mode and state; see
android.control.aeState for AE precapture state transition
@@ -807,7 +829,10 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
mode it is set to.</description>
<range>android.control.afAvailableModes</range>
<details>Only effective if android.control.mode = AUTO and the lens is not fixed focus
- (i.e. `android.lens.info.minimumFocusDistance &gt; 0`).
+ (i.e. `android.lens.info.minimumFocusDistance &gt; 0`). Also note that
+ when android.control.aeMode is OFF, the behavior of AF is device
+ dependent. It is recommended to lock AF by using android.control.afTrigger before
+ setting android.control.aeMode to OFF, or set AF mode to OFF when AE is OFF.
If the lens is controlled by the camera device auto-focus algorithm,
the camera device will report the current AF status in android.control.afState
@@ -1107,7 +1132,10 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
When set to the ON mode, the camera device's auto-white balance
routine is enabled, overriding the application's selected
android.colorCorrection.transform, android.colorCorrection.gains and
- android.colorCorrection.mode.
+ android.colorCorrection.mode. Note that when android.control.aeMode
+ is OFF, the behavior of AWB is device dependent. It is recommened to
+ also set AWB mode to OFF or lock AWB by using android.control.awbLock before
+ setting AE mode to OFF.
When set to the OFF mode, the camera device's auto-white balance
routine is disabled. The application manually controls the white
@@ -1555,12 +1583,45 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
the application avoids unnecessary scene mode switch as much as possible.
</notes>
</value>
- <value optional="true" hidden="true">HDR
+ <value optional="true">HDR
<notes>
- Turn on custom high dynamic range (HDR) mode.
-
- This is intended for LEGACY mode devices only;
- HAL3+ camera devices should not implement this mode.
+ Turn on a device-specific high dynamic range (HDR) mode.
+
+ In this scene mode, the camera device captures images
+ that keep a larger range of scene illumination levels
+ visible in the final image. For example, when taking a
+ picture of a object in front of a bright window, both
+ the object and the scene through the window may be
+ visible when using HDR mode, while in normal AUTO mode,
+ one or the other may be poorly exposed. As a tradeoff,
+ HDR mode generally takes much longer to capture a single
+ image, has no user control, and may have other artifacts
+ depending on the HDR method used.
+
+ Therefore, HDR captures operate at a much slower rate
+ than regular captures.
+
+ In this mode, on LIMITED or FULL devices, when a request
+ is made with a android.control.captureIntent of
+ STILL_CAPTURE, the camera device will capture an image
+ using a high dynamic range capture technique. On LEGACY
+ devices, captures that target a JPEG-format output will
+ be captured with HDR, and the capture intent is not
+ relevant.
+
+ The HDR capture may involve the device capturing a burst
+ of images internally and combining them into one, or it
+ may involve the device using specialized high dynamic
+ range capture hardware. In all cases, a single image is
+ produced in response to a capture request submitted
+ while in HDR mode.
+
+ Since substantial post-processing is generally needed to
+ produce an HDR image, only YUV and JPEG outputs are
+ supported for LIMITED/FULL device HDR captures, and only
+ JPEG outputs are supported for LEGACY HDR
+ captures. Using a RAW output for HDR capture is not
+ supported.
</notes>
</value>
</enum>
@@ -1650,8 +1711,7 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
supported by a given camera device. This field lists the
valid anti-banding modes that the application may request
for this camera device with the
- android.control.aeAntibandingMode control. This list
- always includes AUTO.
+ android.control.aeAntibandingMode control.
</details>
<tag id="BC" />
</entry>
@@ -1712,9 +1772,16 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
android.control.aeExposureCompensation, in counts of android.control.aeCompensationStep,
that are supported by this camera device.</description>
<range>
+ Range [0,0] indicates that exposure compensation is not supported.
+
+ For LIMITED and FULL devices, range must follow below requirements if exposure
+ compensation is supported (`range != [0, 0]`):
+
`Min.exposure compensation * android.control.aeCompensationStep &lt;= -2 EV`
`Max.exposure compensation * android.control.aeCompensationStep &gt;= 2 EV`
+
+ LEGACY devices may support a smaller range than this.
</range>
<tag id="BC" />
</entry>
@@ -3941,6 +4008,48 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
resolution of JPEG streams.
</notes>
</value>
+ <value optional="true">READ_SENSOR_SETTINGS
+ <notes>
+ The camera device supports accurately reporting the sensor settings for many of
+ the sensor controls while the built-in 3A algorithm is running. This allows
+ reporting of sensor settings even when these settings cannot be manually changed.
+
+ The values reported for the following controls are guaranteed to be available
+ in the CaptureResult, including when 3A is enabled:
+
+ * Exposure control
+ * android.sensor.exposureTime
+ * Sensitivity control
+ * android.sensor.sensitivity
+ * Lens controls (if the lens is adjustable)
+ * android.lens.focusDistance
+ * android.lens.aperture
+
+ This capability is a subset of the MANUAL_SENSOR control capability, and will
+ always be included if the MANUAL_SENSOR capability is available.
+ </notes>
+ </value>
+ <value optional="true">BURST_CAPTURE
+ <notes>
+ The camera device supports capturing maximum-resolution
+ images at &gt;= 20 frames per second, in at least the
+ uncompressed YUV format, when post-processing settings
+ are set to FAST.
+
+ More specifically, this means that a size matching the
+ camera device's active array size is listed as a
+ supported size for the YUV_420_888 format in
+ android.scaler.streamConfigurationMap, the minimum frame
+ duration for that format and size is &lt;= 1/20 s, and
+ the android.control.aeAvailableTargetFpsRanges entry
+ lists at least one FPS range where the minimum FPS is
+ &gt;= 1 / minimumFrameDuration for the maximum-size
+ YUV_420_888 format.
+
+ In addition, the android.sync.maxLatency field is
+ guaranted to have a value between 0 and 4, inclusive.
+ </notes>
+ </value>
</enum>
<description>List of capabilities that this camera device
advertises as fully supporting.</description>
@@ -6877,12 +6986,16 @@ xsi:schemaLocation="http://schemas.android.com/service/camera/metadata/ metadata
A FULL device will support below capabilities:
- * 30fps at maximum resolution (== sensor resolution) is preferred, more than 20fps is required.
+ * 30fps operation at maximum resolution (== sensor resolution) is preferred, more than
+ 20fps is required, for at least uncompressed YUV
+ output. (android.request.availableCapabilities contains BURST_CAPTURE)
* Per frame control (android.sync.maxLatency `==` PER_FRAME_CONTROL)
* Manual sensor control (android.request.availableCapabilities contains MANUAL_SENSOR)
- * Manual post-processing control (android.request.availableCapabilities contains MANUAL_POST_PROCESSING)
+ * Manual post-processing control (android.request.availableCapabilities contains
+ MANUAL_POST_PROCESSING)
* Arbitrary cropping region (android.scaler.croppingType `==` FREEFORM)
- * At least 3 processed (but not stalling) format output streams (android.request.maxNumOutputProc `&gt;=` 3)
+ * At least 3 processed (but not stalling) format output streams
+ (android.request.maxNumOutputProc `&gt;=` 3)
* The required stream configuration defined in android.scaler.availableStreamConfigurations
* The required exposure time range defined in android.sensor.info.exposureTimeRange
* The required maxFrameDuration defined in android.sensor.info.maxFrameDuration