camera3_stream结构参考

camera3_stream结构参考

#include < camera3.h >

数据字段

整数流类型
uint32_t宽度
uint32_t高度
整数格式
uint32_t用法
uint32_t最大缓冲区数
空白 *私人
android_dataspace_t数据空间
整数回转
空白 *保留[7]

详细说明

相机3_stream_t:

单个相机输入或输出流的句柄。流由框架通过其缓冲区分辨率和格式定义,此外还由具有 gralloc 使用标志和最大运行中缓冲区计数的 HAL 定义。

流结构由框架拥有,但通过configure_streams()传递到HAL的指向camera3_stream的指针一直有效,直到第一个后续configure_streams()调用结束(包含该camera3_stream作为参数),或者直到close() 调用。

一旦camera3_stream被传递到configure_streams()中,所有camera3_stream框架控制的成员都是不可变的。 HAL 只能在 configure_streams() 调用期间更改 HAL 控制的参数,私有指针的内容除外。

如果configure_streams()调用返回非致命错误,则所有活动流仍然有效,就像configure_streams()未被调用一样。

流的端点对于相机 HAL 设备不可见。在 DEVICE_API_VERSION_3_1 中,这已更改为在相机作为生产者的流上共享消费者使用标志(输出和双向流类型),请参阅下面的使用字段。

文件camera3.h1523行的定义。

现场文档

android_dataspace_t 数据空间

描述缓冲区内容的字段。格式和缓冲区维度定义了流缓冲区的内存布局和结构,而数据空间定义了缓冲区内数据的含义。

对于大多数格式,dataSpace 定义图像数据的颜色空间。此外,对于某些格式,dataSpace 指示是否请求基于图像或基于深度的数据。有关格式的详细信息以及每种格式的有效 dataSpace 值,请参阅 system/core/include/system/graphics.h。

版本信息:

< CAMERA_DEVICE_API_VERSION_3_3:

未定义且不应访问。 dataSpace 应假定为 HAL_DATASPACE_UNKNOWN,并且应根据使用标志和格式确定适当的颜色空间等。

= CAMERA_DEVICE_API_VERSION_3_3:

始终由相机服务设置。 HAL 必须使用此数据空间将流配置为正确的色彩空间,或者在支持的颜色和深度输出之间进行选择。数据空间值是graphics.h中的旧定义

>= CAMERA_DEVICE_API_VERSION_3_4:

始终由相机服务设置。 HAL 必须使用此数据空间将流配置为正确的色彩空间,或者在支持的颜色和深度输出之间进行选择。数据空间值是使用graphics.h中的V0数据空间定义设置的

文件camera3.h1648行的定义。

整数格式

该流中缓冲区的像素格式。 Format 是来自 system/core/include/system/graphics.h 中的 HAL_PIXEL_FORMAT_* 列表或来自设备特定标头的值。

如果使用 HAL_PIXEL_FORMAT_IMPLMENTATION_DEFINED,则平台 gralloc 模块将根据相机设备和流的另一个端点提供的使用标志来选择格式。

<= CAMERA_DEVICE_API_VERSION_3_1:

如有必要,相机 HAL 设备必须检查在后续的 register_stream_buffers() 调用中传递给它的缓冲区,以获取特定于实现的格式详细信息。

>= CAMERA_DEVICE_API_VERSION_3_2:

框架不会调用 register_stream_buffers(),因此 HAL 应纯粹根据已配置流的大小、使用标志和格式来配置 ISP 和传感器管道。

文件camera3.h1565行的定义。

uint32_t 高度

该流中缓冲区的高度(以像素为单位)

文件camera3.h1542行的定义。

uint32_t 最大缓冲区

HAL 设备可能需要同时出队的最大缓冲区数。 HAL 设备从此流中传输的缓冲区数量不得超过该值。

文件camera3.h1608行的定义。

无效* 私有

流的 HAL 私有信息的句柄。不会被框架代码检查。

文件camera3.h1614行的定义。

无效* 保留[7]

文件camera3.h1677行的定义。

整数旋转

流所需的输出旋转,camera3_stream_rotation_t 值之一。 HAL 必须对此进行检查以及流的宽度和高度。例如,如果旋转为 90 度,流宽度和高度分别为 720 和 1280,则相机服务将提供大小为 720x1280 的缓冲区,HAL 应捕获 1280x720 图像并将图像逆时针旋转 90 度。当输入流类型时,旋转字段是无操作的。相机 HAL 必须忽略输入流的旋转字段。

<= CAMERA_DEVICE_API_VERSION_3_2:

未定义且不得访问。 HAL 不得对输出图像应用任何旋转。

>= CAMERA_DEVICE_API_VERSION_3_3:

始终由相机服务设置。 HAL 必须在流配置期间检查此字段,如果 HAL 无法执行此类轮换,则返回 -EINVAL。 HAL 必须始终支持 CAMERA3_STREAM_ROTATION_0,因此,如果所有流的旋转字段为 CAMERA3_STREAM_ROTATION_0,则 configure_streams() 调用一定不会因不支持的旋转而失败。

文件camera3.h1674行的定义。

int 流类型

流的类型,camera3_stream_type_t 值之一。

文件camera3.h1532行的定义。

uint32_t 用法

根据 HAL 的需要,该流的 gralloc 使用标志。使用标志在gralloc.h (GRALLOC_USAGE_*) 或设备特定标头中定义。

对于输出流,这些是 HAL 的生产者使用标志。对于输入流,这些是 HAL 的使用者使用标志。来自生产者和消费者的使用标志将组合在一起,然后传递到平台 gralloc HAL 模块,以便为每个流分配 gralloc 缓冲区。

版本信息:

== CAMERA_DEVICE_API_VERSION_3_0:

通过configure_streams()传递时不保证初始值。 HAL 不能使用该字段作为输入,并且必须使用其使用标志重写该字段。

>= CAMERA_DEVICE_API_VERSION_3_1:

对于stream_type OUTPUT和BIDIRECTIONAL,当通过configure_streams()传递时,其初始值是消费者的使用标志。 HAL 可以使用这些消费者标志来决定流配置。对于stream_type INPUT,当通过configure_streams()传递时,其初始值为0。对于通过configure_streams()传递的所有流,HAL必须使用其使用标志覆盖该字段。

文件camera3.h1601行的定义。

uint32_t 宽度

该流中缓冲区的宽度(以像素为单位)

文件camera3.h1537行的定义。


该结构的文档是从以下文件生成的:
  • 硬件/libhardware/include/hardware/camera3.h