camera3_stream_buffer 结构体参考文档

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 设备的方式决定。

定义位于文件 camera3.h 1755 行。

字段文档

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 因错误而从未等待输入缓冲区获取栅栏,则应以与处理输出缓冲区的方式类似的方式处理同步栅栏。

定义位于文件 camera3.h 1800 行。

buffer_handle_t* buffer

缓冲区的原生句柄

定义位于文件 camera3.h 1764 行。

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 时,此缓冲区的所有权会立即转回。

定义位于文件 camera3.h 1827 行。

int status

缓冲区的当前状态,即 camera3_buffer_status_t 值之一。框架不会将处于错误状态的缓冲区传递给 HAL。如果 HAL 无法填充缓冲区,则必须在使用 process_capture_result() 将其返回给框架时将其状态设置为 CAMERA3_BUFFER_STATUS_ERROR。

定义位于文件 camera3.h 1773 行。

此缓冲区关联的流的句柄

定义位于文件 camera3.h 1759 行。


此结构体的文档是根据以下文件生成的: