</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
- <p>When auto-white balance is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
+ <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
application controls how the color mapping is performed.<wbr/></p>
<p>We define the expected processing pipeline below.<wbr/> For consistency
<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>
+from sensor RGB color space to output linear sRGB color space.<wbr/></p>
</td>
<td class="entry_units">
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
- <p>When auto-white balance is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
+ <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
application controls how the color mapping is performed.<wbr/></p>
<p>We define the expected processing pipeline below.<wbr/> For consistency
<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>
+from sensor RGB color space to output linear sRGB color space.<wbr/></p>
</td>
<td class="entry_units">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Adjustment to AE target image
-brightness</p>
+ <p>Adjustment to auto-exposure (AE) target image
+brightness.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
+ <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
</td>
<td class="entry_tags">
</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 EV.<wbr/> Note that this control will only be effective
-if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control will take effect even when
-<a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
+ <p>The adjustment is measured as a count of steps,<wbr/> with the
+step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
+allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
+<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
+will mean an exposure compensation of +2 EV; -3 will mean an
+exposure compensation of -1 EV.<wbr/> One EV represents a doubling
+of image brightness.<wbr/> Note that this control will only be
+effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
+will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
<p>In the event of exposure compensation value being changed,<wbr/> camera device
may take several frames to reach the newly requested exposure target.<wbr/>
During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Whether AE is currently locked to its latest
+ <p>Whether auto-exposure (AE) is currently locked to its latest
calculated values.<wbr/></p>
</td>
<td class="entry_description">
<p>Range over which fps can be adjusted to
-maintain exposure</p>
+maintain exposure.<wbr/></p>
</td>
<td class="entry_units">
</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>
+ <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
+manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></p>
</td>
</tr>
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>
+<p>The effect of auto-exposure (AE) precapture trigger depends
+on the current AE mode and state; see
+<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
+details.<wbr/></p>
</td>
</tr>
</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
+ <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
+<p>In this mode,<wbr/> the lens does not move unless
the autofocus trigger action is called.<wbr/> When that trigger
-is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
+is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
+<p>Always supported if lens is not fixed focus.<wbr/></p>
+<p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens
+is fixed-focus.<wbr/></p>
<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
and sets the AF state to INACTIVE.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">MACRO</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
+ <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
+<p>In this mode,<wbr/> the lens does not move unless the
+autofocus trigger action is called.<wbr/> When that trigger is
+activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
+the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
+mode is optimized for focusing on objects very close to
+the camera.<wbr/></p>
+<p>When that trigger is activated,<wbr/> AF will transition to
ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
-NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
+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>
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Whether AF is currently enabled,<wbr/> and what
-mode it is set to</p>
+ <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
+mode it is set to.<wbr/></p>
</td>
<td class="entry_units">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Whether AWB is currently locked to its
+ <p>Whether auto-white balance (AWB) is currently locked to its
latest calculated values.<wbr/></p>
</td>
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Whether AWB is currently setting the color
+ <p>Whether auto-white balance (AWB) is currently setting the color
transform fields,<wbr/> and what its illumination target
is.<wbr/></p>
</td>
<td class="entry_description">
<p>Whether video stabilization is
-active</p>
+active.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_description">
<p>List of frame rate ranges supported by the
-AE algorithm/<wbr/>hardware</p>
+auto-exposure (AE) algorithm/<wbr/>hardware</p>
</td>
<td class="entry_units">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>List of AF modes that can be
+ <p>List of auto-focus (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> <!-- entry_type -->
<td class="entry_description">
- <p>Adjustment to AE target image
-brightness</p>
+ <p>Adjustment to auto-exposure (AE) target image
+brightness.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
+ <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
</td>
<td class="entry_tags">
</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 EV.<wbr/> Note that this control will only be effective
-if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control will take effect even when
-<a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
+ <p>The adjustment is measured as a count of steps,<wbr/> with the
+step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
+allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
+<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
+will mean an exposure compensation of +2 EV; -3 will mean an
+exposure compensation of -1 EV.<wbr/> One EV represents a doubling
+of image brightness.<wbr/> Note that this control will only be
+effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
+will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
<p>In the event of exposure compensation value being changed,<wbr/> camera device
may take several frames to reach the newly requested exposure target.<wbr/>
During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Whether AE is currently locked to its latest
+ <p>Whether auto-exposure (AE) is currently locked to its latest
calculated values.<wbr/></p>
</td>
<td class="entry_description">
<p>Range over which fps can be adjusted to
-maintain exposure</p>
+maintain exposure.<wbr/></p>
</td>
<td class="entry_units">
</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>
+ <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
+manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></p>
</td>
</tr>
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>
+<p>The effect of auto-exposure (AE) precapture trigger depends
+on the current AE mode and state; see
+<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
+details.<wbr/></p>
</td>
</tr>
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Current state of AE algorithm</p>
+ <p>Current state of auto-exposure (AE) algorithm.<wbr/></p>
</td>
<td class="entry_units">
</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
+ <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
+<p>In this mode,<wbr/> the lens does not move unless
the autofocus trigger action is called.<wbr/> When that trigger
-is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
+is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
+<p>Always supported if lens is not fixed focus.<wbr/></p>
+<p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens
+is fixed-focus.<wbr/></p>
<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
and sets the AF state to INACTIVE.<wbr/></p></span>
</li>
<li>
<span class="entry_type_enum_name">MACRO</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
+ <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
+<p>In this mode,<wbr/> the lens does not move unless the
+autofocus trigger action is called.<wbr/> When that trigger is
+activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
+the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
+mode is optimized for focusing on objects very close to
+the camera.<wbr/></p>
+<p>When that trigger is activated,<wbr/> AF will transition to
ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
-NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
+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>
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Whether AF is currently enabled,<wbr/> and what
-mode it is set to</p>
+ <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
+mode it is set to.<wbr/></p>
</td>
<td class="entry_units">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Current state of AF algorithm.<wbr/></p>
+ <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
</td>
<td class="entry_units">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Whether AWB is currently locked to its
+ <p>Whether auto-white balance (AWB) is currently locked to its
latest calculated values.<wbr/></p>
</td>
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Whether AWB is currently setting the color
+ <p>Whether auto-white balance (AWB) is currently setting the color
transform fields,<wbr/> and what its illumination target
is.<wbr/></p>
</td>
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Current state of AWB algorithm</p>
+ <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_description">
<p>Whether video stabilization is
-active</p>
+active.<wbr/></p>
</td>
<td class="entry_units">
<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
+control should be used along with auto-exposure (AE) precapture metering sequence
(<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>),<wbr/> otherwise,<wbr/> the image may be incorrectly exposed.<wbr/></p>
<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
<p>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
+control should be used along with auto-exposure (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 class="entry_description">
<p>Compression quality of the final JPEG
-image</p>
+image.<wbr/></p>
</td>
<td class="entry_units">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Resolution of embedded JPEG thumbnail</p>
+ <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
</td>
<td class="entry_units">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Supported resolutions for the JPEG thumbnail</p>
+ <p>Supported resolutions for the JPEG thumbnail.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_description">
<p>Compression quality of the final JPEG
-image</p>
+image.<wbr/></p>
</td>
<td class="entry_units">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Resolution of embedded JPEG thumbnail</p>
+ <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_description">
<p>Distance to plane of sharpest focus,<wbr/>
-measured from frontmost surface of the lens</p>
+measured from frontmost surface of the lens.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_description">
<p>Distance to plane of sharpest focus,<wbr/>
-measured from frontmost surface of the lens</p>
+measured from frontmost surface of the lens.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_description">
<p>The range of scene distances that are in
-sharp focus (depth of field)</p>
+sharp focus (depth of field).<wbr/></p>
</td>
<td class="entry_units">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Mode of operation for the noise reduction
+ <p>Mode of operation for the noise reduction.<wbr/>
algorithm</p>
</td>
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Mode of operation for the noise reduction
+ <p>Mode of operation for the noise reduction.<wbr/>
algorithm</p>
</td>
may be delivered to the application layer from the camera device as
soon as they are available.<wbr/></p>
<p>A value of 1 means that partial results are not supported.<wbr/></p>
-<p>A typical use case for this might be: after requesting an AF lock the
-new AF state might be available 50% of the way through the pipeline.<wbr/>
-The camera device could then immediately dispatch this state via a
-partial result to the framework/<wbr/>application layer,<wbr/> and the rest of
-the metadata via later partial results.<wbr/></p>
+<p>A typical use case for this might be: after requesting an
+auto-focus (AF) lock the new AF state might be available 50%
+of the way through the pipeline.<wbr/> The camera device could
+then immediately dispatch this state via a partial result to
+the framework/<wbr/>application layer,<wbr/> and the rest of the
+metadata via later partial results.<wbr/></p>
</td>
</tr>
<li>RAW16 is reprocessable into both YUV_<wbr/>420_<wbr/>888 and JPEG
formats.<wbr/></li>
<li>The maximum available resolution for RAW16 streams (both
- input/<wbr/>output) will match the value in
- <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></li>
+ input/<wbr/>output) will match the either value in
+ <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
+ <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
<li>All DNG-related optional metadata entries are provided
by the camera device.<wbr/></li>
</ul></span>
<tr class="entry" id="controls_android.scaler.cropRegion">
<td class="entry_name
- " rowspan="3">
+ " rowspan="5">
android.<wbr/>scaler.<wbr/>crop<wbr/>Region
</td>
<td class="entry_type">
</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>
+ <p>The region of the sensor to read out for this capture.<wbr/></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
+ android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
</td>
<td class="entry_range">
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
- <p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
-conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/>
-it is not croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
+ <p>The crop region coordinate system is based off
+<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
+top-left corner of the sensor active array.<wbr/></p>
+<p>Output streams use this rectangle to produce their output,<wbr/>
+cropping to a smaller region if necessary to maintain the
+stream's aspect ratio,<wbr/> then scaling the sensor input to
+match the output's configured resolution.<wbr/></p>
+<p>The crop region is applied after the RAW to other color
+space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
+(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
+croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
<p>For non-raw streams,<wbr/> any additional per-stream cropping will
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
+ratio,<wbr/> then 4:3 streams will use the exact crop
+region.<wbr/> 16:9 streams will 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
+outputs will crop horizontally (pillarbox),<wbr/> and 16:9
+streams will match exactly.<wbr/> These additional crops will
be centered within the crop region.<wbr/></p>
-<p>The output streams must maintain square pixels at all
+<p>The width and height of the crop region cannot
+be set to be smaller than
+<code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and
+<code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p>
+<p>The camera device may adjust the crop region to account
+for rounding and other hardware requirements; the final
+crop region used will be included in the output capture
+result.<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 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/>
-<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> ) and floor(
-activeArraySize.<wbr/>height /<wbr/>
-<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>),<wbr/> respectively.<wbr/></p>
+possible.<wbr/></p>
+<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
</td>
</tr>
-
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="dynamic_android.scaler.cropRegion">
<td class="entry_name
- " rowspan="3">
+ " rowspan="5">
android.<wbr/>scaler.<wbr/>crop<wbr/>Region
</td>
<td class="entry_type">
</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>
+ <p>The region of the sensor to read out for this capture.<wbr/></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
+ android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
</td>
<td class="entry_range">
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
- <p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
-conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/>
-it is not croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
+ <p>The crop region coordinate system is based off
+<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
+top-left corner of the sensor active array.<wbr/></p>
+<p>Output streams use this rectangle to produce their output,<wbr/>
+cropping to a smaller region if necessary to maintain the
+stream's aspect ratio,<wbr/> then scaling the sensor input to
+match the output's configured resolution.<wbr/></p>
+<p>The crop region is applied after the RAW to other color
+space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
+(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
+croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
<p>For non-raw streams,<wbr/> any additional per-stream cropping will
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
+ratio,<wbr/> then 4:3 streams will use the exact crop
+region.<wbr/> 16:9 streams will 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
+outputs will crop horizontally (pillarbox),<wbr/> and 16:9
+streams will match exactly.<wbr/> These additional crops will
be centered within the crop region.<wbr/></p>
-<p>The output streams must maintain square pixels at all
+<p>The width and height of the crop region cannot
+be set to be smaller than
+<code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and
+<code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p>
+<p>The camera device may adjust the crop region to account
+for rounding and other hardware requirements; the final
+crop region used will be included in the output capture
+result.<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 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/>
-<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> ) and floor(
-activeArraySize.<wbr/>height /<wbr/>
-<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>),<wbr/> respectively.<wbr/></p>
+possible.<wbr/></p>
+<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</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">
+ " rowspan="5">
android.<wbr/>sensor.<wbr/>sensitivity
</td>
<td class="entry_type">
</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>
+ <p>The amount of gain applied to sensor data
+before processing.<wbr/></p>
</td>
<td class="entry_units">
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
- <p>ISO 12232:2006 REI method</p>
+ <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
+as defined in ISO 12232:2006.<wbr/></p>
+<p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and
+if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
+is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
+<p>If the camera device cannot apply the exact sensitivity
+requested,<wbr/> it will reduce the gain to the nearest supported
+value.<wbr/> The final sensitivity used will be available in the
+output capture result.<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>ISO 12232:2006 REI method is acceptable.<wbr/></p>
+ </td>
+ </tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="static_android.sensor.info.sensitivityRange">
<td class="entry_name
- " rowspan="1">
+ " rowspan="3">
android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
</td>
<td class="entry_type">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Range of valid sensitivities</p>
+ <p>Range of valid sensitivities.<wbr/></p>
</td>
<td class="entry_units">
</td>
</tr>
+ <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 minimum and maximum valid values for the
+<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> control.<wbr/></p>
+<p>The values are the standard ISO sensitivity values,<wbr/>
+as defined in ISO 12232:2006.<wbr/></p>
+ </td>
+ </tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<tr class="entry" id="static_android.sensor.info.physicalSize">
<td class="entry_name
- " rowspan="3">
+ " rowspan="5">
android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
</td>
<td class="entry_type">
<td class="entry_description">
<p>The physical dimensions of the full pixel
-array</p>
+array.<wbr/></p>
</td>
<td class="entry_units">
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
- <p>Needed for FOV calculation for old API</p>
+ <p>This is the physical size of the sensor pixel
+array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<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>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>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
- <p>Maximum output resolution for raw format must
-match this in
-<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p>
+ <p>The pixel count of the full pixel array,<wbr/>
+which covers <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/></p>
+<p>If a camera device supports raw sensor formats,<wbr/> either this
+or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is the maximum output
+raw size listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/>
+If a size corresponding to pixelArraySize is listed,<wbr/> the resulting
+raw sensor image will include black pixels.<wbr/></p>
</td>
</tr>
<tr class="entry" id="static_android.sensor.availableTestPatternModes">
<td class="entry_name
- " rowspan="1">
+ " rowspan="3">
android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
</td>
<td class="entry_type">
</td> <!-- entry_type -->
<td class="entry_description">
- <p>Optional.<wbr/> Defaults to [OFF].<wbr/> Lists the supported test
-pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>.<wbr/></p>
+ <p>Lists the supported sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>.<wbr/></p>
</td>
<td class="entry_units">
</td>
<td class="entry_range">
- <p>Must include OFF.<wbr/> All custom modes must be >= CUSTOM1</p>
+ <p>Always includes OFF if defined.<wbr/> All custom modes must be >= CUSTOM1</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>Optional.<wbr/> Defaults to [OFF].<wbr/></p>
+ </td>
+ </tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<tr class="entry" id="dynamic_android.sensor.sensitivity">
<td class="entry_name
- " rowspan="3">
+ " rowspan="5">
android.<wbr/>sensor.<wbr/>sensitivity
</td>
<td class="entry_type">
</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>
+ <p>The amount of gain applied to sensor data
+before processing.<wbr/></p>
</td>
<td class="entry_units">
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
- <p>ISO 12232:2006 REI method</p>
+ <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
+as defined in ISO 12232:2006.<wbr/></p>
+<p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and
+if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
+is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
+<p>If the camera device cannot apply the exact sensitivity
+requested,<wbr/> it will reduce the gain to the nearest supported
+value.<wbr/> The final sensitivity used will be available in the
+output capture result.<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>ISO 12232:2006 REI method is acceptable.<wbr/></p>
+ </td>
+ </tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
<tr class="entry" id="dynamic_android.sensor.timestamp">
<td class="entry_name
- " rowspan="3">
+ " rowspan="5">
android.<wbr/>sensor.<wbr/>timestamp
</td>
<td class="entry_type">
<td class="entry_description">
<p>Time at start of exposure of first
-row</p>
+row of the image sensor,<wbr/> in nanoseconds.<wbr/></p>
</td>
<td class="entry_units">
</tr>
<tr class="entry_cont">
<td class="entry_details" colspan="5">
- <p>Monotonic,<wbr/> should be synced to other timestamps in
-system</p>
+ <p>The timestamps are also included in all image
+buffers produced for the same capture,<wbr/> and will be identical
+on all the outputs.<wbr/> The timestamps measure time since an
+unspecified starting point,<wbr/> and are monotonically
+increasing.<wbr/></p>
+<p>They can be compared with the timestamps for other captures
+from the same camera device,<wbr/> but are not guaranteed to be
+comparable to any other time source.<wbr/></p>
</td>
</tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="5">HAL Implementation Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="5">
+ <p>All timestamps should be in reference to the kernel's
+CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
+time spent asleep.<wbr/> This allows for synchronization with
+sensors that continue to operate while the system is
+otherwise asleep.<wbr/></p>
+<p>If not CLOCK_<wbr/>BOOTTIME,<wbr/> timestamps must be in reference to
+CLOCK_<wbr/>MONOTONIC.<wbr/></p>
+ </td>
+ </tr>
<tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
<!-- end of entry -->
lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified
by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>; the returned shading map data will be the one
applied by the camera device for this capture request.<wbr/></p>
-<p>The shading map data may depend on the AE and AWB statistics,<wbr/> therefore the reliability
+<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore the reliability
of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and AWB are in
AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code> OFF),<wbr/>
to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB to
lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified
by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>; the returned shading map data will be the one
applied by the camera device for this capture request.<wbr/></p>
-<p>The shading map data may depend on the AE and AWB statistics,<wbr/> therefore the reliability
+<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore the reliability
of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and AWB are in
AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code> OFF),<wbr/>
to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB to
<td class="entry_description">
<p>State of the face detector
-unit</p>
+unit.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_description">
<p>Which face detection modes are available,<wbr/>
-if any</p>
+if any.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_description">
<p>State of the face detector
-unit</p>
+unit.<wbr/></p>
</td>
<td class="entry_units">
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/>
+<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
</td>
</tr>
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/>
+<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
</td>
</tr>
sensor's native color into linear sRGB color.
</description>
<details>
- When auto-white balance is enabled with android.control.awbMode, this
+ When auto-white balance (AWB) is enabled with android.control.awbMode, this
control is overridden by the AWB routine. When AWB is disabled, the
application controls how the color mapping is performed.
<size>3</size>
</array>
<description>A color transform matrix to use to transform
- from sensor RGB color space to output linear sRGB color space
+ from sensor RGB color space to output linear sRGB color space.
</description>
<details>This matrix is either set by the camera device when the request
android.colorCorrection.mode is not TRANSFORM_MATRIX, or
<tag id="BC" />
</entry>
<entry name="aeExposureCompensation" type="int32" visibility="public">
- <description>Adjustment to AE target image
- brightness</description>
+ <description>Adjustment to auto-exposure (AE) target image
+ brightness.</description>
<units>count of positive/negative EV steps</units>
- <details>For example, if EV step is 0.333, '6' will mean an
- exposure compensation of +2 EV; -3 will mean an exposure
- compensation of -1 EV. Note that this control will only be effective
- if android.control.aeMode `!=` OFF. This control will take effect even when
- android.control.aeLock `== true`.
+ <range>android.control.aeCompensationRange</range>
+ <details>
+ The adjustment is measured as a count of steps, with the
+ step size defined by android.control.aeCompensationStep and the
+ allowed range by android.control.aeCompensationRange.
+
+ For example, if the exposure value (EV) step is 0.333, '6'
+ will mean an exposure compensation of +2 EV; -3 will mean an
+ exposure compensation of -1 EV. One EV represents a doubling
+ of image brightness. Note that this control will only be
+ effective if android.control.aeMode `!=` OFF. This control
+ will take effect even when android.control.aeLock `== true`.
In the event of exposure compensation value being changed, camera device
may take several frames to reach the newly requested exposure target.
will still take effect while auto-exposure is locked.
</notes></value>
</enum>
- <description>Whether AE is currently locked to its latest
+ <description>Whether auto-exposure (AE) is currently locked to its latest
calculated values.</description>
<details>Note that even when AE is locked, the flash may be
fired if the android.control.aeMode is ON_AUTO_FLASH / ON_ALWAYS_FLASH /
<size>2</size>
</array>
<description>Range over which fps can be adjusted to
- maintain exposure</description>
+ maintain exposure.</description>
<range>android.control.aeAvailableTargetFpsRanges</range>
- <details>Only constrains AE algorithm, not manual control
- of android.sensor.exposureTime</details>
+ <details>Only constrains auto-exposure (AE) algorithm, not
+ manual control of android.sensor.exposureTime</details>
<tag id="BC" />
</entry>
<entry name="aePrecaptureTrigger" type="byte" visibility="public"
set to START, the camera device will trigger the autoexposure
precapture metering sequence.
- The effect of AE precapture trigger depends on the current
- AE mode and state; see android.control.aeState for AE precapture
- state transition details.</details>
+ The effect of auto-exposure (AE) precapture trigger depends
+ on the current AE mode and state; see
+ android.control.aeState for AE precapture state transition
+ details.</details>
<tag id="BC" />
</entry>
<entry name="afMode" type="byte" visibility="public" enum="true">
android.lens.focusDistance is controlled by the
application</notes></value>
<value>AUTO
- <notes>
- If lens is not fixed focus.
+ <notes>Basic automatic focus mode.
- Use android.lens.info.minimumFocusDistance to determine if lens
- is fixed-focus. In this mode, the lens does not move unless
+ In this mode, the lens does not move unless
the autofocus trigger action is called. When that trigger
- is activated, AF must transition to ACTIVE_SCAN, then to
+ is activated, AF will transition to ACTIVE_SCAN, then to
the outcome of the scan (FOCUSED or NOT_FOCUSED).
+ Always supported if lens is not fixed focus.
+
+ Use android.lens.info.minimumFocusDistance to determine if lens
+ is fixed-focus.
+
Triggering AF_CANCEL resets the lens position to default,
and sets the AF state to INACTIVE.</notes></value>
<value>MACRO
- <notes>In this mode, the lens does not move unless the
- autofocus trigger action is called.
+ <notes>Close-up focusing mode.
- When that trigger is activated, AF must transition to
+ In this mode, the lens does not move unless the
+ autofocus trigger action is called. When that trigger is
+ activated, AF will transition to ACTIVE_SCAN, then to
+ the outcome of the scan (FOCUSED or NOT_FOCUSED). This
+ mode is optimized for focusing on objects very close to
+ the camera.
+
+ When that trigger is activated, AF will transition to
ACTIVE_SCAN, then to the outcome of the scan (FOCUSED or
- NOT_FOCUSED). Triggering cancel AF resets the lens
+ NOT_FOCUSED). Triggering cancel AF resets the lens
position to default, and sets the AF state to
INACTIVE.</notes></value>
<value>CONTINUOUS_VIDEO
trigger is ignored, AF state should always be
INACTIVE.</notes></value>
</enum>
- <description>Whether AF is currently enabled, and what
- mode it is set to</description>
+ <description>Whether auto-focus (AF) is currently enabled, and what
+ 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 > 0`).
algorithm must not update its parameters while the lock
is active.</notes></value>
</enum>
- <description>Whether AWB is currently locked to its
+ <description>Whether auto-white balance (AWB) is currently locked to its
latest calculated values.</description>
<details>Note that AWB lock is only meaningful for AUTO
mode; in other modes, AWB is already fixed to a specific
</notes>
</value>
</enum>
- <description>Whether AWB is currently setting the color
+ <description>Whether auto-white balance (AWB) is currently setting the color
transform fields, and what its illumination target
is.</description>
<range>android.control.awbAvailableModes</range>
<value>ON</value>
</enum>
<description>Whether video stabilization is
- active</description>
+ active.</description>
<details>If enabled, video stabilization can modify the
android.scaler.cropRegion to keep the video stream
stabilized</details>
<size>n</size>
</array>
<description>List of frame rate ranges supported by the
- AE algorithm/hardware</description>
+ auto-exposure (AE) algorithm/hardware</description>
<tag id="BC" />
</entry>
<entry name="aeCompensationRange" type="int32" visibility="public"
<array>
<size>n</size>
</array>
- <description>List of AF modes that can be
+ <description>List of auto-focus (AF) modes that can be
selected with android.control.afMode.</description>
<details>
Not all the auto-focus modes may be supported by a
FLASH_REQUIRED as appropriate. This is a transient state, the
camera device may skip reporting this state in capture result.</notes></value>
</enum>
- <description>Current state of AE algorithm</description>
+ <description>Current state of auto-exposure (AE) algorithm.</description>
<details>Switching between or enabling AE modes (android.control.aeMode) always
resets the AE state to INACTIVE. Similarly, switching between android.control.mode,
or android.control.sceneMode if `android.control.mode == USE_SCENE_MODE` resets all
scanning at any time. This is a transient state, the camera
device may skip reporting this state in capture result.</notes></value>
</enum>
- <description>Current state of AF algorithm.</description>
+ <description>Current state of auto-focus (AF) algorithm.</description>
<details>
Switching between or enabling AF modes (android.control.afMode) always
resets the AF state to INACTIVE. Similarly, switching between android.control.mode,
<notes>AWB has been locked.
</notes></value>
</enum>
- <description>Current state of AWB algorithm</description>
+ <description>Current state of auto-white balance (AWB) algorithm.</description>
<details>Switching between or enabling AWB modes (android.control.awbMode) always
resets the AWB state to INACTIVE. Similarly, switching between android.control.mode,
or android.control.sceneMode if `android.control.mode == USE_SCENE_MODE` resets all
When set to SINGLE, the camera device will fire flash regardless of the camera
device's auto-exposure routine's result. When used in still capture case, this
- control should be used along with AE precapture metering sequence
+ control should be used along with auto-exposure (AE) precapture metering sequence
(android.control.aePrecaptureTrigger), otherwise, the image may be incorrectly exposed.
When set to TORCH, the flash will be on continuously. This mode can be used
</entry>
<entry name="quality" type="byte" visibility="public">
<description>Compression quality of the final JPEG
- image</description>
+ image.</description>
<range>1-100; larger is higher quality</range>
<details>85-95 is typical usage range</details>
<tag id="BC" />
<array>
<size>2</size>
</array>
- <description>Resolution of embedded JPEG thumbnail</description>
+ <description>Resolution of embedded JPEG thumbnail.</description>
<range>Size must be one of the size from android.jpeg.availableThumbnailSizes</range>
<details>When set to (0, 0) value, the JPEG EXIF will not contain thumbnail,
but the captured JPEG will still be a valid image.
<size>2</size>
<size>n</size>
</array>
- <description>Supported resolutions for the JPEG thumbnail</description>
+ <description>Supported resolutions for the JPEG thumbnail.</description>
<range>Will include at least one valid resolution, plus
(0,0) for no thumbnail generation, and each size will be distinct.</range>
<details>Below condiditions will be satisfied for this size list:
</entry>
<entry name="focusDistance" type="float" visibility="public">
<description>Distance to plane of sharpest focus,
- measured from frontmost surface of the lens</description>
+ measured from frontmost surface of the lens.</description>
<units>See android.lens.info.focusDistanceCalibration for details.</units>
<range>&gt;= 0</range>
<details>0 means infinity focus. Used value will be clamped
<size>2</size>
</array>
<description>The range of scene distances that are in
- sharp focus (depth of field)</description>
+ sharp focus (depth of field).</description>
<units>pair of focus distances in diopters: (near,
far), see android.lens.info.focusDistanceCalibration for details.</units>
<range>&gt;=0</range>
<notes>May slow down frame rate to provide highest
quality</notes></value>
</enum>
- <description>Mode of operation for the noise reduction
+ <description>Mode of operation for the noise reduction.
algorithm</description>
<details>Noise filtering control. OFF means no noise reduction
will be applied by the camera device.
A value of 1 means that partial results are not supported.
- A typical use case for this might be: after requesting an AF lock the
- new AF state might be available 50% of the way through the pipeline.
- The camera device could then immediately dispatch this state via a
- partial result to the framework/application layer, and the rest of
- the metadata via later partial results.
+ A typical use case for this might be: after requesting an
+ auto-focus (AF) lock the new AF state might be available 50%
+ of the way through the pipeline. The camera device could
+ then immediately dispatch this state via a partial result to
+ the framework/application layer, and the rest of the
+ metadata via later partial results.
</details>
</entry>
<entry name="availableCapabilities" type="byte" visibility="public"
* RAW16 is reprocessable into both YUV_420_888 and JPEG
formats.
* The maximum available resolution for RAW16 streams (both
- input/output) will match the value in
- android.sensor.info.pixelArraySize.
+ input/output) will match the either value in
+ android.sensor.info.pixelArraySize or
+ android.sensor.info.activeArraySize.
* All DNG-related optional metadata entries are provided
by the camera device.
</notes>
<array>
<size>4</size>
</array>
- <description>(x, y, width, height).
-
- A rectangle with the top-level corner of (x,y) and size
- (width, height). The region of the sensor that is used for
- output. Each stream must use this rectangle to produce its
- output, cropping to a smaller region if necessary to
- maintain the stream's aspect ratio.
-
- HAL2.x uses only (x, y, width)</description>
+ <description>The region of the sensor to read out for this capture.</description>
<units>(x,y) of top-left corner, width and height of region
in pixels; (0,0) is top-left corner of
- android.sensor.activeArraySize</units>
+ android.sensor.info.activeArraySize</units>
<details>
- The crop region is applied after the RAW to other color space (e.g. YUV)
- conversion. Since raw streams (e.g. RAW16) don't have the conversion stage,
- it is not croppable. The crop region will be ignored by raw streams.
+ The crop region coordinate system is based off
+ android.sensor.info.activeArraySize, with `(0, 0)` being the
+ top-left corner of the sensor active array.
+
+ Output streams use this rectangle to produce their output,
+ cropping to a smaller region if necessary to maintain the
+ stream's aspect ratio, then scaling the sensor input to
+ match the output's configured resolution.
+
+ The crop region is applied after the RAW to other color
+ space (e.g. YUV) conversion. Since raw streams
+ (e.g. RAW16) don't have the conversion stage, they are not
+ croppable. The crop region will be ignored by raw streams.
For non-raw streams, any additional per-stream cropping will
be done to maximize the final pixel area of the stream.
For example, if the crop region is set to a 4:3 aspect
- ratio, then 4:3 streams should use the exact crop
- region. 16:9 streams should further crop vertically
+ ratio, then 4:3 streams will use the exact crop
+ region. 16:9 streams will further crop vertically
(letterbox).
Conversely, if the crop region is set to a 16:9, then 4:3
- outputs should crop horizontally (pillarbox), and 16:9
- streams should match exactly. These additional crops must
+ outputs will crop horizontally (pillarbox), and 16:9
+ streams will match exactly. These additional crops will
be centered within the crop region.
+ The width and height of the crop region cannot
+ be set to be smaller than
+ `floor( activeArraySize.width / android.scaler.availableMaxDigitalZoom )` and
+ `floor( activeArraySize.height / android.scaler.availableMaxDigitalZoom )`, respectively.
+
+ The camera device may adjust the crop region to account
+ for rounding and other hardware requirements; the final
+ crop region used will be included in the output capture
+ result.
+ </details>
+ <hal_details>
The output streams must maintain square pixels at all
times, no matter what the relative aspect ratios of the
crop region and the stream are. Negative values for
larger than active pixel array. Width and height may be
rounded to nearest larger supportable width, especially
for raw output, where only a few fixed scales may be
- possible. The width and height of the crop region cannot
- be set to be smaller than floor( activeArraySize.width /
- android.scaler.availableMaxDigitalZoom ) and floor(
- activeArraySize.height /
- android.scaler.availableMaxDigitalZoom), respectively.
- </details>
+ possible.
+
+ HAL2.x uses only (x, y, width)
+ </hal_details>
<tag id="BC" />
</entry>
</controls>
<tag id="V1" />
</entry>
<entry name="sensitivity" type="int32" visibility="public">
- <description>Gain applied to image data. Must be
- implemented through analog gain only if set to values
- below 'maximum analog sensitivity'.
-
- If the sensor can't apply this exact gain, it should lessen the
- gain to the nearest possible value (rather than gain more).
- </description>
+ <description>The amount of gain applied to sensor data
+ before processing.</description>
<units>ISO arithmetic units</units>
<range>android.sensor.info.sensitivityRange</range>
- <details>ISO 12232:2006 REI method</details>
+ <details>
+ The sensitivity is the standard ISO sensitivity value,
+ as defined in ISO 12232:2006.
+
+ The sensitivity must be within android.sensor.info.sensitivityRange, and
+ if if it less than android.sensor.maxAnalogSensitivity, the camera device
+ is guaranteed to use only analog amplification for applying the gain.
+
+ If the camera device cannot apply the exact sensitivity
+ requested, it will reduce the gain to the nearest supported
+ value. The final sensitivity used will be available in the
+ output capture result.
+ </details>
+ <hal_details>ISO 12232:2006 REI method is acceptable.</hal_details>
<tag id="V1" />
</entry>
</controls>
<array>
<size>2</size>
</array>
- <description>Range of valid sensitivities</description>
+ <description>Range of valid sensitivities.</description>
<range>Min <= 100, Max &gt;= 1600</range>
+ <details>
+ The minimum and maximum valid values for the
+ android.sensor.sensitivity control.
+
+ The values are the standard ISO sensitivity values,
+ as defined in ISO 12232:2006.
+ </details>
+
<tag id="BC" />
<tag id="V1" />
</entry>
<size>2</size>
</array>
<description>The physical dimensions of the full pixel
- array</description>
- <details>Needed for FOV calculation for old API</details>
+ array.</description>
+ <details>This is the physical size of the sensor pixel
+ array defined by android.sensor.info.pixelArraySize.
+ </details>
+ <hal_details>Needed for FOV calculation for old API</hal_details>
<tag id="V1" />
<tag id="BC" />
</entry>
</array>
<description>Dimensions of full pixel array, possibly
including black calibration pixels.</description>
- <details>Maximum output resolution for raw format must
- match this in
- android.scaler.availableStreamConfigurations.</details>
+ <details>The pixel count of the full pixel array,
+ which covers android.sensor.info.physicalSize area.
+
+ If a camera device supports raw sensor formats, either this
+ or android.sensor.info.activeArraySize is the maximum output
+ raw size listed in android.scaler.streamConfigurationMap.
+ If a size corresponding to pixelArraySize is listed, the resulting
+ raw sensor image will include black pixels.
+ </details>
<tag id="DNG" />
<tag id="BC" />
</entry>
</clone>
<entry name="timestamp" type="int64" visibility="public">
<description>Time at start of exposure of first
- row</description>
+ row of the image sensor, in nanoseconds.</description>
<units>nanoseconds</units>
<range>&gt; 0</range>
- <details>Monotonic, should be synced to other timestamps in
- system</details>
+ <details>The timestamps are also included in all image
+ buffers produced for the same capture, and will be identical
+ on all the outputs. The timestamps measure time since an
+ unspecified starting point, and are monotonically
+ increasing.
+
+ They can be compared with the timestamps for other captures
+ from the same camera device, but are not guaranteed to be
+ comparable to any other time source.</details>
+ <hal_details>
+ All timestamps should be in reference to the kernel's
+ CLOCK_BOOTTIME monotonic clock, which properly accounts for
+ time spent asleep. This allows for synchronization with
+ sensors that continue to operate while the system is
+ otherwise asleep.
+
+ If not CLOCK_BOOTTIME, timestamps must be in reference to
+ CLOCK_MONOTONIC.
+ </hal_details>
<tag id="BC" />
</entry>
<entry name="temperature" type="float"
<array>
<size>n</size>
</array>
- <description>Optional. Defaults to [OFF]. Lists the supported test
- pattern modes for android.sensor.testPatternMode.
+ <description>Lists the supported sensor test pattern modes for android.sensor.testPatternMode.
</description>
- <range>Must include OFF. All custom modes must be >= CUSTOM1</range>
+ <range>Always includes OFF if defined. All custom modes must be >= CUSTOM1</range>
+ <details>
+ Optional. Defaults to [OFF].
+ </details>
</entry>
-
</static>
</section>
<section name="shading">
by android.lens.info.shadingMapSize; the returned shading map data will be the one
applied by the camera device for this capture request.
- The shading map data may depend on the AE and AWB statistics, therefore the reliability
+ The shading map data may depend on the auto-exposure (AE) and AWB statistics, therefore the reliability
of the map data may be affected by the AE and AWB algorithms. When AE and AWB are in
AUTO modes(android.control.aeMode `!=` OFF and android.control.awbMode `!=` OFF),
to get best results, it is recommended that the applications wait for the AE and AWB to
metadata</notes></value>
</enum>
<description>State of the face detector
- unit</description>
+ unit.</description>
<range>
android.statistics.info.availableFaceDetectModes</range>
<details>Whether face detection is enabled, and whether it
<size>n</size>
</array>
<description>Which face detection modes are available,
- if any</description>
+ if any.</description>
<units>List of enum:
OFF
SIMPLE
The 4 channel gains are defined in Bayer domain,
see android.colorCorrection.gains for details.
- This value should always be calculated by the AWB block,
+ This value should always be calculated by the auto-white balance (AWB) block,
regardless of the android.control.* current values.
</details>
</entry>
These estimates must be provided for all frames, even if
capture settings and color transforms are set by the application.
- This value should always be calculated by the AWB block,
+ This value should always be calculated by the auto-white balance (AWB) block,
regardless of the android.control.* current values.
</details>
</entry>