camera3_stream 结构参考

camera3_stream 结构参考

#include < camera3.h >

数据字段

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

详细说明

camera3_stream_t:

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

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

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

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

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

在文件camera3.h的第1523行定义。

现场文件

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.h的第1648行定义。

整数格式

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

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

<= CAMERA_DEVICE_API_VERSION_3_1:

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

>= CAMERA_DEVICE_API_VERSION_3_2:

框架不会调用 register_stream_buffers(),因此 HAL 应该完全基于配置的流的大小、使用标志和格式来配置 ISP 和传感器管道。

在文件camera3.h的第1565行定义。

uint32_t 高度

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

在文件camera3.h的第1542行定义。

uint32_t 最大缓冲区

HAL 设备可能需要同时出队的最大缓冲区数。 HAL 设备可能没有比此值更多的来自此流的正在运行的缓冲区。

在文件camera3.h的第1608行定义。

无效*隐私

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

在文件camera3.h的第1614行定义。

无效*保留[7]

在文件camera3.h的第1677行定义。

整数旋转

流所需的输出旋转,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.h的第1674行定义。

整数流类型

流的类型,camera3_stream_type_t 值之一。

在文件camera3.h的第1532行定义。

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() 传递时, this 的初始值是消费者的使用标志。 HAL 可以使用这些消费者标志来决定流配置。对于 stream_type INPUT,当通过 configure_streams() 传递时,其初始值为 0。对于通过 configure_streams() 传递的所有流,HAL 必须使用其使用标志覆盖此字段。

在文件camera3.h的第1601行定义。

uint32_t 宽度

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

在文件camera3.h的第1537行定义。


此结构的文档是从以下文件生成的: