Fuchsia.camera2

新增:7

协议

管理员

在 fuchsia.camera2/manager.fidl 中定义

已弃用:25 新增:7

AcknowledgeDeviceEvent

必须在上述任何事件之后调用 AcknowledgeDeviceEvent,然后系统才会发送更多事件。

请求

<EMPTY>

ConnectToStream

连接到摄像头视频传输: device_id 是指 OnDeviceAvailable 通告的特定 device_id。 constraints 包含一组针对所请求数据流的限制。Camera Manager 将尝试查找满足约束条件的视频流。如果多个数据流匹配,则系统会连接其中一个匹配的数据流。token 是指将用于通过 Stream 协议传递图片的 Sysmem 缓冲区分配。相机管理器将应用与图片格式相关的 BufferCollectionContraints,因此客户端无需应用任何 ImageFormatConstraints。 在将 token 传递给 ConnectToStream 之前,系统会假定已对其调用 Sync。 由于 constraints 可能不会指定特定格式,因此数据流中图片的初始格式会在响应中指明。除非 stream 已关闭,否则一旦给出响应,连接即被视为成功。

请求

名称类型
device_id int32
constraints StreamConstraints
token client_end:fuchsia.sysmem/BufferCollectionToken
stream server_end:Stream

响应

名称类型
format fuchsia.sysmem/ImageFormat_2

OnDeviceAvailable

在摄像头可用时通知客户端。当客户端首次连接到此协议时,系统会发送其中一些事件。 device_id 用于标识摄像头。device_id 在摄像头的整个生命周期内不应发生变化。 当相机管理器已向客户端通知其当前已知的所有设备时,last_known_camera 会设置为 true。 description 描述了摄像头的属性。

响应

名称类型
device_id int32
description DeviceInfo
last_known_camera bool

OnDeviceMuteChanged

在摄像头静音或取消静音时通知客户端。 device_id 是指之前 OnDeviceAvailable 调用的说明中的 device_id。

响应

名称类型
device_id int32
currently_muted bool

OnDeviceUnavailable

在相机不可用时通知客户端。

响应

名称类型
device_id int32

MuteControl

在 fuchsia.camera2/manager.fidl 中定义

静音

将摄像头静音。这与停止或关闭直播无关。在调用取消静音之前,静音的摄像头不会再生成任何图片。您仍然可以连接到静音摄像头的视频流,但只有在摄像头取消静音后,这些视频流才会生成画面。 device_id 是指之前 OnDeviceAvailable 调用中的 device_id。

请求

名称类型
device_id int32

响应

名称类型
status zx/Result

取消静音

请求

名称类型
device_id int32

响应

名称类型
status zx/Result

在线播放

在 fuchsia.camera2/stream.fidl 中定义

AcknowledgeFrameError

为接收帧错误提供流控制。请参阅 OnFrameAvailable 注释。

请求

<EMPTY>

GetBuffers

已弃用:25

请求

<EMPTY>

响应

名称类型
token client_end:fuchsia.sysmem/BufferCollectionToken

GetBuffers2

返回一个令牌,该令牌指向用于在数据流上输出帧的缓冲区。该令牌为 dispensable,这意味着无需将其提交到 sysmem 即可完成分配。这也意味着,对返回的令牌进行的任何 SetConstraints 调用都不能与 StreamConfig 中的限制冲突,否则尝试等待令牌上的缓冲区将失败。

新增:25

请求

<EMPTY>

响应

名称类型
token client_end:fuchsia.sysmem2/BufferCollectionToken

GetImageFormats

获取此数据流支持的图片格式。

请求

<EMPTY>

响应

名称类型
image_formats vector<fuchsia.sysmem/ImageFormat_2>:256

OnFrameAvailable

当有帧可供处理或发生错误时,由驱动程序发送给客户端。在此消息之后,客户端会将该帧视为读锁定。客户端必须调用 ReleaseFrame 来释放非错误帧的读取锁,否则消费者最终会耗尽缓冲区。 如果帧有错误,客户端必须先调用 AcknowledgeFrameError,然后才能使用错误帧调用另一个 OnFrameAvailable。

响应

名称类型
frame FrameAvailableInfo

ReleaseFrame

解锁指定的帧,允许驱动程序重复使用内存。

请求

名称类型
buffer_id uint32

SetImageFormat

更改视频流的图片格式。当客户端想要在流式传输过程中动态更改流的分辨率时,会调用此方法。

请求

名称类型
image_format_index uint32

响应

名称类型
s zx/Result

SetRegionOfInterest

数据操作 客户端使用此操作来提供感兴趣区域选择的输入。输入是新边界框的 x 和 y 坐标。 对于不支持智能取景的视频流,此操作会返回错误。

请求

名称类型
x_min float32
y_min float32
x_max float32
y_max float32

响应

名称类型
s zx/Result

开始

控制操作 开始流式传输帧。

请求

<EMPTY>

停止

停止流式传输帧。

请求

<EMPTY>

STRUCTS

FrameAvailableInfo

在 fuchsia.camera2/stream.fidl 中定义

当有帧可供处理或发生错误时,由驱动程序发送给客户端。

字段类型说明默认
frame_status FrameStatus

如果发生错误,则为非零值。

无默认应用
buffer_id uint32

缓冲区集合中缓冲区的索引。

无默认应用
metadata FrameMetadata 无默认应用

FrameRate

在 fuchsia.camera2/stream.fidl 中定义

字段类型说明默认
frames_per_sec_numerator uint32

帧速率为 frames_per_sec_numerator / frames_per_sec_denominator。

无默认应用
frames_per_sec_denominator uint32 无默认应用

枚举

DeviceType strict

类型:uint32

在 fuchsia.camera2/manager.fidl 中定义

名称值说明
1
2

FrameStatus strict

类型:uint32

在 fuchsia.camera2/stream.fidl 中定义

当帧被标记为可用时要设置的状态。

名称值说明
0
1

生成帧时出错。 与此通知对应的数据缓冲区中将没有任何数据。

2

数据缓冲区中没有可用空间,导致丢帧。

TABLES

DeviceInfo

在 fuchsia.camera2/manager.fidl 中定义

设备的身份信息。

序数字段类型说明
vendor_id uint16

来自实体设备枚举的信息:

vendor_name string:255
product_id uint16
product_name string:255
type DeviceType

设备类型信息:

FrameMetadata

在 fuchsia.camera2/stream.fidl 中定义

序数字段类型说明
timestamp int64
image_format_index uint32

|image_format_index| 引用数据流支持的可用图片格式向量中的索引。

capture_timestamp int64

从 ISP 收到用于构建此帧的缓冲区时,系统单调时钟的值。

StreamConstraints

在 fuchsia.camera2/manager.fidl 中定义

这些限制会在请求数据流时提供给相机管理器。Camera Manager 将使用这些限制条件来匹配适当的数据流。

序数字段类型说明
properties StreamProperties

一个描述数据流属性的表格。指定的任何属性都将被视为匹配数据流的要求。

format_index uint32

如果指定,系统将使用此索引创建流,作为初始格式索引。 如果未指定,系统将使用第一种流格式。

StreamProperties

在 fuchsia.camera2/stream.fidl 中定义

序数字段类型说明
stream_type CameraStreamType

这些可能是上述一种或多种数据流类型

BITS

CameraStreamType strict

类型:uint32

在 fuchsia.camera2/stream.fidl 中定义

相机堆栈提供的不同 Stream 类型。

名称值说明
1

机器学习请求 FR(全分辨率)流以及 DS(降级分辨率)流,用于具有固定分辨率的安全用例

2

这是安全视频流,可在运行时支持多种分辨率。

4
8

机器学习请求视频会议的 DS 流,该流具有固定分辨率

16

这是视频会议串流,可在运行时支持多种分辨率。

32

以扩展视野范围进行直播。

常量

名称值类型说明
MAX_IMAGE_FORMATS 256 uint64

每个视频流的图片格式数量上限。