><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
</ul>
</li>
+ <li>
+ <span class="toc_kind_header">static</span>
+ <ul class="toc_section">
+ <li
+ ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
+ </ul>
+ </li>
</ul> <!-- toc_section -->
</li>
<li>
<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 OPAQUE_<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>
+contains OPAQUE_<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>
</td>
</tr>
<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 OPAQUE_<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>
+contains OPAQUE_<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>
</td>
</tr>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
+ <li><a href="#tag_REPROC">REPROC</a></li>
</ul>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
+ <li><a href="#tag_REPROC">REPROC</a></li>
</ul>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
+ <li><a href="#tag_REPROC">REPROC</a></li>
</ul>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
+ <li><a href="#tag_REPROC">REPROC</a></li>
</ul>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
+ <li><a href="#tag_REPROC">REPROC</a></li>
</ul>
</td>
<td class="entry_tags">
<ul class="entry_tags">
<li><a href="#tag_V1">V1</a></li>
+ <li><a href="#tag_REPROC">REPROC</a></li>
</ul>
</td>
</td>
<td class="entry_tags">
+ <ul class="entry_tags">
+ <li><a href="#tag_REPROC">REPROC</a></li>
+ </ul>
</td>
</tr>
<li>The maximum available resolution for OPAQUE streams
(both input/<wbr/>output) will match the maximum available
resolution of JPEG 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 below controls are effective for reprocessing requests and
will be present in capture results,<wbr/> other controls in reprocess
requests will be ignored by the camera device.<wbr/><ul>
<li>The maximum available resolution for YUV_<wbr/>420_<wbr/>888 streams
(both input/<wbr/>output) will match the maximum available
resolution of JPEG 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 assocaited with the intermidate YUV_<wbr/>420_<wbr/>888 output buffers.<wbr/>
</td>
<td class="entry_tags">
+ <ul class="entry_tags">
+ <li><a href="#tag_REPROC">REPROC</a></li>
+ </ul>
</td>
</tr>
<td class="entry_description">
<p>This lists the maximum stall duration for each
-format/<wbr/>size combination.<wbr/></p>
+output format/<wbr/>size combination.<wbr/></p>
</td>
<td class="entry_units">
<span class="entry_type_visibility"> [public]</span>
+ <span class="entry_type_hwlevel">[limited] </span>
<td class="entry_tags">
<ul class="entry_tags">
- <li><a href="#tag_V1">V1</a></li>
+ <li><a href="#tag_REPROC">REPROC</a></li>
</ul>
</td>
<span class="entry_type_visibility"> [public]</span>
+ <span class="entry_type_hwlevel">[limited] </span>
<td class="entry_tags">
<ul class="entry_tags">
- <li><a href="#tag_V1">V1</a></li>
+ <li><a href="#tag_REPROC">REPROC</a></li>
</ul>
</td>
<!-- end of kind -->
</tbody>
+ <tr><td colspan="6" class="kind">static</td></tr>
+
+ <thead class="entries_header">
+ <tr>
+ <th class="th_name">Property Name</th>
+ <th class="th_type">Type</th>
+ <th class="th_description">Description</th>
+ <th class="th_units">Units</th>
+ <th class="th_range">Range</th>
+ <th class="th_tags">Tags</th>
+ </tr>
+ </thead>
+
+ <tbody>
+
+
+
+
+
+
+
+
+
+
+ <tr class="entry" id="static_android.reprocess.maxCaptureStall">
+ <td class="entry_name
+ " rowspan="3">
+ android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
+ </td>
+ <td class="entry_type">
+ <span class="entry_type_name">int32</span>
+
+ <span class="entry_type_visibility"> [public]</span>
+
+
+ <span class="entry_type_hwlevel">[limited] </span>
+
+
+
+
+ </td> <!-- entry_type -->
+
+ <td class="entry_description">
+ <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
+reprocess capture request.<wbr/></p>
+ </td>
+
+ <td class="entry_units">
+ Number of frames.<wbr/>
+ </td>
+
+ <td class="entry_range">
+ <p><= 4</p>
+ </td>
+
+ <td class="entry_tags">
+ <ul class="entry_tags">
+ <li><a href="#tag_REPROC">REPROC</a></li>
+ </ul>
+ </td>
+
+ </tr>
+ <tr class="entries_header">
+ <th class="th_details" colspan="5">Details</th>
+ </tr>
+ <tr class="entry_cont">
+ <td class="entry_details" colspan="5">
+ <p>The 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>
+<p>When a reprocessing capture request is submitted while a camera output repeating request
+(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
+pipeline for at least one frame duration so that the camera device is unable to process
+the following capture request in time for the next sensor start of exposure boundary.<wbr/>
+When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
+duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
+glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
+the worst-case number of frame stall introduced by one reprocess request with any kind of
+formats/<wbr/>sizes combination.<wbr/></p>
+<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
+ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
+<p>This key is supported if the camera device supports OPAQUE or YUV reprocessing (
+i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains OPAQUE_<wbr/>REPROCESSING or
+YUV_<wbr/>REPROCESSING).<wbr/></p>
+ </td>
+ </tr>
+
+
+ <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
+ <!-- end of entry -->
+
+
+
+ <!-- end of kind -->
+ </tbody>
<!-- end of section -->
<tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
<td class="entry_description">
<p>This lists the maximum stall duration for each
-format/<wbr/>size combination for depth streams.<wbr/></p>
+output format/<wbr/>size combination for depth streams.<wbr/></p>
</td>
<td class="entry_units">
<li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
<li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
<li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
- <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
<li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
<li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
<li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
<li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
</ul>
</li> <!-- tag_DEPTH -->
+ <li id="tag_REPROC">REPROC -
+ Entry is required for the YUV or Opaque reprocessing capability.
+
+ <ul class="tags_entries">
+ <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
+ <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
+ <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
+ <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
+ <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
+ <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
+ <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
+ <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
+ <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
+ <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
+ </ul>
+ </li> <!-- tag_REPROC -->
<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.
<tag id="DEPTH">
Entry is required for the depth capability.
</tag>
+ <tag id="REPROC">
+ Entry is required for the YUV or Opaque reprocessing capability.
+ </tag>
<tag id="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.
`android.control.mode != OFF` and any 3A routine is active.
ZERO_SHUTTER_LAG will be supported if android.request.availableCapabilities
- contains OPAQUE_REPROCESSING. MANUAL will be supported if android.request.availableCapabilities
- contains MANUAL_SENSOR. Other intent values are always supported.
+ contains OPAQUE_REPROCESSING or YUV_REPROCESSING. MANUAL will be supported if
+ android.request.availableCapabilities contains MANUAL_SENSOR. Other intent values are
+ always supported.
</details>
<tag id="BC" />
</entry>
quality images.
</hal_details>
<tag id="V1" />
+ <tag id="REPROC" />
</entry>
<entry name="strength" type="byte">
<description>Control the amount of edge enhancement
capture rate, then FAST and HIGH_QUALITY will generate the same output.
</hal_details>
<tag id="V1" />
+ <tag id="REPROC" />
</entry>
</static>
<dynamic>
<clone entry="android.edge.mode" kind="controls">
<tag id="V1" />
+ <tag id="REPROC" />
</clone>
</dynamic>
</section>
images.
</hal_details>
<tag id="V1" />
+ <tag id="REPROC" />
</entry>
<entry name="strength" type="byte">
<description>Control the amount of noise reduction
capture rate, then FAST and HIGH_QUALITY will generate the same output.
</hal_details>
<tag id="V1" />
+ <tag id="REPROC" />
</entry>
</static>
<dynamic>
<clone entry="android.noiseReduction.mode" kind="controls">
<tag id="V1" />
+ <tag id="REPROC" />
</clone>
</dynamic>
</section>
For the reprocessing flow and controls, see
hardware/libhardware/include/hardware/camera3.h Section 10 for more details.
</hal_details>
+ <tag id="REPROC" />
</entry>
</static>
<dynamic>
* The maximum available resolution for OPAQUE streams
(both input/output) will match the maximum available
resolution of JPEG streams.
+ * Static metadata android.reprocess.maxCaptureStall.
* Only below controls are effective for reprocessing requests and
will be present in capture results, other controls in reprocess
requests will be ignored by the camera device.
* The maximum available resolution for YUV_420_888 streams
(both input/output) will match the maximum available
resolution of JPEG streams.
+ * Static metadata android.reprocess.maxCaptureStall.
* Only the below controls are effective for reprocessing requests and will be
present in capture results. The reprocess requests are from the original capture
results that are assocaited with the intermidate YUV_420_888 output buffers.
combinations listed for that capability. It can optionally support
additional formats if it so chooses.
</hal_details>
+ <tag id="REPROC" />
</entry>
<entry name="availableStreamConfigurations" type="int32" visibility="hidden"
enum="true" container="array"
<size>n</size>
</array>
<description>This lists the maximum stall duration for each
- format/size combination.
+ output format/size combination.
</description>
<units>(format, width, height, ns) x n</units>
<details>
</section>
<section name="reprocess">
<controls>
- <entry name="effectiveExposureFactor" type="float" visibility="public">
+ <entry name="effectiveExposureFactor" type="float" visibility="public" hwlevel="limited">
<description>
The amount of exposure time increase factor applied to the original output
frame by the application processing before sending for reprocessing.
Similarly, for edge enhancement reprocessing, it is only effective when
`android.edge.mode != OFF`.
</details>
- <tag id="V1" />
+ <tag id="REPROC" />
</entry>
</controls>
<dynamic>
<clone entry="android.reprocess.effectiveExposureFactor" kind="controls">
</clone>
</dynamic>
+ <static>
+ <entry name="maxCaptureStall" type="int32" visibility="public" hwlevel="limited">
+ <description>
+ The maximal camera capture pipeline stall (in unit of frame count) introduced by a
+ reprocess capture request.
+ </description>
+ <units>Number of frames.</units>
+ <range> &lt;= 4</range>
+ <details>
+ The key describes the maximal interference that one reprocess (input) request
+ can introduce to the camera simultaneous streaming of regular (output) capture
+ requests, including repeating requests.
+
+ When a reprocessing capture request is submitted while a camera output repeating request
+ (e.g. preview) is being served by the camera device, it may preempt the camera capture
+ pipeline for at least one frame duration so that the camera device is unable to process
+ the following capture request in time for the next sensor start of exposure boundary.
+ When this happens, the application may observe a capture time gap (longer than one frame
+ duration) between adjacent capture output frames, which usually exhibits as preview
+ glitch if the repeating request output targets include a preview surface. This key gives
+ the worst-case number of frame stall introduced by one reprocess request with any kind of
+ formats/sizes combination.
+
+ If this key reports 0, it means a reprocess request doesn't introduce any glitch to the
+ ongoing camera repeating request outputs, as if this reprocess request is never issued.
+
+ This key is supported if the camera device supports OPAQUE or YUV reprocessing (
+ i.e. android.request.availableCapabilities contains OPAQUE_REPROCESSING or
+ YUV_REPROCESSING).
+ </details>
+ <tag id="REPROC" />
+ </entry>
+ </static>
</section>
<section name="depth">
<static>
<size>n</size>
</array>
<description>This lists the maximum stall duration for each
- format/size combination for depth streams.
+ output format/size combination for depth streams.
</description>
<units>(format, width, height, ns) x n</units>
<details>