camera3_stream_buffer 结构体参考文档
#include <
camera3.h
>
数据字段 |
|
camera3_stream_t * | stream |
buffer_handle_t * | 缓冲区 |
int | 状态 |
int | acquire_fence |
int | release_fence |
详细说明
camera3_stream_buffer_t:
来自 camera3 数据流的单个缓冲区。它包含指向其父级流的句柄、指向 gralloc 缓冲区本身的句柄,以及同步栅栏
缓冲区未指定是用于输入还是输出;这由其父级流类型和缓冲区传递给 HAL 设备的方式决定。
字段文档
int acquire_fence |
此缓冲区的获取同步栅栏。HAL 必须等待此栅栏 fd,然后才能尝试从此缓冲区读取或向此缓冲区写入数据。
框架可以设置为 -1,以表示无需等待此缓冲区。
当 HAL 使用 process_capture_result() 向框架返回输出缓冲区时,必须将 acquire_fence 设置为 -1。如果 HAL 因填充缓冲区时出错而从未等待 acquire_fence,则在调用 process_capture_result() 时,HAL 必须将缓冲区的 release_fence 设置为框架传递给它的 acquire_fence。这样一来,框架便可以在重复使用缓冲区之前等待栅栏。
对于输入缓冲区,HAL 不得在 process_capture_request() 调用期间更改 acquire_fence 字段。
>= CAMERA_DEVICE_API_VERSION_3_2:
当 HAL 使用 process_capture_result() 向框架返回输入缓冲区时,必须将 acquire_fence 设置为 -1。如果 HAL 因错误而从未等待输入缓冲区获取栅栏,则应以与处理输出缓冲区的方式类似的方式处理同步栅栏。
int release_fence |
此缓冲区的释放同步栅栏。HAL 在向框架返回缓冲区时必须设置此栅栏,或者写入 -1 以指示无需等待此缓冲区。
对于输出缓冲区,必须在传递给 process_capture_result() 的 output_buffers 数组中设置栅栏。
<= CAMERA_DEVICE_API_VERSION_3_1:
对于输入缓冲区,必须通过 process_capture_request() 调用设置释放栅栏。
>= CAMERA_DEVICE_API_VERSION_3_2:
对于输入缓冲区,必须在传递给 process_capture_result() 的 input_buffer 中设置栅栏。
为此缓冲区发出 release_fence 信号后,HAL 不应再尝试访问此缓冲区,因为所有权已完全转移回框架。
如果指定了 -1 的栅栏,则在调用 process_capture_result 时,此缓冲区的所有权会立即转回。
int status |
camera3_stream_t * stream |
此结构体的文档是根据以下文件生成的:
- hardware/libhardware/include/hardware/ camera3.h