aboutsummaryrefslogtreecommitdiff
path: root/zh-cn/devices/camera/camera3_requests_methods.html
diff options
context:
space:
mode:
Diffstat (limited to 'zh-cn/devices/camera/camera3_requests_methods.html')
-rw-r--r--zh-cn/devices/camera/camera3_requests_methods.html46
1 files changed, 8 insertions, 38 deletions
diff --git a/zh-cn/devices/camera/camera3_requests_methods.html b/zh-cn/devices/camera/camera3_requests_methods.html
index 73010305..9ad8ef3f 100644
--- a/zh-cn/devices/camera/camera3_requests_methods.html
+++ b/zh-cn/devices/camera/camera3_requests_methods.html
@@ -20,44 +20,14 @@
limitations under the License.
-->
-<h2 id="request-creation">创建和提交请求</h2>
-<h3 id="default-settings">construct_default_request_settings</h3>
-<p>为标准相机用例创建拍照设置。设备必须返回一个设置缓冲区,并且该缓冲区已配置为满足所请求用例(必须是 <code>CAMERA3_TEMPLATE_*</code> 枚举之一)的需求。所有请求控制字段都必须包括在内。</p>
-<p>HAL 保留对该结构的所有权,但指向该结构的指针在设备关闭之前必须一直保持有效。该调用返回缓冲区后,框架和 HAL 便不能再修改相应缓冲区。对于针对同一模板或针对其他模板的后续调用,可以返回同一个缓冲区。</p>
-<h4><strong>返回值</strong></h4>
-<ul>
- <li>有效的元数据:在成功创建默认设置缓冲区时返回。</li>
- <li><code>NULL</code>:在发生严重错误时返回。如果返回了该值,框架将只能成功调用 <code>close()</code> 方法。</li>
-</ul>
-<h3 id="process-request">process_capture_request</h3>
-<p>向 HAL 发送新的拍照请求。在准备好可以接受下一个要处理的请求之前,HAL 不会从该调用返回。框架一次只会对 <code>process_capture_request()</code> 进行一次调用,并且调用将全部来自同一个线程。一旦有新的请求并且其关联的缓冲区处于可用状态,框架会立即对 <code>process_capture_request()</code> 进行下一次调用。在正常预览情况下,这意味着框架几乎会立即再次调用该函数。</p>
-<p>实际的请求处理是异步进行的,拍照结果由 HAL 通过 <code>process_capture_result()</code> 调用返回。该调用要求结果元数据可用,但输出缓冲区可能只会提供要等待的同步 Fence。如果有多个请求,系统会立即对其进行快速处理,以保持全输出帧速率。</p>
-<p>框架保留对请求结构的所有权。系统只能保证请求结构在该调用期间有效。对于需要保留以用于拍照处理的信息,HAL 设备必须为其创建多个副本。HAL 负责等待并关闭缓冲区的 Fence,并将缓冲区句柄返回给框架。</p>
-<p>如果 <code>input_buffer</code> 不是 <code>NULL</code>,则 HAL 必须将输入缓冲区释放同步 Fence 的文件描述符写入到 <code>input_buffer</code>-&gt;<code>release_fence</code>。如果 HAL 为输入缓冲区释放同步 Fence 返回 <code>-1</code>,则框架可以立即重新使用输入缓冲区。否则,框架将等待同步 Fence,然后再重新填充和重新使用输入缓冲区。</p>
-<h4><strong>返回值</strong></h4>
-<ul>
- <li><code>0</code>:在成功开始处理拍照请求时返回。</li>
- <li><code>-EINVAL</code>:在输入格式不正确(不允许各项设置设为 <code>NULL</code> 但却被设为了 NULL、没有输出缓冲区,等等)且无法开始处理拍照时返回。请求处理过程中发生的故障应通过调用 <code>camera3_callback_ops_t.notify()</code> 来处理。如果出现此错误,框架仍将负责流缓冲区的 Fence 和缓冲区句柄;HAL 不应关闭 Fence 或通过 <code>process_capture_result</code> 返回这些缓冲区。</li>
- <li><code>-ENODEV</code>:在相机设备遇到严重错误时返回。如果返回了此错误,框架将只能成功调用 <code>close()</code> 方法。</li>
-</ul>
+<h2 id="default-settings">默认请求</h2>
+<p>要构建默认捕获请求,请调用 <a href="/reference/hidl/android/hardware/camera/device/3.2/ICameraDeviceSession#constructdefaultrequestsettings">ICameraDeviceSession::constructDefaultRequestSettings()</a>。</p>
+<h2 id="request-submission">提交请求</h2>
+<p>要提交相机捕获请求,请调用 <a href="/reference/hidl/android/hardware/camera/device/3.2/ICameraDeviceSession#processcapturerequest">ICameraDeviceSession::processCaptureRequest()</a>。</p>
<h2 id="misc-methods">其他方法</h2>
-<h3 id="get-metadata">get_metadata_vendor_tag_ops</h3>
-<p>获取方法以查询供应商扩展元数据标签信息。HAL 应填充所有供应商标签操作方法,或者使操作保持不变(如果未定义供应商标签)。可以在以下位置找到 <code>vendor_tag_query_ops_t</code> 的定义:<code>system/media/camera/include/system/camera_metadata.h</code>。</p>
-<h3 id="dump">dump</h3>
-<p>打印出相机设备的调试状态。当相机服务收到调试转储请求时,框架将调用该方法。在使用 <code>dumpsys</code> 工具或捕获错误报告时,会发生这种情况。传入的文件描述符可用于编写调试文本(使用 <code>dprintf()</code> 或 <code>write()</code>)。该文本应仅采用 ASCII 编码。</p>
-<h3 id="flush">flush</h3>
-<p>在给定设备上的管道中,刷新当前正在进行的所有拍照和所有缓冲区。框架将使用该方法来尽快转储所有状态,以便为调用 <code>configure_streams()</code> 做准备。</p>
-<p>由于无需成功返回缓冲区,因此可以返回在 <code>flush()</code> 时占用的每个缓冲区(不管是否已成功填充),并显示 <code>CAMERA3_BUFFER_STATUS_ERROR</code>。请注意,HAL 仍可在此调用期间返回有效的 (<code>STATUS_OK</code>) 缓冲区,但前提是已成功填充这些缓冲区。</p>
-<p>目前在 HAL 中的所有请求都应被尽快返回。未在处理的请求应立即返回错误。应停止所有可中断的硬件块,并且应等待所有不可中断的块。</p>
-<p>仅当 HAL 中不再有待处理的缓冲区或请求时,<code>flush()</code> 才应返回。框架可能会调用 <code>configure_streams</code>(因为 HAL 状态现在为已停顿),也可能会发出新的请求。</p>
-<p><code>flush()</code> 调用所用时间不应超过 100 毫秒,且最长不得超过 1 秒。</p>
-<h4><strong>版本信息</strong></h4>
-<p>仅当设备版本不低于 <code>CAMERA_DEVICE_API_VERSION_3_1</code> 时,才能获得版本信息。</p>
-<h4><strong>返回值</strong></h4>
-<ul>
- <li><code>0</code>:在成功刷新相机 HAL 时返回。</li>
- <li><code>-EINVAL</code>:在输入格式不正确(设备无效)时返回。</li>
- <li><code>-ENODEV</code>:在相机设备遇到严重错误时返回。如果返回了此错误,框架将只能成功调用 <code>close()</code> 方法。</li>
-</ul>
+<h3 id="request-result-message-queues">请求/结果消息队列</h3>
+<p>相机捕获结果和请求 IPC 开销可通过<a href="/devices/architecture/hidl/fmq">快速消息队列</a>进一步优化。调用 <a href="/reference/hidl/android/hardware/camera/device/3.2/ICameraDeviceSession#getcapturerequestmetadataqueue">ICameraDeviceSession::getCaptureRequestMetadataQueue()</a> 和 <a href="/reference/hidl/android/hardware/camera/device/3.2/ICameraDeviceSession#getcaptureresultmetadataqueue">ICameraDeviceSession::getCaptureResultMetadataQueue()</a> 方法可查询相应的队列。</p>
+<h3 id="flush">清空</h3>
+<p>要清空所有待处理的捕获请求,请调用 <a href="/reference/hidl/android/hardware/camera/device/3.2/ICameraDeviceSession#flush">ICameraDeviceSession::flush()</a>。</p>
</body></html> \ No newline at end of file