.th_units { width: 10% }
.th_tags { width: 5% }
.th_details { width: 25% }
- .th_type { width: 20% }
+ .th_type { width: 17% }
.th_description { width: 20% }
- .th_range { width: 10% }
+ .th_range { width: 8% }
+ .th_hal_version { width: 5% }
td { font-size: 0.9em; }
/* hide the first thead, we need it there only to enforce column sizes */
><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
<li
><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
+ <li
+ ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
<li
><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
+ <li
+ ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
</ul>
</li>
<li>
><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
<li
><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
+ <li
+ ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
+ <li
+ ><a href="#static_android.request.availablePhysicalCameraRequestKeys">android.request.availablePhysicalCameraRequestKeys</a></li>
</ul>
</li>
<li>
><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
<li
><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
+ <li
+ ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
</ul>
</li>
<li>
><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
<li
><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
+ <li
+ ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
</ul>
</li>
><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
<li
><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
+ <li
+ ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
+ <li
+ ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
+ <li
+ ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
+ <li
+ ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
+ <li
+ ><a href="#dynamic_android.statistics.oisSamples">android.statistics.oisSamples</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
<ul class="toc_section">
<li
><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
+ <li
+ ><a href="#static_android.info.version">android.info.version</a></li>
</ul>
</li>
</ul> <!-- toc_section -->
</li>
</ul> <!-- toc_section -->
</li>
+ <li>
+ <span class="toc_section_header"><a href="#section_logicalMultiCamera">logicalMultiCamera</a></span>
+ <ul class="toc_section">
+ <li>
+ <span class="toc_kind_header">static</span>
+ <ul class="toc_section">
+ <li
+ ><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a></li>
+ <li
+ ><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a></li>
+ </ul>
+ </li>
+ </ul> <!-- toc_section -->
+ </li>
</ul>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead> <!-- so that the first occurrence of thead is not
above the first occurrence of tr -->
<!-- <namespace name="android"> -->
- <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
+ <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
+ <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
<p>All advanced white balance adjustments (not specified
this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Color correction processing must not slow down
capture rate relative to sensor raw output.<wbr/></p>
<p>Advanced white balance adjustments above and beyond
(or defaults if AWB has never been run).<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Color correction processing operates at improved
quality but the capture rate might be reduced (relative to sensor
raw output rate)</p>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
application controls how the color mapping is performed.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
That is,<wbr/> if the highest quality implementation on the camera device does not slow down
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This matrix is either set by the camera device when the request
<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
directly by the application in the request when the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>These per-channel gains are either set by the camera device
when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The 4-channel white-balance gains are defined in
the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
relative to sensor raw output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
reduced (relative to sensor raw output rate)</p></span>
</li>
<p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
+ <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
<p>All advanced white balance adjustments (not specified
this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Color correction processing must not slow down
capture rate relative to sensor raw output.<wbr/></p>
<p>Advanced white balance adjustments above and beyond
(or defaults if AWB has never been run).<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Color correction processing operates at improved
quality but the capture rate might be reduced (relative to sensor
raw output rate)</p>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
application controls how the color mapping is performed.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
That is,<wbr/> if the highest quality implementation on the camera device does not slow down
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This matrix is either set by the camera device when the request
<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
directly by the application in the request when the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>These per-channel gains are either set by the camera device
when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The 4-channel white-balance gains are defined in
the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
relative to sensor raw output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
reduced (relative to sensor raw output rate)</p></span>
</li>
<p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This key lists the valid modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a>.<wbr/> If no
aberration correction modes are available for a device,<wbr/> this list will solely include
OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
That is,<wbr/> if the highest quality implementation on the camera device does not slow down
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_control" class="section">control</td></tr>
+ <tr><td colspan="7" id="section_control" class="section">control</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
avoid banding problems.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">50HZ</span>
+ <span class="entry_type_enum_name">50HZ (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">60HZ</span>
+ <span class="entry_type_enum_name">60HZ (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
avoid banding problems with 60Hz illumination
sources.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AUTO</span>
+ <span class="entry_type_enum_name">AUTO (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
antibanding routine to the current illumination
condition.<wbr/> This is the default mode if AUTO is
<p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
lights,<wbr/> flicker at the rate of the power supply frequency
(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For all capture request templates,<wbr/> this field must be set
to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The adjustment is measured as a count of steps,<wbr/> with the
step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
is free to update its parameters.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
must not update the exposure and sensitivity parameters
while the lock is active.<wbr/></p>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
<p>Note that even when AE is locked,<wbr/> the flash may be fired if
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
override attempts to use this value to ON.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
with no flash control.<wbr/></p>
<p>The application's values for
android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
+ <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
<span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
the camera's flash unit,<wbr/> firing it in low-light
conditions.<wbr/></p>
STILL_<wbr/>CAPTURE</p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
+ <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
<span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
the camera's flash unit,<wbr/> always firing it for still
captures.<wbr/></p>
STILL_<wbr/>CAPTURE</p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
+ <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
reduction.<wbr/></p>
<p>If deemed necessary by the camera device,<wbr/> a red eye
reduction flash will fire during the precapture
sequence.<wbr/></p></span>
</li>
+ <li>
+ <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
+<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
+metering (and continuous focus if active) should be quickly recaculated to account
+for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
+<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
+other available AE modes.<wbr/></p>
+<p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
+be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
+flash.<wbr/></p></span>
+ </li>
</ul>
</td> <!-- entry_type -->
<p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
AUTO.<wbr/></p>
<p>When set to any of the ON modes,<wbr/> the camera device's
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
Otherwise will always be present.<wbr/></p>
<p>The maximum number of regions supported by the device is determined by the value
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL level representation of MeteringRectangle[] is a
int[5 * area_<wbr/>count].<wbr/>
Every five elements represent a metering region of
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">IDLE</span>
+ <span class="entry_type_enum_name">IDLE (v3.2)</span>
<span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">START</span>
+ <span class="entry_type_enum_name">START (v3.2)</span>
<span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
by the camera device.<wbr/></p>
<p>The exact effect of the precapture trigger depends on
the current AE mode and state.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CANCEL</span>
+ <span class="entry_type_enum_name">CANCEL (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
precapture metering sequence,<wbr/> the auto-exposure routine will return to its
initial state.<wbr/></p></span>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry is normally set to IDLE,<wbr/> or is not
included at all in the request settings.<wbr/> When included and
set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
application.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AUTO</span>
+ <span class="entry_type_enum_name">AUTO (v3.2)</span>
<span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
<p>In this mode,<wbr/> the lens does not move unless
the autofocus trigger action is called.<wbr/> When that trigger
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_name">MACRO (v3.2)</span>
<span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
<p>In this mode,<wbr/> the lens does not move unless the
autofocus trigger action is called.<wbr/> When that trigger is
INACTIVE.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
+ <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
<span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
position continually to attempt to provide a
constantly-in-focus image stream.<wbr/></p>
canceled.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
+ <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
<span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
position continually to attempt to provide a
constantly-in-focus image stream.<wbr/></p>
has just been started.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">EDOF</span>
+ <span class="entry_type_enum_name">EDOF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
<p>The camera device will produce images with an extended
depth of field automatically; no special focusing
<p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that
when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end
up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
Otherwise will always be present.<wbr/></p>
<p>The maximum number of focus areas supported by the device is determined by the value
is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
ignored.<wbr/></p>
<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
-camera device.<wbr/></p>
+camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
+the region selected by the camera device as the focus area of interest.<wbr/></p>
<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
region and output only the intersection rectangle as the metering region in the result
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL level representation of MeteringRectangle[] is a
int[5 * area_<wbr/>count].<wbr/>
Every five elements represent a metering region of
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">IDLE</span>
+ <span class="entry_type_enum_name">IDLE (v3.2)</span>
<span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">START</span>
+ <span class="entry_type_enum_name">START (v3.2)</span>
<span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CANCEL</span>
+ <span class="entry_type_enum_name">CANCEL (v3.2)</span>
<span class="entry_type_enum_notes"><p>Autofocus will return to its initial
state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
</li>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry is normally set to IDLE,<wbr/> or is not
included at all in the request settings.<wbr/></p>
<p>When included and set to START,<wbr/> the camera device will trigger the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
algorithm is free to update its parameters if in AUTO
mode.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
algorithm will not update its parameters while the lock
is active.<wbr/></p></span>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
<p>The application-selected color transform matrix
(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
device for manual white balance control.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AUTO</span>
+ <span class="entry_type_enum_name">AUTO (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">INCANDESCENT</span>
+ <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses incandescent light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FLUORESCENT</span>
+ <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses fluorescent light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
+ <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses warm fluorescent light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">DAYLIGHT</span>
+ <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses daylight light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
+ <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses cloudy daylight light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">TWILIGHT</span>
+ <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses twilight light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SHADE</span>
+ <span class="entry_type_enum_name">SHADE (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses shade light as the assumed scene
illumination for white balance.<wbr/></p>
<p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
routine is enabled,<wbr/> overriding the application's selected
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
Otherwise will always be present.<wbr/></p>
<p>The maximum number of regions supported by the device is determined by the value
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL level representation of MeteringRectangle[] is a
int[5 * area_<wbr/>count].<wbr/>
Every five elements represent a metering region of
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">CUSTOM</span>
+ <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
<span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
categories.<wbr/> The camera device will default to preview-like
behavior.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PREVIEW</span>
+ <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
<p>The precapture trigger may be used to start off a metering
w/<wbr/>flash sequence.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">STILL_CAPTURE</span>
+ <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a still capture-type
use case.<wbr/></p>
<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">VIDEO_RECORD</span>
+ <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a video recording
use case.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
+ <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
image while recording video) use case.<wbr/></p>
<p>The camera device should take the highest-quality image
frame rate of video recording.<wbr/> </p></span>
</li>
<li>
- <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
+ <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
application will stream full-resolution images and
reprocess one or several later for a final
capture.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">MANUAL</span>
+ <span class="entry_type_enum_name">MANUAL (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for manual capture use case where
the applications want to directly control the capture parameters.<wbr/></p>
<p>For example,<wbr/> the application may wish to manually control
<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
</li>
+ <li>
+ <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
+the application will use camera and inertial sensor data to
+locate and track objects in the world.<wbr/></p>
+<p>The camera device auto-exposure routine will limit the exposure time
+of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
+ </li>
</ul>
</td> <!-- entry_type -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control (except for MANUAL) is only effective if
<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
-<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
-contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
-<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
-always supported.<wbr/></p>
+<p>All intents are supported by all devices,<wbr/> except that:
+ * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
+PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
+ * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
+MANUAL_<wbr/>SENSOR.<wbr/>
+ * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
+MOTION_<wbr/>TRACKING.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">MONO</span>
+ <span class="entry_type_enum_name">MONO (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
a single color.<wbr/></p>
<p>This will typically be grayscale.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">NEGATIVE</span>
+ <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
are inverted.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SOLARIZE</span>
+ <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
image is wholly or partially reversed in
tone.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SEPIA</span>
+ <span class="entry_type_enum_name">SEPIA (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">POSTERIZE</span>
+ <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
discrete regions of tone rather than a continuous
gradient of tones.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">WHITEBOARD</span>
+ <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">BLACKBOARD</span>
+ <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AQUA</span>
+ <span class="entry_type_enum_name">AQUA (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
</li>
<p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When this mode is set,<wbr/> a color effect will be applied
to images produced by the camera device.<wbr/> The interpretation
and implementation of these color effects is left to the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
<p>All control by the device's metering and focusing (3A)
routines is disabled,<wbr/> and no other settings in
can be immediately applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AUTO</span>
+ <span class="entry_type_enum_name">AUTO (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
<p>Manual control of capture parameters is disabled.<wbr/> All
controls in android.<wbr/>control.<wbr/>* besides sceneMode take
effect.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">USE_SCENE_MODE</span>
+ <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
contain some modes other than DISABLED).<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
+ <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
used by camera device background auto-exposure,<wbr/> auto-white balance and
<p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
by the camera device is disabled.<wbr/> The application must set the fields for
capture parameters itself.<wbr/></p>
<p>When set to AUTO,<wbr/> the individual algorithm controls in
android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
-android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
-one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
-as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
-<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
+android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
+implements one of the scene mode settings (such as ACTION,<wbr/>
+SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
+3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
is that this frame will not be used by camera device background 3A statistics
update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">DISABLED</span>
+ <span class="entry_type_enum_name">DISABLED (v3.2)</span>
<span class="entry_type_enum_value">0</span>
<span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FACE_PRIORITY</span>
+ <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
auto-exposure routines.<wbr/></p>
remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ACTION</span>
+ <span class="entry_type_enum_name">ACTION (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
<p>Similar to SPORTS.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PORTRAIT</span>
+ <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">LANDSCAPE</span>
+ <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">NIGHT</span>
+ <span class="entry_type_enum_name">NIGHT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
+ <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
settings.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">THEATRE</span>
+ <span class="entry_type_enum_name">THEATRE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
remain off.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">BEACH</span>
+ <span class="entry_type_enum_name">BEACH (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SNOW</span>
+ <span class="entry_type_enum_name">SNOW (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SUNSET</span>
+ <span class="entry_type_enum_name">SUNSET (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">STEADYPHOTO</span>
+ <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
device motion (for example: due to hand shake).<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FIREWORKS</span>
+ <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SPORTS</span>
+ <span class="entry_type_enum_name">SPORTS (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
<p>Similar to ACTION.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PARTY</span>
+ <span class="entry_type_enum_name">PARTY (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
people.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CANDLELIGHT</span>
+ <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
is a flame.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">BARCODE</span>
+ <span class="entry_type_enum_name">BARCODE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
for use by camera applications that wish to read the
barcode value.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
+ <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
<span class="entry_type_enum_deprecated">[deprecated]</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HDR</span>
+ <span class="entry_type_enum_name">HDR (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
<p>In this scene mode,<wbr/> the camera device captures images
the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
+ <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_hidden">[hidden]</span>
<span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
+ <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_hidden">[hidden]</span>
<span class="entry_type_enum_value">100</span>
customized scene modes.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
+ <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_hidden">[hidden]</span>
<span class="entry_type_enum_value">127</span>
<p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Scene modes are custom camera modes optimized for a certain set of conditions and
capture settings.<wbr/></p>
<p>This is the mode that that is active when
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL implementations that include scene modes are expected to provide
the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in
<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
-<p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
-the HAL must list supported video size and fps range in
-<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>
-1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
-mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
-requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
-This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
+<p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> the
+HAL must list supported video size and fps range in
+<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/> 1280x720,<wbr/>
+if the HAL has two different sensor configurations for normal streaming mode and high
+speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
+HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
+HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Video stabilization automatically warps images from
the camera in order to stabilize motion between consecutive frames.<wbr/></p>
<p>If enabled,<wbr/> video stabilization can modify the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Some camera devices support additional digital sensitivity boosting in the
camera processing pipeline after sensor RAW image is captured.<wbr/>
Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FALSE</span>
+ <span class="entry_type_enum_name">FALSE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured
after previous requests.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">TRUE</span>
+ <span class="entry_type_enum_name">TRUE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be
captured before previous requests.<wbr/></p></span>
</li>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
capture intent.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not all of the auto-exposure anti-banding modes may be
supported by a given camera device.<wbr/> This field lists the
valid anti-banding modes that the application may request
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not all the auto-exposure modes may be supported by a
given camera device,<wbr/> especially if no flash unit is
available.<wbr/> This entry lists the valid modes for
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For devices at the LEGACY level or above:</p>
<ul>
<li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>LEGACY devices may support a smaller range than this.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is the unit for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>.<wbr/> For example,<wbr/> if this key has
a value of <code>1/<wbr/>2</code>,<wbr/> then a setting of <code>-2</code> for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> means
that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not all the auto-focus modes may be supported by a
given camera device.<wbr/> This entry lists the valid modes for
<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This list contains the color effect modes that can be applied to
images produced by the camera device.<wbr/>
Implementations are not expected to be consistent across all devices.<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This list contains scene modes that can be set for the camera device.<wbr/>
Only scene modes that have been fully implemented for the
camera device may be included here.<wbr/> Implementations are not expected
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>OFF will always be listed.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not all the auto-white-balance modes may be supported by a
given camera device.<wbr/> This entry lists the valid modes for
<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
value will be >= 1.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This corresponds to the the maximum allowed number of elements in
<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry is private to the framework.<wbr/> Fill in
maxRegions to have this entry be automatically populated.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Value will be >= 0.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This corresponds to the the maximum allowed number of elements in
<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry is private to the framework.<wbr/> Fill in
maxRegions to have this entry be automatically populated.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
value will be >= 1.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This corresponds to the the maximum allowed number of elements in
<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry is private to the framework.<wbr/> Fill in
maxRegions to have this entry be automatically populated.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
where aeMode has the lowest index position.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When a scene mode is enabled,<wbr/> the camera device is expected
to override <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/>
and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>To maintain backward compatibility,<wbr/> this list will be made available
in the static metadata of the camera service.<wbr/> The camera service will
use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>For each configuration,<wbr/> the fps_<wbr/>max >= 120fps.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/>
this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>All the sizes listed in this configuration will be a subset of the sizes reported by
<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FALSE</span>
+ <span class="entry_type_enum_name">FALSE (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">TRUE</span>
+ <span class="entry_type_enum_name">TRUE (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FALSE</span>
+ <span class="entry_type_enum_name">FALSE (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">TRUE</span>
+ <span class="entry_type_enum_name">TRUE (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This list contains control modes that can be set for the camera device.<wbr/>
LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Devices support post RAW sensitivity boost will advertise
<a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
post RAW sensitivity boost.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
- <p>This key is added in HAL3.<wbr/>4.<wbr/> For HAL3.<wbr/>3 or earlier devices,<wbr/> camera framework will
-generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output formats.<wbr/>
-All HAL3.<wbr/>4 and above devices should list this key if device supports any of RAW
-output formats.<wbr/></p>
+ <td class="entry_details" colspan="6">
+ <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
+framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
+formats.<wbr/> All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
+any of RAW output formats.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Must be 0 if no
CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
by HAL.<wbr/> Always updated even if AE algorithm ignores the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
avoid banding problems.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">50HZ</span>
+ <span class="entry_type_enum_name">50HZ (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">60HZ</span>
+ <span class="entry_type_enum_name">60HZ (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
avoid banding problems with 60Hz illumination
sources.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AUTO</span>
+ <span class="entry_type_enum_name">AUTO (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
antibanding routine to the current illumination
condition.<wbr/> This is the default mode if AUTO is
<p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
lights,<wbr/> flicker at the rate of the power supply frequency
(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For all capture request templates,<wbr/> this field must be set
to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The adjustment is measured as a count of steps,<wbr/> with the
step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
is free to update its parameters.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
must not update the exposure and sensitivity parameters
while the lock is active.<wbr/></p>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
<p>Note that even when AE is locked,<wbr/> the flash may be fired if
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
override attempts to use this value to ON.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
with no flash control.<wbr/></p>
<p>The application's values for
android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
+ <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
<span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
the camera's flash unit,<wbr/> firing it in low-light
conditions.<wbr/></p>
STILL_<wbr/>CAPTURE</p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
+ <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
<span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
the camera's flash unit,<wbr/> always firing it for still
captures.<wbr/></p>
STILL_<wbr/>CAPTURE</p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
+ <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
reduction.<wbr/></p>
<p>If deemed necessary by the camera device,<wbr/> a red eye
reduction flash will fire during the precapture
sequence.<wbr/></p></span>
</li>
+ <li>
+ <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
+<p>It informs the camera device that an external flash has been turned on,<wbr/> and that
+metering (and continuous focus if active) should be quickly recaculated to account
+for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
+<p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
+other available AE modes.<wbr/></p>
+<p>If the camera device supports AE external flash mode,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must
+be FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
+flash.<wbr/></p></span>
+ </li>
</ul>
</td> <!-- entry_type -->
<p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
AUTO.<wbr/></p>
<p>When set to any of the ON modes,<wbr/> the camera device's
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
Otherwise will always be present.<wbr/></p>
<p>The maximum number of regions supported by the device is determined by the value
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL level representation of MeteringRectangle[] is a
int[5 * area_<wbr/>count].<wbr/>
Every five elements represent a metering region of
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">IDLE</span>
+ <span class="entry_type_enum_name">IDLE (v3.2)</span>
<span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">START</span>
+ <span class="entry_type_enum_name">START (v3.2)</span>
<span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
by the camera device.<wbr/></p>
<p>The exact effect of the precapture trigger depends on
the current AE mode and state.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CANCEL</span>
+ <span class="entry_type_enum_name">CANCEL (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
precapture metering sequence,<wbr/> the auto-exposure routine will return to its
initial state.<wbr/></p></span>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry is normally set to IDLE,<wbr/> or is not
included at all in the request settings.<wbr/> When included and
set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/> It is acceptable for the HAL to
treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">INACTIVE</span>
+ <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
<span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
<p>When a camera device is opened,<wbr/> it starts in
this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
this state in capture result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SEARCHING</span>
+ <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
<span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
for the current scene.<wbr/></p>
<p>This is a transient state,<wbr/> the camera device may skip
reporting this state in capture result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CONVERGED</span>
+ <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
<span class="entry_type_enum_notes"><p>AE has a good set of control values for the
current scene.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">LOCKED</span>
+ <span class="entry_type_enum_name">LOCKED (v3.2)</span>
<span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FLASH_REQUIRED</span>
+ <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
<span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
needs to be fired for good quality still
capture.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PRECAPTURE</span>
+ <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
<span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
and is currently executing it.<wbr/></p>
<p>Precapture can be triggered through setting
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all
</tr>
</tbody>
</table>
-<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
+<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
<table>
<thead>
<tr>
</tr>
</tbody>
</table>
+<p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
+<a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> must be FLASH_<wbr/>REQUIRED after
+the camera device finishes AE scan and it's too dark without flash.<wbr/></p>
<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
can be skipped in that manner is called a transient state.<wbr/></p>
-<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
+<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
listed in above table,<wbr/> it is also legal for the camera device to skip one or more
transient states between two results.<wbr/> See below table for examples:</p>
<table>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
application.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AUTO</span>
+ <span class="entry_type_enum_name">AUTO (v3.2)</span>
<span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
<p>In this mode,<wbr/> the lens does not move unless
the autofocus trigger action is called.<wbr/> When that trigger
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_name">MACRO (v3.2)</span>
<span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
<p>In this mode,<wbr/> the lens does not move unless the
autofocus trigger action is called.<wbr/> When that trigger is
INACTIVE.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
+ <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
<span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
position continually to attempt to provide a
constantly-in-focus image stream.<wbr/></p>
canceled.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
+ <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
<span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
position continually to attempt to provide a
constantly-in-focus image stream.<wbr/></p>
has just been started.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">EDOF</span>
+ <span class="entry_type_enum_name">EDOF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
<p>The camera device will produce images with an extended
depth of field automatically; no special focusing
<p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> > 0</code>).<wbr/> Also note that
when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end
up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
Otherwise will always be present.<wbr/></p>
<p>The maximum number of focus areas supported by the device is determined by the value
is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
ignored.<wbr/></p>
<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
-camera device.<wbr/></p>
+camera device.<wbr/> The capture result will either be a zero weight region as well,<wbr/> or
+the region selected by the camera device as the focus area of interest.<wbr/></p>
<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
region and output only the intersection rectangle as the metering region in the result
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL level representation of MeteringRectangle[] is a
int[5 * area_<wbr/>count].<wbr/>
Every five elements represent a metering region of
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">IDLE</span>
+ <span class="entry_type_enum_name">IDLE (v3.2)</span>
<span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">START</span>
+ <span class="entry_type_enum_name">START (v3.2)</span>
<span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CANCEL</span>
+ <span class="entry_type_enum_name">CANCEL (v3.2)</span>
<span class="entry_type_enum_notes"><p>Autofocus will return to its initial
state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
</li>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry is normally set to IDLE,<wbr/> or is not
included at all in the request settings.<wbr/></p>
<p>When included and set to START,<wbr/> the camera device will trigger the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/> It is acceptable for the HAL to
treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">INACTIVE</span>
+ <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
<span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
to scan.<wbr/></p>
<p>When a camera device is opened,<wbr/> it starts in this
result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PASSIVE_SCAN</span>
+ <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
<span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
camera device in a continuous autofocus mode.<wbr/></p>
<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
capture result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
+ <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
<span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
restart scanning at any time.<wbr/></p>
<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
capture result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ACTIVE_SCAN</span>
+ <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
<span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
triggered by AF trigger.<wbr/></p>
<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
capture result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
+ <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
<span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
focus.<wbr/></p>
<p>This state is reached only after an explicit START AF trigger has been
a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
+ <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
<span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
focus.<wbr/></p>
<p>This state is reached only after an explicit START AF trigger has been
a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
+ <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
<span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
and may restart scanning at any time.<wbr/></p>
<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
received yet by HAL.<wbr/> Always updated even if AF algorithm
ignores the trigger</p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
algorithm is free to update its parameters if in AUTO
mode.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
algorithm will not update its parameters while the lock
is active.<wbr/></p></span>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
<p>The application-selected color transform matrix
(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
device for manual white balance control.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AUTO</span>
+ <span class="entry_type_enum_name">AUTO (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">INCANDESCENT</span>
+ <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses incandescent light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FLUORESCENT</span>
+ <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses fluorescent light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
+ <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses warm fluorescent light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">DAYLIGHT</span>
+ <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses daylight light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
+ <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses cloudy daylight light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">TWILIGHT</span>
+ <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses twilight light as the assumed scene
illumination for white balance.<wbr/></p>
will be available in the capture result for this request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SHADE</span>
+ <span class="entry_type_enum_name">SHADE (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
the camera device uses shade light as the assumed scene
illumination for white balance.<wbr/></p>
<p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
routine is enabled,<wbr/> overriding the application's selected
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
Otherwise will always be present.<wbr/></p>
<p>The maximum number of regions supported by the device is determined by the value
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL level representation of MeteringRectangle[] is a
int[5 * area_<wbr/>count].<wbr/>
Every five elements represent a metering region of
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">CUSTOM</span>
+ <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
<span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
categories.<wbr/> The camera device will default to preview-like
behavior.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PREVIEW</span>
+ <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
<p>The precapture trigger may be used to start off a metering
w/<wbr/>flash sequence.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">STILL_CAPTURE</span>
+ <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a still capture-type
use case.<wbr/></p>
<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">VIDEO_RECORD</span>
+ <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a video recording
use case.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
+ <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
image while recording video) use case.<wbr/></p>
<p>The camera device should take the highest-quality image
frame rate of video recording.<wbr/> </p></span>
</li>
<li>
- <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
+ <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
application will stream full-resolution images and
reprocess one or several later for a final
capture.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">MANUAL</span>
+ <span class="entry_type_enum_name">MANUAL (v3.2)</span>
<span class="entry_type_enum_notes"><p>This request is for manual capture use case where
the applications want to directly control the capture parameters.<wbr/></p>
<p>For example,<wbr/> the application may wish to manually control
<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
</li>
+ <li>
+ <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
+the application will use camera and inertial sensor data to
+locate and track objects in the world.<wbr/></p>
+<p>The camera device auto-exposure routine will limit the exposure time
+of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
+ </li>
</ul>
</td> <!-- entry_type -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control (except for MANUAL) is only effective if
<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
-<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
-contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
-<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
-always supported.<wbr/></p>
+<p>All intents are supported by all devices,<wbr/> except that:
+ * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
+PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
+ * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
+MANUAL_<wbr/>SENSOR.<wbr/>
+ * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
+MOTION_<wbr/>TRACKING.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">INACTIVE</span>
+ <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
<span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
<p>When a camera device is opened,<wbr/> it starts in this
state.<wbr/> This is a transient state,<wbr/> the camera device may
result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SEARCHING</span>
+ <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
<span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
values for the current scene.<wbr/></p>
<p>This is a transient state,<wbr/> the camera device
may skip reporting this state in capture result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CONVERGED</span>
+ <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
<span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
current scene.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">LOCKED</span>
+ <span class="entry_type_enum_name">LOCKED (v3.2)</span>
<span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
or <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> if <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code> resets all
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">MONO</span>
+ <span class="entry_type_enum_name">MONO (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
a single color.<wbr/></p>
<p>This will typically be grayscale.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">NEGATIVE</span>
+ <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
are inverted.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SOLARIZE</span>
+ <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
image is wholly or partially reversed in
tone.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SEPIA</span>
+ <span class="entry_type_enum_name">SEPIA (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">POSTERIZE</span>
+ <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
discrete regions of tone rather than a continuous
gradient of tones.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">WHITEBOARD</span>
+ <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">BLACKBOARD</span>
+ <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AQUA</span>
+ <span class="entry_type_enum_name">AQUA (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
</li>
<p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When this mode is set,<wbr/> a color effect will be applied
to images produced by the camera device.<wbr/> The interpretation
and implementation of these color effects is left to the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
<p>All control by the device's metering and focusing (3A)
routines is disabled,<wbr/> and no other settings in
can be immediately applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">AUTO</span>
+ <span class="entry_type_enum_name">AUTO (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
<p>Manual control of capture parameters is disabled.<wbr/> All
controls in android.<wbr/>control.<wbr/>* besides sceneMode take
effect.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">USE_SCENE_MODE</span>
+ <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
contain some modes other than DISABLED).<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
+ <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
used by camera device background auto-exposure,<wbr/> auto-white balance and
<p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
by the camera device is disabled.<wbr/> The application must set the fields for
capture parameters itself.<wbr/></p>
<p>When set to AUTO,<wbr/> the individual algorithm controls in
android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
-android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
-one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
-as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
-<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
+android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
+implements one of the scene mode settings (such as ACTION,<wbr/>
+SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
+3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
is that this frame will not be used by camera device background 3A statistics
update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">DISABLED</span>
+ <span class="entry_type_enum_name">DISABLED (v3.2)</span>
<span class="entry_type_enum_value">0</span>
<span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FACE_PRIORITY</span>
+ <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
auto-exposure routines.<wbr/></p>
remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ACTION</span>
+ <span class="entry_type_enum_name">ACTION (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
<p>Similar to SPORTS.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PORTRAIT</span>
+ <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">LANDSCAPE</span>
+ <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">NIGHT</span>
+ <span class="entry_type_enum_name">NIGHT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
+ <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
settings.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">THEATRE</span>
+ <span class="entry_type_enum_name">THEATRE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
remain off.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">BEACH</span>
+ <span class="entry_type_enum_name">BEACH (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SNOW</span>
+ <span class="entry_type_enum_name">SNOW (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SUNSET</span>
+ <span class="entry_type_enum_name">SUNSET (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">STEADYPHOTO</span>
+ <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
device motion (for example: due to hand shake).<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FIREWORKS</span>
+ <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SPORTS</span>
+ <span class="entry_type_enum_name">SPORTS (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
<p>Similar to ACTION.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PARTY</span>
+ <span class="entry_type_enum_name">PARTY (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
people.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CANDLELIGHT</span>
+ <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
is a flame.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">BARCODE</span>
+ <span class="entry_type_enum_name">BARCODE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
for use by camera applications that wish to read the
barcode value.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
+ <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
<span class="entry_type_enum_deprecated">[deprecated]</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HDR</span>
+ <span class="entry_type_enum_name">HDR (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
<p>In this scene mode,<wbr/> the camera device captures images
the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
+ <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_hidden">[hidden]</span>
<span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">DEVICE_CUSTOM_START</span>
+ <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_hidden">[hidden]</span>
<span class="entry_type_enum_value">100</span>
customized scene modes.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">DEVICE_CUSTOM_END</span>
+ <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_hidden">[hidden]</span>
<span class="entry_type_enum_value">127</span>
<p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Scene modes are custom camera modes optimized for a certain set of conditions and
capture settings.<wbr/></p>
<p>This is the mode that that is active when
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL implementations that include scene modes are expected to provide
the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in
<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
-<p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
-the HAL must list supported video size and fps range in
-<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>
-1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
-mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
-requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
-This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
+<p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> the
+HAL must list supported video size and fps range in
+<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/> 1280x720,<wbr/>
+if the HAL has two different sensor configurations for normal streaming mode and high
+speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
+HAL may have to switch between different sensor modes.<wbr/> This mode is deprecated in legacy
+HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Video stabilization automatically warps images from
the camera in order to stabilize motion between consecutive frames.<wbr/></p>
<p>If enabled,<wbr/> video stabilization can modify the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Some camera devices support additional digital sensitivity boosting in the
camera processing pipeline after sensor RAW image is captured.<wbr/>
Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FALSE</span>
+ <span class="entry_type_enum_name">FALSE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured
after previous requests.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">TRUE</span>
+ <span class="entry_type_enum_name">TRUE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be
captured before previous requests.<wbr/></p></span>
</li>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
capture intent.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.control.afSceneChange">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">byte</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+
+
+
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">DETECTED (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>Whether a significant scene change is detected within the currently-set AF
+region(s).<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
+such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
+significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
+result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
+to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
+<p>This key will be available if the camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
+ <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
Bayer RAW output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
relative to raw output.<wbr/></p></span>
</li>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
+ <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
slow down frame rate relative to sensor.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
+ <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
- <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
-based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
-edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
-applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
-frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
-is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
+ <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
+levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
+resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
+or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
+enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
+so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
+(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
<p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
no enhancement will be applied by the camera device.<wbr/></p>
<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
adjust the internal edge enhancement reduction parameters appropriately to get the best
quality images.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Full-capability camera devices must always support OFF; camera devices that support
YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
list FAST.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
That is,<wbr/> if the highest quality implementation on the camera device does not slow down
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
slow down frame rate relative to sensor.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
+ <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
- <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
-based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
-edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
-applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
-frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
-is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
+ <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
+levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
+resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
+or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
+enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
+so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
+(since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
<p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
no enhancement will be applied by the camera device.<wbr/></p>
<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
adjust the internal edge enhancement reduction parameters appropriately to get the best
quality images.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
+ <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>0 - 10</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Power for snapshot may use a different scale than
for torch mode.<wbr/> Only one entry for torch mode will be
used</p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>0-(exposure time-flash duration)</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Clamped to (0,<wbr/> exposure time - flash
duration).<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SINGLE</span>
+ <span class="entry_type_enum_name">SINGLE (v3.2)</span>
<span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
for this capture.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">TORCH</span>
+ <span class="entry_type_enum_name">TORCH (v3.2)</span>
<span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control is only effective when flash unit is available
(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
<p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FALSE</span>
+ <span class="entry_type_enum_name">FALSE (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">TRUE</span>
+ <span class="entry_type_enum_name">TRUE (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Will be <code>false</code> if no flash is available.<wbr/></p>
<p>If there is no flash unit,<wbr/> none of the flash controls do
anything.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>0-1e9</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>1 second too long/<wbr/>too short for recharge? Should
this be power-dependent?</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>0-1 for both</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>0 - 10</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Power for snapshot may use a different scale than
for torch mode.<wbr/> Only one entry for torch mode will be
used</p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>0-(exposure time-flash duration)</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Clamped to (0,<wbr/> exposure time - flash
duration).<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SINGLE</span>
+ <span class="entry_type_enum_name">SINGLE (v3.2)</span>
<span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
for this capture.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">TORCH</span>
+ <span class="entry_type_enum_name">TORCH (v3.2)</span>
<span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
</li>
</ul>
<td class="entry_range">
</td>
- <td class="entry_tags">
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
+ <td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</ul>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control is only effective when flash unit is available
(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
<p>When this control is used,<wbr/> the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> must be set to ON or OFF.<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">UNAVAILABLE</span>
+ <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
<span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CHARGING</span>
+ <span class="entry_type_enum_name">CHARGING (v3.2)</span>
<span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">READY</span>
+ <span class="entry_type_enum_name">READY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FIRED</span>
+ <span class="entry_type_enum_name">FIRED (v3.2)</span>
<span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PARTIAL</span>
+ <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
<span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
<p>This is usually due to the next or previous frame having
the flash fire,<wbr/> and the flash spilling into this capture
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When the camera device doesn't have flash unit
(i.<wbr/>e.<wbr/> <code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == false</code>),<wbr/> this state will always be UNAVAILABLE.<wbr/>
Other states indicate the current flash status.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
+ <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
<p>The frame rate must not be reduced relative to sensor raw output
for this option.<wbr/></p>
<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
rate relative to sensor raw output.<wbr/></p>
<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
<p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
are stuck at an arbitrary value or are oversensitive).<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>FULL mode camera devices will always support FAST.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>To avoid performance issues,<wbr/> there will be significantly fewer hot
pixels than actual pixels on the camera sensor.<wbr/>
HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
<p>The frame rate must not be reduced relative to sensor raw output
for this option.<wbr/></p>
<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
rate relative to sensor raw output.<wbr/></p>
<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
<p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
<p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
are stuck at an arbitrary value or are oversensitive).<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
+ <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Setting a location object in a request will include the GPS coordinates of the location
into any JPEG images captured based on the request.<wbr/> These coordinates can then be
viewed by anyone who receives the JPEG image.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
upright.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>1-100; larger is higher quality</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>85-95 is typical usage range.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>1-100; larger is higher quality</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
but the captured JPEG will still be a valid image.<wbr/></p>
<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
thumbnail should be generated.<wbr/></p>
<p>Below condiditions will be satisfied for this size list:</p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
the camera</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is used for sizing the gralloc buffers for
JPEG</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Setting a location object in a request will include the GPS coordinates of the location
into any JPEG images captured based on the request.<wbr/> These coordinates can then be
viewed by anyone who receives the JPEG image.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
upright.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>1-100; larger is higher quality</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>85-95 is typical usage range.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If no JPEG output is produced for the request,<wbr/>
this must be 0.<wbr/></p>
<p>Otherwise,<wbr/> this describes the real size of the compressed
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>1-100; larger is higher quality</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
but the captured JPEG will still be a valid image.<wbr/></p>
<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
+ <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Setting this value is only supported on the camera devices that have a variable
aperture lens.<wbr/></p>
<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control will not be supported on most camera devices.<wbr/></p>
<p>Lens filters are typically used to lower the amount of light the
sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This setting controls the physical focal length of the camera
device's lens.<wbr/> Changing the focal length changes the field of
view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control can be used for setting manual focus,<wbr/> on devices that support
the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
</li>
<p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>OIS is used to compensate for motion blur due to small
movements of the camera during capture.<wbr/> Unlike digital image
stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If the camera device doesn't support a variable lens aperture,<wbr/>
this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
<p>If the camera device supports a variable aperture,<wbr/> the aperture values
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Values are >= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If a neutral density filter is not supported by this camera device,<wbr/>
this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Values are > 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If optical zoom is not supported,<wbr/> this list will only contain
a single value corresponding to the fixed focal length of the
device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If OIS is not supported by a given camera device,<wbr/> this list will
contain only OFF.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
within <code>(0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If the lens is not fixed focus,<wbr/> the camera device will report this
field when <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> is APPROXIMATE or CALIBRATED.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If the lens is fixed-focus,<wbr/> this will be
0.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Mandatory for FULL devices; LIMITED devices
must always set this value to 0 for fixed-focus; and may omit
the minimum focus distance otherwise.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Both values >= 1</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The map should be on the order of 30-40 rows and columns,<wbr/> and
must be smaller than 64x64.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">UNCALIBRATED</span>
+ <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
<span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
<p>Setting the lens to the same focus distance on separate occasions may
represents the farthest focus.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">APPROXIMATE</span>
+ <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
<span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
<p>However,<wbr/> setting the lens to the same focus distance
on separate occasions may result in a different real
mechanism,<wbr/> and the device temperature.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CALIBRATED</span>
+ <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
<span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
is calibrated.<wbr/></p>
<p>The lens mechanism is calibrated so that setting the
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The lens focus distance calibration quality determines the reliability of
focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
<a href="#dynamic_android.lens.focusRange">android.<wbr/>lens.<wbr/>focus<wbr/>Range</a>,<wbr/> <a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a>,<wbr/> and
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
and the lens focus distance is set to 0 diopters
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FRONT</span>
+ <span class="entry_type_enum_name">FRONT (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">BACK</span>
+ <span class="entry_type_enum_name">BACK (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">EXTERNAL</span>
+ <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
device's screen.<wbr/></p></span>
</li>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The four coefficients that describe the quaternion
rotation from the Android sensor coordinate system to a
camera-aligned coordinate system where the X-axis is
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The position of the camera device's lens optical center,<wbr/>
-as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
-optical center of the largest camera device facing in the
-same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
-axes</a>.<wbr/> Note that only the axis definitions are shared with
-the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
-<p>If this device is the largest or only camera device with a
-given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
-camera device with a lens optical center located 3 cm from
-the main sensor along the +X axis (to the right from the
-user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
-<p>To transform a pixel coordinates between two cameras
-facing the same direction,<wbr/> first the source camera
-<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then
-the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
-to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
-of the source camera,<wbr/> the translation of the source camera
-relative to the destination camera,<wbr/> the
-<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
-finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
-of the destination camera.<wbr/> This obtains a
-radial-distortion-free coordinate in the destination
-camera pixel coordinates.<wbr/></p>
-<p>To compare this against a real image from the destination
-camera,<wbr/> the destination camera image then needs to be
-corrected for radial distortion before comparison or
-sampling.<wbr/></p>
- </td>
- </tr>
-
-
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
+<p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
+is relative to the optical center of the largest camera device facing in the same
+direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
+coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
+coordinate system,<wbr/> but not the origin.<wbr/></p>
+<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
+position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
+from the main sensor along the +X axis (to the right from the user's perspective) will
+report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
+<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
+the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then the source
+camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
+<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
+relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
+camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
+camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
+coordinates.<wbr/></p>
+<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
+image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
+<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
+the center of the primary gyroscope on the device.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The five calibration parameters that describe the
transform from camera-centric 3D coordinates to sensor
pixel coordinates:</p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
kappa_<wbr/>3]</code> and two tangential distortion coefficients
<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="static_android.lens.poseReference">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>lens.<wbr/>pose<wbr/>Reference
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">byte</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+
+
+
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the optical center of
+the largest camera device facing the same direction as this camera.<wbr/></p>
+<p>This is the default value for API levels before Android P.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the position of the
+primary gyroscope of this Android device.<wbr/></p></span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>Different calibration methods and use cases can produce better or worse results
+depending on the selected coordinate origin.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Setting this value is only supported on the camera devices that have a variable
aperture lens.<wbr/></p>
<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control will not be supported on most camera devices.<wbr/></p>
<p>Lens filters are typically used to lower the amount of light the
sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This setting controls the physical focal length of the camera
device's lens.<wbr/> Changing the focal length changes the field of
view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Should be zero for fixed-focus cameras</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>=0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If variable focus not supported,<wbr/> can still report
fixed depth of field range</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
</li>
<p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>OIS is used to compensate for motion blur due to small
movements of the camera during capture.<wbr/> Unlike digital image
stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">STATIONARY</span>
+ <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
<span class="entry_type_enum_notes"><p>The lens parameters (<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) are not changing.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">MOVING</span>
+ <span class="entry_type_enum_name">MOVING (v3.2)</span>
<span class="entry_type_enum_notes"><p>One or several of the lens parameters
(<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> or <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>) is
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For lens parameters <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> and <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a>,<wbr/> when changes are requested,<wbr/>
they may take several frames to reach the requested values.<wbr/> This state indicates
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The four coefficients that describe the quaternion
rotation from the Android sensor coordinate system to a
camera-aligned coordinate system where the X-axis is
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The position of the camera device's lens optical center,<wbr/>
-as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
-optical center of the largest camera device facing in the
-same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
-axes</a>.<wbr/> Note that only the axis definitions are shared with
-the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
-<p>If this device is the largest or only camera device with a
-given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
-camera device with a lens optical center located 3 cm from
-the main sensor along the +X axis (to the right from the
-user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
-<p>To transform a pixel coordinates between two cameras
-facing the same direction,<wbr/> first the source camera
-<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then
-the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
-to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
-of the source camera,<wbr/> the translation of the source camera
-relative to the destination camera,<wbr/> the
-<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
-finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
-of the destination camera.<wbr/> This obtains a
-radial-distortion-free coordinate in the destination
-camera pixel coordinates.<wbr/></p>
-<p>To compare this against a real image from the destination
-camera,<wbr/> the destination camera image then needs to be
-corrected for radial distortion before comparison or
-sampling.<wbr/></p>
- </td>
- </tr>
-
-
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
+<p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
+is relative to the optical center of the largest camera device facing in the same
+direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
+coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
+coordinate system,<wbr/> but not the origin.<wbr/></p>
+<p>If this device is the largest or only camera device with a given facing,<wbr/> then this
+position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
+from the main sensor along the +X axis (to the right from the user's perspective) will
+report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
+<p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
+the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/> Then the source
+camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
+<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
+relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
+camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
+camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
+coordinates.<wbr/></p>
+<p>To compare this against a real image from the destination camera,<wbr/> the destination camera
+image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
+<p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
+the center of the primary gyroscope on the device.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The five calibration parameters that describe the
transform from camera-centric 3D coordinates to sensor
pixel coordinates:</p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
kappa_<wbr/>3]</code> and two tangential distortion coefficients
<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
+ <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
relative to sensor.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
rate relative to sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">MINIMAL</span>
+ <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
sensor output.<wbr/> </p></span>
</li>
<li>
- <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
+ <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
-based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
-reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
-noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
-for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
-is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
-quality may improve from FAST).<wbr/></p>
+based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
+or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
+supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
+noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
+and the quality is equal to or better than FAST (since it is only applied to
+lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
<p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The noise reduction algorithm attempts to improve image quality by removing
excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
adjust the internal noise reduction parameters appropriately to get the best quality
images.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>1 - 10</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
That is,<wbr/> if the highest quality implementation on the camera device does not slow down
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
relative to sensor.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
rate relative to sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">MINIMAL</span>
+ <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
sensor output.<wbr/> </p></span>
</li>
<li>
- <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
+ <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
-based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
-reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
-noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
-for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
-is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
-quality may improve from FAST).<wbr/></p>
+based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
+or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
+supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
+noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
+and the quality is equal to or better than FAST (since it is only applied to
+lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
<p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The noise reduction algorithm attempts to improve image quality by removing
excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
adjust the internal noise reduction parameters appropriately to get the best quality
images.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
+ <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Normalized coordinates refer to those in the
(-1000,<wbr/>1000) range mentioned in the
android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL implementations should implement AF trigger
modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL implementations should use gralloc usage flags
to determine that a stream will be used for
zero-shutter-lag,<wbr/> instead of relying on an explicit
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Does not need to be listed in static
metadata.<wbr/> Support for partial results will be reworked in
future versions of camera service.<wbr/> This quirk will stop
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
for information on how to implement partial results.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FINAL</span>
+ <span class="entry_type_enum_name">FINAL (v3.2)</span>
<span class="entry_type_enum_notes"><p>The last or only metadata result buffer
for this capture.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PARTIAL</span>
+ <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
<span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
capture.<wbr/> More result buffers for this capture will be sent
by the camera device,<wbr/> the last of which will be marked
<p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The entries in the result metadata buffers for a
single capture may not overlap,<wbr/> except for this entry.<wbr/> The
FINAL buffers must retain FIFO ordering relative to the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
for information on how to implement partial results.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_request" class="section">request</td></tr>
+ <tr><td colspan="7" id="section_request" class="section">request</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>Any int.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any int</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_HAL2">HAL2</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
REPROCESS.<wbr/> Ignored otherwise</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">NONE</span>
+ <span class="entry_type_enum_name">NONE (v3.2)</span>
<span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
for application-bound buffer data.<wbr/> If no
application-bound streams exist,<wbr/> no frame should be
included with any output stream buffers</p></span>
</li>
<li>
- <span class="entry_type_enum_name">FULL</span>
+ <span class="entry_type_enum_name">FULL (v3.2)</span>
<span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
only be produced if they are separately
enabled</p></span>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
created</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_HAL2">HAL2</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If no output streams are listed,<wbr/> then the image
data should simply be discarded.<wbr/> The image data must
still be captured for metadata and statistics production,<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">CAPTURE</span>
+ <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
and process it according to the
settings</p></span>
</li>
<li>
- <span class="entry_type_enum_name">REPROCESS</span>
+ <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
<span class="entry_type_enum_notes"><p>Process previously captured data; the
<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
<td class="entry_description">
<p>The type of the request; either CAPTURE or
-REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
+REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
</td>
<td class="entry_units">
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_HAL2">HAL2</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
>= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is a 3 element tuple that contains the max number of output simultaneous
streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
<ul>
<li>Processed (but stalling): any non-RAW format with a stallDurations > 0.<wbr/>
Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
-<li>Raw formats: <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
-<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
- Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
- <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
- <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
+<li>Raw formats: <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a>,<wbr/> or
+ <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
+<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/> Typically
+ <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
+ <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
</ul>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This value contains the max number of output simultaneous
streams from the raw sensor.<wbr/></p>
<p>This lists the upper bound of the number of output streams supported by
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
>= 2 for LIMITED mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This value contains the max number of output simultaneous
streams for any processed (but not-stalling) formats.<wbr/></p>
<p>This lists the upper bound of the number of output streams supported by
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 1</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This value contains the max number of output simultaneous
streams for any processed (but not-stalling) formats.<wbr/></p>
<p>This lists the upper bound of the number of output streams supported by
CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
be any non-<code>RAW</code> and supported format provided by <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/></p>
<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
-> 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
-stalling format.<wbr/></p>
+> 0.<wbr/> Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a stalling format.<wbr/></p>
<p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_HAL2">HAL2</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Only used by HAL2.<wbr/>x.<wbr/></p>
<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_type">
<span class="entry_type_name">int32</span>
- <span class="entry_type_visibility"> [public]</span>
+ <span class="entry_type_visibility"> [java_public]</span>
<span class="entry_type_hwlevel">[full] </span>
<p>0 or 1.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_REPROC">REPROC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
<p>The image format for a input stream can be any supported format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/> When using an
input stream,<wbr/> there must be at least one output stream configured to to receive the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For the reprocessing flow and controls,<wbr/> see
hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
one stage to readout) from the sensor.<wbr/> The ISP then usually adds
its own stages to do custom HW processing.<wbr/> Further stages may be
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
max batch sizes may be larger than 1.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 1</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>In order to combat the pipeline latency,<wbr/> partial results
may be delivered to the application layer from the camera device as
soon as they are available.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
+ <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
<span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
supports.<wbr/></p>
not standard color output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">MANUAL_SENSOR</span>
+ <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
zero for each supported size-format combination.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
+ <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
The camera device supports basic manual control of the image post-processing
controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">RAW</span>
+ <span class="entry_type_enum_name">RAW (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
metadata for interpreting them.<wbr/></p>
</ul></span>
</li>
<li>
- <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
+ <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
<ul>
</ul></span>
</li>
<li>
- <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
+ <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</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
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_name">BURST_CAPTURE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at >= 20 frames per
second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at >= 10 frames
per second.<wbr/> Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
-resolution of the device,<wbr/> whichever is smaller.<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 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> format in either <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> or <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
-with a minimum frame duration for that format and size of either <= 1/<wbr/>20 s,<wbr/> or
-<= 1/<wbr/>10 s,<wbr/> respectively; 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 >= 1 /<wbr/> minimumFrameDuration
-for the maximum-size YUV_<wbr/>420_<wbr/>888 format.<wbr/> If that maximum size is listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
-then the list of resolutions for YUV_<wbr/>420_<wbr/>888 from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> contains at
-least one resolution >= 8 megapixels,<wbr/> with a minimum frame duration of <= 1/<wbr/>20
-s.<wbr/></p>
-<p>If the device supports the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a>,<wbr/> then those can also be captured at the same rate
-as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
-<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
-as for the YUV_<wbr/>420_<wbr/>888 format also apply to the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> format.<wbr/></p>
-<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/> <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a>
-are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
-consistent image output.<wbr/></p></span>
- </li>
- <li>
- <span class="entry_type_enum_name">YUV_REPROCESSING</span>
+resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
following:</p>
<ul>
<li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li>
-<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/>
- YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
- <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
- <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
+<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> is supported as an output/<wbr/>input
+ format,<wbr/> that is,<wbr/> YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
returns non-empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
<li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a></li>
-<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> does not cause a frame rate drop
- relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
+<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> does not cause a frame rate
+ drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> will be reprocessable into both
<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
<li>The maximum available resolution for <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> streams (both input/<wbr/>output) will match the
maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
<li>Only the below controls are effective for reprocessing requests and will be present
- in capture results.<wbr/> The reprocess requests are from the original capture results that
- are associated with the intermediate <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>
- output buffers.<wbr/> All other controls in the reprocess requests will be ignored by the
- camera device.<wbr/><ul>
+ in capture results.<wbr/> The reprocess requests are from the original capture results
+ that are associated with the intermediate <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> output buffers.<wbr/> All other controls in the
+ reprocess requests will be ignored by the camera device.<wbr/><ul>
<li>android.<wbr/>jpeg.<wbr/>*</li>
<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
</ul></span>
</li>
<li>
- <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
+ <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
<p>This capability requires the camera device to support the following:</p>
<ul>
-<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
-<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a> is optionally supported as an
- output format.<wbr/></li>
-<li>This camera device,<wbr/> and all camera devices with the same <a href="#static_android.lens.facing">android.<wbr/>lens.<wbr/>facing</a>,<wbr/>
- will list the following calibration entries in both
- <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
- <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
+<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
+ an output format.<wbr/></li>
+<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a> is
+ optionally supported as an output format.<wbr/></li>
+<li>This camera device,<wbr/> and all camera devices with the same <a href="#static_android.lens.facing">android.<wbr/>lens.<wbr/>facing</a>,<wbr/> will
+ list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
+ and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
</ul>
</li>
<li>The <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> entry is listed by this device.<wbr/></li>
+<li>As of Android P,<wbr/> the <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> entry is listed by this device.<wbr/></li>
<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
format.<wbr/></li>
</ul>
<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
-should be accounted for (see
-<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
+should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
using a repeating burst is recommended,<wbr/> where a depth-output target is only included
once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
rate,<wbr/> including depth stall time.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
+ <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
- <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps)
-use case.<wbr/> The camera device will support high speed capture session created by
-<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
-only accepts high speed request lists created by
-<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
-<p>A camera device can still support high speed video streaming by advertising the high speed
-FPS ranges in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/> For this case,<wbr/> all normal
-capture request per frame control and synchronization requirements will apply to
-the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
-the capability of a specialized operating mode with many limitations (see below),<wbr/> which
-is only targeted at high speed video recording.<wbr/></p>
-<p>The supported high speed video sizes and fps ranges are specified in
-<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
-To get desired output frame rates,<wbr/> the application is only allowed to select video size
-and FPS range combinations provided by
-<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
-The fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
+ <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate >=120fps) use
+case.<wbr/> The camera device will support high speed capture session created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
+only accepts high speed request lists created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
+<p>A camera device can still support high speed video streaming by advertising the high
+speed FPS ranges in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/> For this case,<wbr/> all
+normal capture request per frame control and synchronization requirements will apply
+to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
+describes the capability of a specialized operating mode with many limitations (see
+below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
+<p>The supported high speed video sizes and fps ranges are specified in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
+To get desired output frame rates,<wbr/> the application is only allowed to select video
+size and FPS range combinations provided by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/> The
+fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
rate will be bounded by the screen refresh rate.<wbr/></p>
<p>The camera device will only support up to 2 high speed simultaneous output surfaces
-(preview and recording surfaces)
-in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
+(preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
+if all of below conditions are true:</p>
<ul>
<li>The application creates a camera capture session with no more than 2 surfaces via
<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
-targeted surfaces must be preview surface (either from
-<a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or
-recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
-<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
+targeted surfaces must be preview surface (either from <a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or recording
+surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
<li>The stream sizes are selected from the sizes reported by
<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
-<li>The FPS ranges are selected from
-<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
+<li>The FPS ranges are selected from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
</ul>
<p>When above conditions are NOT satistied,<wbr/>
<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
the application avoids unnecessary maximum target FPS changes as much as possible
during high speed streaming.<wbr/></p></span>
</li>
+ <li>
+ <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
+ <span class="entry_type_enum_optional">[optional]</span>
+ <span class="entry_type_enum_notes"><p>The camera device supports the MOTION_<wbr/>TRACKING value for
+<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a>,<wbr/> which limits maximum exposure time to 20 ms.<wbr/></p>
+<p>This limits the motion blur of capture images,<wbr/> resulting in better image tracking
+results for use cases such as image stabilization or augmented reality.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">LOGICAL_MULTI_CAMERA (v3.3)</span>
+ <span class="entry_type_enum_optional">[optional]</span>
+ <span class="entry_type_enum_notes"><p>The camera device is a logical camera backed by two or more physical cameras that are
+also exposed to the application.<wbr/></p>
+<p>This capability requires the camera device to support the following:</p>
+<ul>
+<li>This camera device must list the following static metadata entries in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>:<ul>
+<li><a href="#static_android.logicalMultiCamera.physicalIds">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids</a></li>
+<li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type</a></li>
+</ul>
+</li>
+<li>The underlying physical cameras' static metadata must list the following entries,<wbr/>
+ so that the application can correlate pixels from the physical streams:<ul>
+<li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a></li>
+<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
+<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
+<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
+<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
+</ul>
+</li>
+<li>The SENSOR_<wbr/>INFO_<wbr/>TIMESTAMP_<wbr/>SOURCE of the logical device and physical devices must be
+ the same.<wbr/></li>
+<li>The logical camera device must be LIMITED or higher device.<wbr/></li>
+</ul>
+<p>Both the logical camera device and its underlying physical devices support the
+mandatory stream combinations required for their device levels.<wbr/></p>
+<p>Additionally,<wbr/> for each guaranteed stream combination,<wbr/> the logical camera supports:</p>
+<ul>
+<li>For each guaranteed stream combination,<wbr/> the logical camera supports replacing one
+ logical <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>
+ or raw stream with two physical streams of the same size and format,<wbr/> each from a
+ separate physical camera,<wbr/> given that the size and format are supported by both
+ physical cameras.<wbr/></li>
+<li>If the logical camera doesn't advertise RAW capability,<wbr/> but the underlying physical
+ cameras do,<wbr/> the logical camera will support guaranteed stream combinations for RAW
+ capability,<wbr/> except that the RAW streams will be physical streams,<wbr/> each from a separate
+ physical camera.<wbr/> This is usually the case when the physical cameras have different
+ sensor sizes.<wbr/></li>
+</ul>
+<p>Using physical streams in place of a logical stream of the same size and format will
+not slow down the frame rate of the capture,<wbr/> as long as the minimum frame duration
+of the physical and logical streams are the same.<wbr/></p></span>
+ </li>
</ul>
</td> <!-- entry_type -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>A capability is a contract that the camera device makes in order
to be able to satisfy one or more use cases.<wbr/></p>
<p>Listing a capability guarantees that the whole set of features
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Additional constraint details per-capability will be available
in the Compatibility Test Suite.<wbr/></p>
<p>Minimum baseline requirements required for the
enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
DEPTH).<wbr/></p>
+<p>For a camera device with LOGICAL_<wbr/>MULTI_<wbr/>CAMERA capability,<wbr/> it should operate in the
+same way as a physical camera device based on its hardware level and capabilities.<wbr/>
+It's recommended that its feature set is superset of that of individual physical cameras.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Attempting to set a key into a CaptureRequest that is not
listed here will result in an invalid request and will be rejected
by the camera device.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
- <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
-extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
+ <td class="entry_details" colspan="6">
+ <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
+use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
vendor extensions API and not against this field.<wbr/></p>
<p>The HAL must not consume any request tags that are not listed either
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</td> <!-- entry_type -->
<td class="entry_description">
- <p>A list of all keys that the camera device has available
-to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
+ <p>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Attempting to get a key from a CaptureResult that is not
listed here will always return a <code>null</code> value.<wbr/> Getting a key from
a CaptureResult that is listed here will generally never return a <code>null</code>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Tags listed here must always have an entry in the result metadata,<wbr/>
even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
-<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
-extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
+<p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
+use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
vendor extensions API and not against this field.<wbr/></p>
<p>The HAL must not produce any result tags that are not listed either
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</td> <!-- entry_type -->
<td class="entry_description">
- <p>A list of all keys that the camera device has available
-to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
+ <p>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
</td>
<td class="entry_units">
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry follows the same rules as
<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Keys listed here must always have an entry in the static info metadata,<wbr/>
even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
-<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
-extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
+<p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
+the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
vendor extensions API and not against this field.<wbr/></p>
<p>The HAL must not have any tags in its static info that are not listed
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
-
+
+ <tr class="entry" id="static_android.request.availableSessionKeys">
+ <td class="entry_name
+ " rowspan="5">
+ android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">int32</span>
+ <span class="entry_type_container">x</span>
- <!-- end of kind -->
- </tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <span class="entry_type_array">
+ n
+ </span>
+ <span class="entry_type_visibility"> [ndk_public]</span>
+
+
+ <span class="entry_type_hwlevel">[legacy] </span>
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>A subset of the available request keys that the camera device
+can pass as part of the capture session initialization.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
+contains a list of keys that are difficult to apply per-frame and
+can result in unexpected delays when modified during the capture session
+lifetime.<wbr/> Typical examples include parameters that require a
+time-consuming hardware re-configuration or internal camera pipeline
+change.<wbr/> For performance reasons we advise clients to pass their initial
+values as part of
+<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
+Once the camera capture session is enabled it is also recommended to avoid
+changing them from their initial values set in
+<a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
+Control over session parameters can still be exerted in capture requests
+but clients should be aware and expect delays during their application.<wbr/>
+An example usage scenario could look like this:</p>
+<ul>
+<li>The camera client starts by quering the session parameter key list via
+ <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
+<li>Before triggering the capture session create sequence,<wbr/> a capture request
+ must be built via
+ <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
+ using an appropriate template matching the particular use case.<wbr/></li>
+<li>The client should go over the list of session parameters and check
+ whether some of the keys listed matches with the parameters that
+ they intend to modify as part of the first capture request.<wbr/></li>
+<li>If there is no such match,<wbr/> the capture request can be passed
+ unmodified to
+ <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
+<li>If matches do exist,<wbr/> the client should update the respective values
+ and pass the request to
+ <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
+<li>After the capture session initialization completes the session parameter
+ key list can continue to serve as reference when posting or updating
+ further requests.<wbr/> As mentioned above further changes to session
+ parameters should ideally be avoided,<wbr/> if updates are necessary
+ however clients could expect a delay/<wbr/>glitch during the
+ parameter switch.<wbr/></li>
+</ul>
+ </td>
+ </tr>
+
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
+use the extensions C api (refer to
+android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
+<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
+vendor extensions API and not against this field.<wbr/></p>
+<p>The HAL must not consume any request tags in the session parameters that
+are not listed either here or in the vendor tag list.<wbr/></p>
+<p>The public camera2 API will always make the vendor tags visible
+via
+<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
+ </td>
+ </tr>
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="static_android.request.availablePhysicalCameraRequestKeys">
+ <td class="entry_name
+ " rowspan="5">
+ android.<wbr/>request.<wbr/>available<wbr/>Physical<wbr/>Camera<wbr/>Request<wbr/>Keys
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">int32</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ n
+ </span>
+ <span class="entry_type_visibility"> [hidden]</span>
+
+
+ <span class="entry_type_hwlevel">[limited] </span>
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>A subset of the available request keys that can be overriden for
+physical devices backing a logical multi-camera.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which contains a list
+of keys that can be overriden using <a href="https://developer.android.com/reference/CaptureRequest/Builder.html#setPhysicalCameraKey">Builder#setPhysicalCameraKey</a>.<wbr/>
+The respective value of such request key can be obtained by calling
+<a href="https://developer.android.com/reference/CaptureRequest/Builder.html#getPhysicalCameraKey">Builder#getPhysicalCameraKey</a>.<wbr/> Capture requests that contain
+individual physical device requests must be built via
+<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureRequest(int,">Set)</a>.<wbr/></p>
+ </td>
+ </tr>
+
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
+use the extensions C api (refer to
+android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Capture<wbr/>Request.<wbr/>physical<wbr/>Camera<wbr/>Settings for more
+details).<wbr/></p>
+<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
+vendor extensions API and not against this field.<wbr/></p>
+<p>The HAL must not consume any request tags in the session parameters that
+are not listed either here or in the vendor tag list.<wbr/></p>
+<p>There should be no overlap between this set of keys and the available session keys
+<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a> along
+with any other controls that can have impact on the dual-camera sync.<wbr/></p>
+<p>The public camera2 API will always make the vendor tags visible
+via
+<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailablePhysicalCameraRequestKeys">CameraCharacteristics#getAvailablePhysicalCameraRequestKeys</a>.<wbr/></p>
+ </td>
+ </tr>
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+
+ <!-- end of kind -->
+ </tbody>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>> 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Reset on release()</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any int</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">NONE</span>
+ <span class="entry_type_enum_name">NONE (v3.2)</span>
<span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
for application-bound buffer data.<wbr/> If no
application-bound streams exist,<wbr/> no frame should be
included with any output stream buffers</p></span>
</li>
<li>
- <span class="entry_type_enum_name">FULL</span>
+ <span class="entry_type_enum_name">FULL (v3.2)</span>
<span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
only be produced if they are separately
enabled</p></span>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
created</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_HAL2">HAL2</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If no output streams are listed,<wbr/> then the image
data should simply be discarded.<wbr/> The image data must
still be captured for metadata and statistics production,<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Depending on what settings are used in the request,<wbr/> and
what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
and some pipeline stages skipped.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This value must always represent the accurate count of how many
pipeline stages were actually used.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
+ <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control can be used to implement digital zoom.<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
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<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
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">RAW16</span>
+ <span class="entry_type_enum_name">RAW16 (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_value">0x20</span>
<span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
the full set of performance guarantees.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">RAW_OPAQUE</span>
+ <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_value">0x24</span>
<span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
performance guarantees.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">YV12</span>
+ <span class="entry_type_enum_name">YV12 (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_value">0x32315659</span>
<span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
</li>
<li>
- <span class="entry_type_enum_name">YCrCb_420_SP</span>
+ <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_value">0x11</span>
<span class="entry_type_enum_notes"><p>NV21</p></span>
</li>
<li>
- <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
+ <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
<span class="entry_type_enum_value">0x22</span>
<span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
</li>
<li>
- <span class="entry_type_enum_name">YCbCr_420_888</span>
+ <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
<span class="entry_type_enum_value">0x23</span>
<span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
</li>
<li>
- <span class="entry_type_enum_name">BLOB</span>
+ <span class="entry_type_enum_name">BLOB (v3.2)</span>
<span class="entry_type_enum_value">0x21</span>
<span class="entry_type_enum_notes"><p>JPEG format</p></span>
</li>
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>TODO: Remove property.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This corresponds to the minimum steady-state frame duration when only
that JPEG stream is active and captured in a burst,<wbr/> with all
processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>TODO: Remove property.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
sensor maximum resolution (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL must include sensor maximum resolution
(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>=1</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This represents the maximum amount of zooming possible by
the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
window size.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This should correspond to the frame duration when only that processed
stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
set to FAST.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
<p>For a given use case,<wbr/> the actual maximum supported resolution
may be lower than what is listed here,<wbr/> depending on the destination
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For FULL capability devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>),<wbr/>
the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
and each below resolution if it is smaller than or equal to the sensor
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Should correspond to the frame duration when only the raw stream is
active.<wbr/></p>
<p>When multiple streams are configured,<wbr/> the minimum
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_REPROC">REPROC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>All camera devices with at least 1
<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
available input format.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
of the image format enumerations.<wbr/> The PRIVATE format refers to the
HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OUTPUT</span>
+ <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">INPUT</span>
+ <span class="entry_type_enum_name">INPUT (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
tuples.<wbr/></p>
<p>For a given use case,<wbr/> the actual maximum supported resolution
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
of sensor maximum resolution for JPEG formats (regardless of hardware
level).<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This should correspond to the frame duration when only that
stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
set to either OFF or FAST.<wbr/></p>
<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
calculating the max frame rate.<wbr/></p>
-<p>(Keep in sync with
-<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>A stall duration is how much extra time would get added
to the normal minimum frame duration for a repeating request
that has streams with non-zero stall.<wbr/></p>
<ul>
<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></li>
<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
+<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
</ul>
<p>All other formats may or may not have an allowed stall duration on
a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
for more details.<wbr/></p>
<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
calculating the max frame rate (absent stalls).<wbr/></p>
-<p>(Keep up to date with
-<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If possible,<wbr/> it is recommended that all non-JPEG formats
(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>All camera devices will support sensor maximum resolution (defined by
<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>) for the JPEG format.<wbr/></p>
<p>For a given use case,<wbr/> the actual maximum supported resolution
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Do not set this property directly
(it is synthetic and will not be available at the HAL layer);
set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">CENTER_ONLY</span>
+ <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FREEFORM</span>
+ <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When passing a non-centered crop region (<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>) to a camera
device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
crop region to the center of the sensor active array (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>)
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This control can be used to implement digital zoom.<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
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<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
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
+ <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
duration exposed to the nearest possible value (rather than expose longer).<wbr/>
The final exposure time used will be available in the output capture result.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</td>
<td class="entry_range">
- <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
-<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
-is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
+ <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/>
+The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
</td>
<td class="entry_tags">
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The maximum frame rate that can be supported by a camera subsystem is
a function of many factors:</p>
<ul>
can run concurrently to the rest of the camera pipeline,<wbr/> but
cannot process more than 1 capture at a time.<wbr/></li>
</ul>
-<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
-is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
+<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
-These are used to determine the maximum frame rate /<wbr/> minimum frame
-duration that is possible for a given stream configuration.<wbr/></p>
+These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
+possible for a given stream configuration.<wbr/></p>
<p>Specifically,<wbr/> the application can use the following rules to
determine the minimum frame duration it can request from the camera
device:</p>
<ol>
-<li>Let the set of currently configured input/<wbr/>output streams
-be called <code>S</code>.<wbr/></li>
-<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
-it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
-(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
-called <code>F</code>.<wbr/></li>
-<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
-for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
-used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
+<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
+<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
+(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
+<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
+out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
</ol>
<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
-using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
-determines the steady state frame rate that the application will get
-if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
-request be called <code>Rsimple</code>.<wbr/></p>
-<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
-by a single capture of a new request <code>Rstall</code> (which has at least
-one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
-same minimum frame duration this will not cause a frame rate loss
-if all buffers from the previous <code>Rstall</code> have already been
-delivered.<wbr/></p>
-<p>For more details about stalling,<wbr/> see
-<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
+using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
+state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
+this special kind of request be called <code>Rsimple</code>.<wbr/></p>
+<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
+new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
+<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
+buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
+<p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
<p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For more details about stalling,<wbr/> see
<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<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
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
The camera device then uses the most significant X bits
that correspond to how many bits are in its Bayer raw sensor
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
device returns captures from the image sensor.<wbr/></p>
<p>This is the default if the key is not set.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SOLID_COLOR</span>
+ <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
<span class="entry_type_enum_notes"><p>Each pixel in <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> is replaced by its
respective color channel provided in
<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">COLOR_BARS</span>
+ <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
<span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
<p>The vertical bars (left-to-right) are as follows:</p>
<ul>
0% intensity or 100% intensity.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
+ <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
<span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
each bar should start at its specified color at the top,<wbr/>
and fade to gray at the bottom.<wbr/></p>
of the image.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PN9</span>
+ <span class="entry_type_enum_name">PN9 (v3.2)</span>
<span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
generated from a PN9 512-bit sequence (typically implemented
in hardware with a linear feedback shift register).<wbr/></p>
be exactly the same as the last.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CUSTOM1</span>
+ <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
<span class="entry_type_enum_value">256</span>
<span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
available only on this camera device are at least this numeric
<p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
work as normal.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>All test patterns are specified in the Bayer domain.<wbr/></p>
<p>The HAL may choose to substitute test patterns from the sensor
with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
the region that actually receives light from the scene) after any geometric correction
has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
>= <code>(0,<wbr/>0)</code>.<wbr/>
The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Min <= 100,<wbr/> Max >= 800</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<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_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">RGGB</span>
+ <span class="entry_type_enum_name">RGGB (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">GRBG</span>
+ <span class="entry_type_enum_name">GRBG (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">GBRG</span>
+ <span class="entry_type_enum_name">GBRG (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">BGGR</span>
+ <span class="entry_type_enum_name">BGGR (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">RGB</span>
+ <span class="entry_type_enum_name">RGB (v3.2)</span>
<span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
values for each pixel,<wbr/> instead of just 1 16-bit value
per pixel.<wbr/></p></span>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
the maximum exposure time will be greater than 100ms.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
100ms.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Attempting to use frame durations beyond the maximum will result in the frame
duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
durations.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
The maximum of the range SHOULD be at least
1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<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>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Needed for FOV calculation for old API</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
<a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/> This represents the full pixel dimensions of
the raw buffers produced by this sensor.<wbr/></p>
<p>If a camera device supports raw sensor formats,<wbr/> either this or
<a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is the maximum dimensions for the raw
-output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
-whether or not the image sensor returns buffers containing pixels that are not
-part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
+output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
+(this depends on whether or not the image sensor returns buffers containing pixels that
+are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
or be otherwise inactive.<wbr/> The <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> key
defines the rectangle of active pixels that will be included in processed image
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>> 255 (8-bit output)</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This specifies the fully-saturated encoding level for the raw
sample values from the sensor.<wbr/> This is typically caused by the
sensor becoming highly non-linear or clipping.<wbr/> The minimum for
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The full bit depth of the sensor must be available in the raw data,<wbr/>
so the value for linear sensors should not be significantly lower
than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">UNKNOWN</span>
+ <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
<span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in nanoseconds and monotonic,<wbr/>
but can not be compared to timestamps from other subsystems
(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
and the result metadata generated by a single capture are identical.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">REALTIME</span>
+ <span class="entry_type_enum_name">REALTIME (v3.2)</span>
<span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in the same timebase as
<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
and they can be compared to other timestamps using that base.<wbr/></p></span>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
may not based on a time source that can be compared to other system time sources.<wbr/></p>
<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
recording might suffer unexpected behavior.<wbr/></p>
-<p>Also,<wbr/> camera devices implements REALTIME must pass the ITS sensor fusion test which
+<p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FALSE</span>
+ <span class="entry_type_enum_name">FALSE (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">TRUE</span>
+ <span class="entry_type_enum_name">TRUE (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
not be adjusted for lens shading correction.<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
the region that actually receives light from the scene) before any geometric correction
has been applied,<wbr/> and should be treated as the active region rectangle for any of the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
>= <code>(0,<wbr/>0)</code>.<wbr/>
The <code>(width,<wbr/> height)</code> must be <= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">DAYLIGHT</span>
+ <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
<span class="entry_type_enum_value">1</span>
</li>
<li>
- <span class="entry_type_enum_name">FLUORESCENT</span>
+ <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
<span class="entry_type_enum_value">2</span>
</li>
<li>
- <span class="entry_type_enum_name">TUNGSTEN</span>
+ <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
<span class="entry_type_enum_value">3</span>
<span class="entry_type_enum_notes"><p>Incandescent light</p></span>
</li>
<li>
- <span class="entry_type_enum_name">FLASH</span>
+ <span class="entry_type_enum_name">FLASH (v3.2)</span>
<span class="entry_type_enum_value">4</span>
</li>
<li>
- <span class="entry_type_enum_name">FINE_WEATHER</span>
+ <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
<span class="entry_type_enum_value">9</span>
</li>
<li>
- <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
+ <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
<span class="entry_type_enum_value">10</span>
</li>
<li>
- <span class="entry_type_enum_name">SHADE</span>
+ <span class="entry_type_enum_name">SHADE (v3.2)</span>
<span class="entry_type_enum_value">11</span>
</li>
<li>
- <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
+ <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
<span class="entry_type_enum_value">12</span>
<span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
</li>
<li>
- <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
+ <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
<span class="entry_type_enum_value">13</span>
<span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
</li>
<li>
- <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
+ <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
<span class="entry_type_enum_value">14</span>
<span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
</li>
<li>
- <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
+ <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
<span class="entry_type_enum_value">15</span>
<span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
</li>
<li>
- <span class="entry_type_enum_name">STANDARD_A</span>
+ <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
<span class="entry_type_enum_value">17</span>
</li>
<li>
- <span class="entry_type_enum_name">STANDARD_B</span>
+ <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
<span class="entry_type_enum_value">18</span>
</li>
<li>
- <span class="entry_type_enum_name">STANDARD_C</span>
+ <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
<span class="entry_type_enum_value">19</span>
</li>
<li>
- <span class="entry_type_enum_name">D55</span>
+ <span class="entry_type_enum_name">D55 (v3.2)</span>
<span class="entry_type_enum_value">20</span>
</li>
<li>
- <span class="entry_type_enum_name">D65</span>
+ <span class="entry_type_enum_name">D65 (v3.2)</span>
<span class="entry_type_enum_value">21</span>
</li>
<li>
- <span class="entry_type_enum_name">D75</span>
+ <span class="entry_type_enum_name">D75 (v3.2)</span>
<span class="entry_type_enum_value">22</span>
</li>
<li>
- <span class="entry_type_enum_name">D50</span>
+ <span class="entry_type_enum_name">D50 (v3.2)</span>
<span class="entry_type_enum_value">23</span>
</li>
<li>
- <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
+ <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
<span class="entry_type_enum_value">24</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The values in this key correspond to the values defined for the
EXIF LightSource tag.<wbr/> These illuminants are standard light sources
that are often used calibrating camera devices.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
and corresponding matrices must be present to support the RAW capability
and DNG output.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This matrix is used to correct for per-device variations in the
sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This matrix is used to correct for per-device variations in the
sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This matrix is used to convert from the standard CIE XYZ color
space to the reference sensor colorspace,<wbr/> and is used when processing
raw buffer data.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This matrix is used to convert from the standard CIE XYZ color
space to the reference sensor colorspace,<wbr/> and is used when processing
raw buffer data.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
is used when processing raw buffer data.<wbr/></p>
<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
is used when processing raw buffer data.<wbr/></p>
<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0 for each.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This key specifies the zero light value for each of the CFA mosaic
channels in the camera sensor.<wbr/> The maximal value output by the
sensor is represented by the value in <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The values are given in row-column scan order,<wbr/> with the first value
corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
equal to this,<wbr/> all applied gain must be analog.<wbr/> For
values above this,<wbr/> the gain applied can be a mix of analog and
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
the sensor's coordinate system.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
Value >= 1</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>All custom modes must be >= CUSTOM1.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>In most camera sensors,<wbr/> the active array is surrounded by some
optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
provides a reliable black reference for black level compensation
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
must be >= (0,<wbr/>0) and <=
<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> The (width,<wbr/> height) must be
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
the camera</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
All RAW_<wbr/>OPAQUE output stream configuration listed in
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
- <p>This key is added in HAL3.<wbr/>4.<wbr/>
-For HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this key.<wbr/>
-For HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera framework
-will derive this key by assuming each pixel takes two bytes and no padding bytes
+ <td class="entry_details" colspan="6">
+ <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
+<p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
+key.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
+framework will derive this key by assuming each pixel takes two bytes and no padding bytes
between rows.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
duration exposed to the nearest possible value (rather than expose longer).<wbr/>
The final exposure time used will be available in the output capture result.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</td>
<td class="entry_range">
- <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
-<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
-is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
+ <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/>
+The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
</td>
<td class="entry_tags">
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The maximum frame rate that can be supported by a camera subsystem is
a function of many factors:</p>
<ul>
can run concurrently to the rest of the camera pipeline,<wbr/> but
cannot process more than 1 capture at a time.<wbr/></li>
</ul>
-<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
-is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
+<p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
-These are used to determine the maximum frame rate /<wbr/> minimum frame
-duration that is possible for a given stream configuration.<wbr/></p>
+These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
+possible for a given stream configuration.<wbr/></p>
<p>Specifically,<wbr/> the application can use the following rules to
determine the minimum frame duration it can request from the camera
device:</p>
<ol>
-<li>Let the set of currently configured input/<wbr/>output streams
-be called <code>S</code>.<wbr/></li>
-<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
-it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
-(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
-called <code>F</code>.<wbr/></li>
-<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
-for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
-used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
+<li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
+<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
+(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
+<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
+out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
</ol>
<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
-using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
-determines the steady state frame rate that the application will get
-if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
-request be called <code>Rsimple</code>.<wbr/></p>
-<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
-by a single capture of a new request <code>Rstall</code> (which has at least
-one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
-same minimum frame duration this will not cause a frame rate loss
-if all buffers from the previous <code>Rstall</code> have already been
-delivered.<wbr/></p>
-<p>For more details about stalling,<wbr/> see
-<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
+using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
+state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
+this special kind of request be called <code>Rsimple</code>.<wbr/></p>
+<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
+new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
+<code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
+buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
+<p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
<p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For more details about stalling,<wbr/> see
<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<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
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>> 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<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/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>All timestamps must 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
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This value gives the neutral color point encoded as an RGB value in the
native sensor color space.<wbr/> The neutral color point indicates the
currently estimated white point of the scene illumination.<wbr/> It can be
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This key contains two noise model coefficients for each CFA channel
corresponding to the sensor amplification (S) and sensor readout
noise (O).<wbr/> These are given as pairs of coefficients for each channel
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
<p>Each entry of this map contains three floats corresponding to the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This key contains a default tone curve that can be applied while
processing the image as a starting point for user adjustments.<wbr/>
The curve is specified as a list of value pairs in linear gamma.<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This value is an estimate of the worst case split between the
Bayer green channels in the red and blue rows in the sensor color
filter array.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The green split given may be a static value based on prior
characterization of the camera sensor using the green split
calculation method given here over a large,<wbr/> representative,<wbr/> sample
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
The camera device then uses the most significant X bits
that correspond to how many bits are in its Bayer raw sensor
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
device returns captures from the image sensor.<wbr/></p>
<p>This is the default if the key is not set.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SOLID_COLOR</span>
+ <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
<span class="entry_type_enum_notes"><p>Each pixel in <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> is replaced by its
respective color channel provided in
<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">COLOR_BARS</span>
+ <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
<span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
<p>The vertical bars (left-to-right) are as follows:</p>
<ul>
0% intensity or 100% intensity.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
+ <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
<span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
each bar should start at its specified color at the top,<wbr/>
and fade to gray at the bottom.<wbr/></p>
of the image.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PN9</span>
+ <span class="entry_type_enum_name">PN9 (v3.2)</span>
<span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
generated from a PN9 512-bit sequence (typically implemented
in hardware with a linear feedback shift register).<wbr/></p>
be exactly the same as the last.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">CUSTOM1</span>
+ <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
<span class="entry_type_enum_value">256</span>
<span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
available only on this camera device are at least this numeric
<p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
work as normal.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>All test patterns are specified in the Bayer domain.<wbr/></p>
<p>The HAL may choose to substitute test patterns from the sensor
with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is the exposure time skew between the first and last
row exposure start times.<wbr/> The first row and the last row are
the first and last rows inside of the
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
exposure at the same time.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0 for each.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Camera sensor black levels may vary dramatically for different
capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
layout key (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>),<wbr/> i.<wbr/>e.<wbr/> the
nth value given corresponds to the black level offset for the nth
color channel listed in the CFA.<wbr/></p>
-<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
-available or the camera device advertises this key via
-<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
+<p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is available or the
+camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The values are given in row-column scan order,<wbr/> with the first value
corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
level will change accordingly.<wbr/> This key is similar to
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The full bit depth of the sensor must be available in the raw data,<wbr/>
so the value for linear sensors should not be significantly lower
than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
+ <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
frame rate relative to sensor raw output</p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
cost of possibly reduced frame rate.<wbr/></p></span>
</li>
<p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
camera device,<wbr/> and an identity lens shading map data will be provided
if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
frame rate relative to sensor raw output</p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
cost of possibly reduced frame rate.<wbr/></p></span>
</li>
<p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
camera device,<wbr/> and an identity lens shading map data will be provided
if <code><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> == ON</code>.<wbr/> For example,<wbr/> for lens
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This list contains lens shading modes that can be set for the camera device.<wbr/>
Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
available on the camera device,<wbr/> but the underlying implementation can be the same for
both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
+ <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
results.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SIMPLE</span>
+ <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FULL</span>
+ <span class="entry_type_enum_name">FULL (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Return all face
metadata.<wbr/></p>
<p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Whether face detection is enabled,<wbr/> and whether it
should output just the basic fields or the full set of
fields.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
</li>
</ul>
<p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
</li>
</ul>
<p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_RAW">RAW</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to ON,<wbr/>
<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
the output result metadata.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="controls_android.statistics.oisDataMode">
+ <td class="entry_name
+ " rowspan="1">
+ android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">byte</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+
+
+
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">OFF (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">ON (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>A control for selecting whether OIS position information is included in output
+result metadata.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>OFF is always supported.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>>= 64</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<code>>0</code> for LEGACY devices.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Must be at least 32 x 32</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
<code>false</code>.<wbr/></p>
<p>ON is always supported on devices with the RAW capability.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If no lens shading map output is available for this camera device,<wbr/> this key will
contain only OFF.<wbr/></p>
<p>ON is always supported on devices with the RAW capability.<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">byte</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ n
+ </span>
+ <span class="entry_type_visibility"> [public as enumList]</span>
+
+
+
+
+ <div class="entry_type_notes">list of enums</div>
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>List of OIS data output modes for <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a> that
+are supported by this camera device.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>If no OIS data output is available for this camera device,<wbr/> this key will
+contain only OFF.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
results.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">SIMPLE</span>
+ <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FULL</span>
+ <span class="entry_type_enum_name">FULL (v3.2)</span>
<span class="entry_type_enum_optional">[optional]</span>
<span class="entry_type_enum_notes"><p>Return all face
metadata.<wbr/></p>
<p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Whether face detection is enabled,<wbr/> and whether it
should output just the basic fields or the full set of
fields.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Each detected face is given a unique ID that is valid for as long as the face is visible
to the camera device.<wbr/> A face that leaves the field of view and later returns may be
assigned a new ID.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>1-100</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_BC">BC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The value should be meaningful (for example,<wbr/> setting 100 at
all times is illegal).<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> <code>!=</code> OFF.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The k'th bucket (0-based) covers the input range
(with w = <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>) of [ k * w/<wbr/>N,<wbr/>
(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If only a monochrome sharpness map is supported,<wbr/>
all channels should have the same data</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_FUTURE">FUTURE</a></li>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Each gain factor is >= 1</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The map provided here is the same map that is used by the camera device to
correct both color shading and vignetting for output non-RAW images.<wbr/></p>
<p>When there is no lens shading correction applied to RAW
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Each gain factor is >= 1</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The map provided here is the same map that is used by the camera device to
correct both color shading and vignetting for output non-RAW images.<wbr/></p>
<p>When there is no lens shading correction applied to RAW
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The lens shading map calculation may depend on exposure and white balance statistics.<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/> the HAL
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This may be different than the gains used for this frame,<wbr/>
since statistics processing on data from a new frame
typically completes after the transform has already been
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The camera device will provide the estimate from its
statistics unit on the white balance transforms to use
for the next frame.<wbr/> These are the values the camera device believes
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">NONE</span>
+ <span class="entry_type_enum_name">NONE (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
in the current scene.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">50HZ</span>
+ <span class="entry_type_enum_name">50HZ (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
in the current scene.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">60HZ</span>
+ <span class="entry_type_enum_name">60HZ (v3.2)</span>
<span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
in the current scene.<wbr/></p></span>
</li>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
that depends on the local utility power standards.<wbr/> This flicker must be
accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
</li>
</ul>
<p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>A hotpixel map contains the coordinates of pixels on the camera
sensor that do report valid values (usually due to defects in
the camera sensor).<wbr/> This includes pixels that are stuck at certain
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
<span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
<span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
</li>
</ul>
</td>
<td class="entry_range">
- <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p>
+ <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p>
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
+ <td class="entry_tags">
+ <ul class="entry_tags">
+ <li><a href="#tag_RAW">RAW</a></li>
+ </ul>
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>When set to ON,<wbr/>
+<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
+the output result metadata.<wbr/></p>
+<p>ON is always supported on devices with the RAW capability.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.statistics.oisDataMode">
+ <td class="entry_name
+ " rowspan="1">
+ android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">byte</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+
+
+
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">OFF (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">ON (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>A control for selecting whether OIS position information is included in output
+result metadata.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">int64</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ n
+ </span>
+ <span class="entry_type_visibility"> [ndk_public]</span>
+
+
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ nanoseconds
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
+timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.statistics.oisXShifts">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">float</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ n
+ </span>
+ <span class="entry_type_visibility"> [ndk_public]</span>
+
+
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ Pixels in active array.<wbr/>
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
+A positive value is a shift from left to right in active array coordinate system.<wbr/> For
+example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
+(3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
+<p>The number of shifts must match the number of timestamps in
+<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.statistics.oisYShifts">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">float</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ n
+ </span>
+ <span class="entry_type_visibility"> [ndk_public]</span>
+
+
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ Pixels in active array.<wbr/>
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
+A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
+example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> a shift of
+(0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
+<p>The number of shifts must match the number of timestamps in
+<a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="dynamic_android.statistics.oisSamples">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>statistics.<wbr/>ois<wbr/>Samples
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">float</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ n
+ </span>
+ <span class="entry_type_visibility"> [java_public as oisSample]</span>
+
+ <span class="entry_type_synthetic">[synthetic] </span>
+
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>An array of OIS samples.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
</td>
<td class="entry_tags">
- <ul class="entry_tags">
- <li><a href="#tag_RAW">RAW</a></li>
- </ul>
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
- <p>When set to ON,<wbr/>
-<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
-the output result metadata.<wbr/></p>
-<p>ON is always supported on devices with the RAW capability.<wbr/></p>
+ <td class="entry_details" colspan="6">
+ <p>Each OIS sample contains the timestamp and the amount of shifts in x and y direction,<wbr/>
+in pixels,<wbr/> of the OIS sample.<wbr/></p>
+<p>A positive value for a shift in x direction is a shift from left to right in active array
+coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
+coordinates,<wbr/> a shift of (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
+<p>A positive value for a shift in y direction is a shift from top to bottom in active array
+coordinate system.<wbr/> For example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array
+coordinates,<wbr/> a shift of (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
+ <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Each channel's curve is defined by an array of control points:</p>
<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
[ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For good quality of mapping,<wbr/> at least 128 control points are
preferred.<wbr/></p>
<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
channels respectively.<wbr/> The following example uses the red channel as an
example.<wbr/> The same logic applies to green and blue channel.<wbr/>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
curveBlue entries.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">CONTRAST_CURVE</span>
+ <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
<p>All color enhancement and tonemapping must be disabled,<wbr/> except
sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
reducing frame rate compared to raw sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">GAMMA_VALUE</span>
+ <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
tonemapping.<wbr/></p>
<p>All color enhancement and tonemapping must be disabled,<wbr/> except
<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PRESET_CURVE</span>
+ <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
<p>All color enhancement and tonemapping must be disabled,<wbr/> except
<p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When switching to an application-defined contrast curve by setting
<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The tonemap curve will be defined the following formula:
* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">SRGB</span>
+ <span class="entry_type_enum_name">SRGB (v3.2)</span>
<span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
</li>
<li>
- <span class="entry_type_enum_name">REC709</span>
+ <span class="entry_type_enum_name">REC709 (v3.2)</span>
<span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The tonemap curve will be defined by specified standard.<wbr/></p>
<p>sRGB (approximated by 16 control points):</p>
<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If the actual number of points provided by the application (in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>*) is
less than this maximum,<wbr/> the camera device will resample the curve to its internal
representation,<wbr/> using linear interpolation.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
at least one of below mode combinations:</p>
<ul>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
That is,<wbr/> if the highest quality implementation on the camera device does not slow down
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Each channel's curve is defined by an array of control points:</p>
<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
[ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For good quality of mapping,<wbr/> at least 128 control points are
preferred.<wbr/></p>
<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
channels respectively.<wbr/> The following example uses the red channel as an
example.<wbr/> The same logic applies to green and blue channel.<wbr/>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
curveBlue entries.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">CONTRAST_CURVE</span>
+ <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
<p>All color enhancement and tonemapping must be disabled,<wbr/> except
sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FAST</span>
+ <span class="entry_type_enum_name">FAST (v3.2)</span>
<span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
reducing frame rate compared to raw sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">HIGH_QUALITY</span>
+ <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
<span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">GAMMA_VALUE</span>
+ <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
tonemapping.<wbr/></p>
<p>All color enhancement and tonemapping must be disabled,<wbr/> except
<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">PRESET_CURVE</span>
+ <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
<span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
<p>All color enhancement and tonemapping must be disabled,<wbr/> except
<p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When switching to an application-defined contrast curve by setting
<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The tonemap curve will be defined the following formula:
* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">SRGB</span>
+ <span class="entry_type_enum_name">SRGB (v3.2)</span>
<span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
</li>
<li>
- <span class="entry_type_enum_name">REC709</span>
+ <span class="entry_type_enum_name">REC709 (v3.2)</span>
<span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The tonemap curve will be defined by specified standard.<wbr/></p>
<p>sRGB (approximated by 16 control points):</p>
<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_led" class="section">led</td></tr>
+ <tr><td colspan="7" id="section_led" class="section">led</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">TRANSMIT</span>
+ <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
<span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used.<wbr/></p></span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_info" class="section">info</td></tr>
+ <tr><td colspan="7" id="section_info" class="section">info</td></tr>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">LIMITED</span>
+ <span class="entry_type_enum_name">LIMITED (v3.2)</span>
<span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
better.<wbr/></p>
<p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">FULL</span>
+ <span class="entry_type_enum_name">FULL (v3.2)</span>
<span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
<p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">LEGACY</span>
+ <span class="entry_type_enum_name">LEGACY (v3.2)</span>
<span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
-<p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a>
-documentation are supported.<wbr/></p>
+<p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are supported.<wbr/></p>
<p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
enable the flash.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">3</span>
+ <span class="entry_type_enum_name">3 (v3.2)</span>
<span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
FULL-level capabilities.<wbr/></p>
<p>The stream configurations listed in the <code>LEVEL_<wbr/>3</code>,<wbr/> <code>RAW</code>,<wbr/> <code>FULL</code>,<wbr/> <code>LEGACY</code> and
-<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a>
-documentation are guaranteed to be supported.<wbr/></p>
+<code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
<p>The following additional capabilities are guaranteed to be supported:</p>
<ul>
<li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
<code>RAW</code>)</li>
</ul></span>
</li>
+ <li>
+ <span class="entry_type_enum_name">EXTERNAL (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>This camera device is backed by an external camera connected to this Android device.<wbr/></p>
+<p>The device has capability identical to a LIMITED level device,<wbr/> with the following
+exceptions:</p>
+<ul>
+<li>The device may not report lens/<wbr/>sensor related information such as<ul>
+<li><a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a></li>
+<li><a href="#static_android.lens.info.hyperfocalDistance">android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance</a></li>
+<li><a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a></li>
+<li><a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a></li>
+<li><a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a></li>
+<li><a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a></li>
+<li><a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a></li>
+</ul>
+</li>
+<li>The device will report 0 for <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a></li>
+<li>The device has less guarantee on stable framerate,<wbr/> as the framerate partly depends
+ on the external camera being used.<wbr/></li>
+</ul></span>
+ </li>
</ul>
</td> <!-- entry_type -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The supported hardware level is a high-level description of the camera device's
capabilities,<wbr/> summarizing several capabilities into one field.<wbr/> Each level adds additional
features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
<p>See the individual level enums for full descriptions of the supported capabilities.<wbr/> The
<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
-ranges defined in individual <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> entries.<wbr/></p>
+ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
<p>Some features are not part of any particular hardware level or capability and must be
queried separately.<wbr/> These include:</p>
<ul>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
- <p>The camera 3 HAL device can implement one of three possible operational modes; LIMITED,<wbr/>
+ <td class="entry_details" colspan="6">
+ <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
<p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
mode has hardware requirements roughly in line with those for a camera HAL device v1
superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
-the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on HALv1 devices,<wbr/> and is implemented
-by the camera framework code.<wbr/></p>
+the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
+implemented by the camera framework code.<wbr/></p>
+<p>EXTERNAL level devices have lower peformance bar in CTS since the peformance might depend
+on the external camera being used and is not fully controlled by the device manufacturer.<wbr/>
+The ITS test suite is exempted for the same reason.<wbr/></p>
+ </td>
+ </tr>
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="static_android.info.version">
+ <td class="entry_name
+ " rowspan="5">
+ android.<wbr/>info.<wbr/>version
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">byte</span>
+
+ <span class="entry_type_visibility"> [public as string]</span>
+
+
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>A short string for manufacturer version information about the camera device,<wbr/> such as
+ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>This can be used in <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_IMAGE_DESCRIPTION">TAG_<wbr/>IMAGE_<wbr/>DESCRIPTION</a>
+in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
+device.<wbr/></p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
+whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
+It must not exceed 256 characters.<wbr/></p>
+ </td>
+ </tr>
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
+ <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_HAL2">HAL2</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
compensation will not change until the lock is set to
<code>false</code> (OFF).<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If for some reason black level locking is no longer possible
(for example,<wbr/> the analog gain has changed,<wbr/> which forces
black level offsets to be recalculated),<wbr/> then the HAL must
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OFF</span>
+ <span class="entry_type_enum_name">OFF (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">ON</span>
+ <span class="entry_type_enum_name">ON (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_HAL2">HAL2</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Whether the black level offset was locked for this frame.<wbr/> Should be
ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
a change in other capture settings forced the camera device to
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If for some reason black level locking is no longer possible
(for example,<wbr/> the analog gain has changed,<wbr/> which forces
black level offsets to be recalculated),<wbr/> then the HAL must
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
+ <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">CONVERGING</span>
+ <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
<span class="entry_type_enum_value">-1</span>
<span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
<p>Synchronization is in progress,<wbr/> and reading metadata from this
request settings remain constant).<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">UNKNOWN</span>
+ <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
<span class="entry_type_enum_value">-2</span>
<span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
<p>The result may have already converged,<wbr/> or it may be in
<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>When a request is submitted to the camera device,<wbr/> there is usually a
delay of several frames before the controls get applied.<wbr/> A camera
device may either choose to account for this delay by implementing a
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
is also UNKNOWN.<wbr/></p>
<p>FULL capability devices should simply set this value to the
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
+ <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
<span class="entry_type_enum_value">0</span>
<span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
<p>Changing controls over multiple requests one after another will
<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
</li>
<li>
- <span class="entry_type_enum_name">UNKNOWN</span>
+ <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
<span class="entry_type_enum_value">-1</span>
<span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
of the past requests applied to the camera settings.<wbr/></p>
<p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This defines the maximum distance (in number of metadata results),<wbr/>
between the frame number of the request that has new controls to apply
and the frame number of the result that has all the controls applied.<wbr/></p>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">HAL Implementation Details</th>
+ <th class="th_details" colspan="6">HAL Implementation Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>For example if maxLatency was 2,<wbr/></p>
<pre><code>initial request = X (repeating)
request1 = X
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
+ <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
- <tr><td colspan="6" class="kind">controls</td></tr>
+ <tr><td colspan="7" class="kind">controls</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>>= 1.<wbr/>0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_REPROC">REPROC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">dynamic</td></tr>
+ <tr><td colspan="7" class="kind">dynamic</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p>>= 1.<wbr/>0</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_REPROC">REPROC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<!-- end of kind -->
</tbody>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<p><= 4</p>
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_REPROC">REPROC</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>The key describes the maximal interference that one reprocess (input) request
can introduce to the camera simultaneous streaming of regular (output) capture
requests,<wbr/> including repeating requests.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</tbody>
<!-- end of section -->
- <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
+ <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
- <tr><td colspan="6" class="kind">static</td></tr>
+ <tr><td colspan="7" class="kind">static</td></tr>
<thead class="entries_header">
<tr>
<th class="th_description">Description</th>
<th class="th_units">Units</th>
<th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
<th class="th_tags">Tags</th>
</tr>
</thead>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If a camera device supports outputting depth range data in the form of a depth point
cloud (<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a>),<wbr/> this is the maximum
number of points an output buffer may contain.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">OUTPUT</span>
+ <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">INPUT</span>
+ <span class="entry_type_enum_name">INPUT (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>These are output stream configurations for use with
dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>This should correspond to the frame duration when only that
stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
set to either OFF or FAST.<wbr/></p>
<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
calculating the max frame rate.<wbr/></p>
-<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
</td>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_DEPTH">DEPTH</a></li>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>A stall duration is how much extra time would get added
to the normal minimum frame duration for a repeating request
that has streams with non-zero stall.<wbr/></p>
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
<ul class="entry_type_enum">
<li>
- <span class="entry_type_enum_name">FALSE</span>
+ <span class="entry_type_enum_name">FALSE (v3.2)</span>
</li>
<li>
- <span class="entry_type_enum_name">TRUE</span>
+ <span class="entry_type_enum_name">TRUE (v3.2)</span>
</li>
</ul>
<td class="entry_range">
</td>
+ <td class="entry_hal_version">
+ <p>3.<wbr/>2</p>
+ </td>
+
<td class="entry_tags">
</td>
</tr>
<tr class="entries_header">
- <th class="th_details" colspan="5">Details</th>
+ <th class="th_details" colspan="6">Details</th>
</tr>
<tr class="entry_cont">
- <td class="entry_details" colspan="5">
+ <td class="entry_details" colspan="6">
<p>If TRUE,<wbr/> including both depth and color outputs in a single
capture request is not supported.<wbr/> An application must interleave color
and depth requests.<wbr/> If FALSE,<wbr/> a single request can target both types
</tr>
- <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+
+ <!-- end of kind -->
+ </tbody>
+
+ <!-- end of section -->
+ <tr><td colspan="7" id="section_logicalMultiCamera" class="section">logicalMultiCamera</td></tr>
+
+
+ <tr><td colspan="7" class="kind">static</td></tr>
+
+ <thead class="entries_header">
+ <tr>
+ <th class="th_name">Property Name</th>
+ <th class="th_type">Type</th>
+ <th class="th_description">Description</th>
+ <th class="th_units">Units</th>
+ <th class="th_range">Range</th>
+ <th class="th_hal_version">Initial HIDL HAL version</th>
+ <th class="th_tags">Tags</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+
+
+
+
+
+
+
+
+
+ <tr class="entry" id="static_android.logicalMultiCamera.physicalIds">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>physical<wbr/>Ids
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">byte</span>
+ <span class="entry_type_container">x</span>
+
+ <span class="entry_type_array">
+ n
+ </span>
+ <span class="entry_type_visibility"> [hidden]</span>
+
+
+ <span class="entry_type_hwlevel">[limited] </span>
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>String containing the ids of the underlying physical cameras.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ UTF-8 null-terminated string
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ <ul class="entry_tags">
+ <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
+ </ul>
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>For a logical camera,<wbr/> this is concatenation of all underlying physical camera ids.<wbr/>
+The null terminator for physical camera id must be preserved so that the whole string
+can be tokenized using '\0' to generate list of physical camera ids.<wbr/></p>
+<p>For example,<wbr/> if the physical camera ids of the logical camera are "2" and "3",<wbr/> the
+value of this tag will be ['2',<wbr/> '\0',<wbr/> '3',<wbr/> '\0'].<wbr/></p>
+<p>The number of physical camera ids must be no less than 2.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
+ <!-- end of entry -->
+
+
+ <tr class="entry" id="static_android.logicalMultiCamera.sensorSyncType">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>logical<wbr/>Multi<wbr/>Camera.<wbr/>sensor<wbr/>Sync<wbr/>Type
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name entry_type_name_enum">byte</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+
+ <span class="entry_type_hwlevel">[limited] </span>
+
+
+
+ <ul class="entry_type_enum">
+ <li>
+ <span class="entry_type_enum_name">APPROXIMATE (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>A software mechanism is used to synchronize between the physical cameras.<wbr/> As a result,<wbr/>
+the timestamp of an image from a physical stream is only an approximation of the
+image sensor start-of-exposure time.<wbr/></p></span>
+ </li>
+ <li>
+ <span class="entry_type_enum_name">CALIBRATED (v3.3)</span>
+ <span class="entry_type_enum_notes"><p>The camera device supports frame timestamp synchronization at the hardware level,<wbr/>
+and the timestamp of a physical stream image accurately reflects its
+start-of-exposure time.<wbr/></p></span>
+ </li>
+ </ul>
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>The accuracy of frame timestamp synchronization between physical cameras</p>
+ </td>
+
+ <td class="entry_units">
+ </td>
+
+ <td class="entry_range">
+ </td>
+
+ <td class="entry_hal_version">
+ <p>3.<wbr/>3</p>
+ </td>
+
+ <td class="entry_tags">
+ <ul class="entry_tags">
+ <li><a href="#tag_LOGICALCAMERA">LOGICALCAMERA</a></li>
+ </ul>
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="6">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="6">
+ <p>The accuracy of the frame timestamp synchronization determines the physical cameras'
+ability to start exposure at the same time.<wbr/> If the sensorSyncType is CALIBRATED,<wbr/>
+the physical camera sensors usually run in master-slave mode so that their shutter
+time is synchronized.<wbr/> For APPROXIMATE sensorSyncType,<wbr/> the camera sensors usually run in
+master-master mode,<wbr/> and there could be offset between their start of exposure.<wbr/></p>
+<p>In both cases,<wbr/> all images generated for a particular capture request still carry the same
+timestamps,<wbr/> so that they can be used to look up the matching frame number and
+onCaptureStarted callback.<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
<!-- end of entry -->
</ul>
</li> <!-- tag_RAW -->
<li id="tag_HAL2">HAL2 -
- Entry is only used by camera device HAL 2.x
+ Entry is only used by camera device legacy HAL 2.x
<ul class="tags_entries">
<li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
<li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
</ul>
</li> <!-- tag_REPROC -->
+ <li id="tag_LOGICALCAMERA">LOGICALCAMERA -
+ Entry is required for logical multi-camera capability.
+
+ <ul class="tags_entries">
+ <li><a href="#static_android.logicalMultiCamera.physicalIds">android.logicalMultiCamera.physicalIds</a> (static)</li>
+ <li><a href="#static_android.logicalMultiCamera.sensorSyncType">android.logicalMultiCamera.sensorSyncType</a> (static)</li>
+ </ul>
+ </li> <!-- tag_LOGICALCAMERA -->
<li id="tag_FUTURE">FUTURE -
Entry is under-specified and is not required for now. This is for book-keeping purpose,
do not implement or use it, it may be revised for future.