协议
对照组
在 fuchsia.camera/camera.fidl 中定义
这些是原始接口,用于实现兼容性。 这些名称与 camera.h 中的名称相同,以便于移植。
CreateStream
由客户端发送,用于指示所需的流特性。
如果成功设置格式,系统将接受数据流请求。
数据流令牌用于从 Camera Manager 进一步控制接口。驱动程序保证:
1) 如果数据流令牌收到 PEER_CLOSED 事件,驱动程序将关闭数据流。
2) 如果 Stream 接口关闭,驱动程序将关闭 eventpair。
请求
| 名称 | 类型 |
|---|---|
buffer_collection |
fuchsia.sysmem/BufferCollectionInfo
|
rate |
FrameRate
|
stream |
server_end:Stream
|
stream_token |
handle<eventpair>
|
GetDeviceInfo
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
device_info |
DeviceInfo
|
GetFormats
获取此设备可用的格式类型
注意:格式会分页到 MAX_FORMATS_PER_RESPONSE,需要发出多个 GetFormats,直到收到 total_format_count
请求
| 名称 | 类型 |
|---|---|
index |
uint32
|
响应
| 名称 | 类型 |
|---|---|
formats |
vector<VideoFormat>
|
total_format_count |
uint32
|
status |
zx/Result
|
管理员
在 fuchsia.camera/manager.fidl 中定义
相机管理器可授予对单个或一组相机的访问权限
- 您请求获取摄像头列表,其中包含摄像头说明
- 您请求获取要连接的相机支持的格式列表。
- 您可以使用 CreateStream 请求 Stream 接口。
CreateStream
创建具有指定访问权限的直播。此操作可能无法成功。
如果成功,Stream 将拥有指定的权限。
buffer_info 包含一组要与数据流搭配使用的缓冲区。
此方法即将弃用,请改用 CreateStreamV2。
请求
| 名称 | 类型 |
|---|---|
request |
VideoStream
|
buffer_info |
fuchsia.sysmem/BufferCollectionInfo
|
stream |
server_end:Stream
|
client_token |
handle<eventpair>
|
CreateStreamV2
创建具有指定访问权限的直播。此操作可能无法成功。
如果成功,Stream 将拥有指定的权限。
buffer_info 包含一组要与数据流搭配使用的缓冲区。
请求
| 名称 | 类型 |
|---|---|
request |
VideoStreamV2
|
buffer_info |
fuchsia.sysmem/BufferCollectionInfo
|
stream |
server_end:Stream
|
client_token |
handle<eventpair>
|
GetDevices
返回当前已插入并枚举的所有视频设备的列表。DeviceInfo 的 camera_id 字段用于在 GetFormats、GetStream 和 GetStreamAndBufferCollection 中指定设备。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
descriptions |
vector<DeviceInfo>
|
GetFormats
获取摄像头的所有可用格式。
camera_id 是从 GetDevices 返回的 DeviceInfo 中获取的。
请求
| 名称 | 类型 |
|---|---|
camera_id |
uint64
|
index |
uint32
|
响应
| 名称 | 类型 |
|---|---|
formats |
vector<VideoFormat>
|
total_format_count |
uint32
|
在线播放
在 fuchsia.camera/camera.fidl 中定义
OnFrameAvailable
当有帧可供处理或发生错误时,由驱动程序发送给客户端。
响应
| 名称 | 类型 |
|---|---|
frame |
FrameAvailableEvent
|
ReleaseFrame
解锁指定的帧,允许驱动程序重复使用内存。
请求
| 名称 | 类型 |
|---|---|
buffer_id |
uint32
|
开始
开始流式传输帧。
请求
<EMPTY>
停止
停止流式传输帧。
请求
<EMPTY>
STRUCTS
DeviceInfo
在 fuchsia.camera/camera.fidl 中定义
设备的身份信息。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
camera_id |
uint64
|
无默认应用 | |
vendor_id |
uint16
|
无默认应用 | |
vendor_name |
string
|
无默认应用 | |
product_id |
uint16
|
无默认应用 | |
product_name |
string
|
无默认应用 | |
max_stream_count |
uint16
|
设备可同时支持的数据流接口数量上限。 |
无默认应用 |
output_capabilities |
uint32
|
无默认应用 |
FrameAvailableEvent
在 fuchsia.camera/camera.fidl 中定义
当有帧可供处理或发生错误时,由驱动程序发送给客户端。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
frame_status |
FrameStatus
|
如果发生错误,则为非零值。 |
无默认应用 |
buffer_id |
uint32
|
缓冲区集合中缓冲区的索引。 |
无默认应用 |
metadata |
Metadata
|
无默认应用 |
FrameRate
在 fuchsia.camera/camera.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
frames_per_sec_numerator |
uint32
|
帧速率为 frames_per_sec_numerator / frames_per_sec_denominator。 |
无默认应用 |
frames_per_sec_denominator |
uint32
|
无默认应用 |
元数据
在 fuchsia.camera/camera.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
timestamp |
int64
|
无默认应用 | |
data_size |
uint32
|
新增:11
|
无默认应用 |
VideoFormat
在 fuchsia.camera/camera.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
format |
fuchsia.sysmem/ImageFormat
|
无默认应用 | |
rate |
FrameRate
|
无默认应用 |
VideoStream
在 fuchsia.camera/manager.fidl 中定义
相机管理器可以提供的视频流。视频流会引用摄像头,但可能会受到来自 ISP 或其他处理单元的额外硬件和带宽限制。此功能即将弃用,请使用 VideoStreamV2(见下文)。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
camera_id |
uint64
|
camera_id 对应于从 GetDevices 接收的 DeviceInfo 中提供的 camera_id。 |
无默认应用 |
format |
VideoFormat
|
请求的视频格式。请注意,即使在调用 CreateStream 时,也必须设置此字段才能设置帧速率。调用 CreateStream 时,format.format 应与 buffer_info.format 匹配。 |
无默认应用 |
VideoStreamV2
在 fuchsia.camera/manager.fidl 中定义
首选直播版本。 一种依赖于 fuchsia.hardware.camera 提供的 VideoFormat 定义的视频流版本。数据流会引用摄像头,但可能会受到来自 ISP 或其他处理单元的额外硬件和带宽限制。 新代码应依赖于此版本,因为当依赖项被移除时,另一个版本将被弃用。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
camera_id |
uint64
|
camera_id 对应于从 GetDevices 接收的 DeviceInfo 中提供的 camera_id。 |
无默认应用 |
format |
VideoFormat
|
请求的视频格式。请注意,即使在调用 CreateStream 时,也必须设置此字段才能设置帧速率。调用 CreateStream 时,format.format 应与 buffer_info.format 匹配。 |
无默认应用 |
枚举
FrameStatus strict
类型:uint32
在 fuchsia.camera/camera.fidl 中定义
当帧被标记为可用时要设置的状态。
| 名称 | 值 | 说明 |
|---|---|---|
确定 |
0 |
|
ERROR_FRAME |
1 |
生成帧时出错。 与此通知对应的数据缓冲区中将没有任何数据。 |
ERROR_BUFFER_FULL |
2 |
数据缓冲区中没有可用空间,导致丢帧。 |
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| CAMERA_OUTPUT_BURST |
2
|
uint32 |
|
| CAMERA_OUTPUT_DEPTH |
16
|
uint32 |
|
| CAMERA_OUTPUT_HDR |
8
|
uint32 |
|
| CAMERA_OUTPUT_STEREO |
32
|
uint32 |
|
| CAMERA_OUTPUT_STILL_IMAGE |
1
|
uint32 |
|
| CAMERA_OUTPUT_STREAM |
4
|
uint32 |
|
| CAMERA_OUTPUT_UNKNOWN |
0
|
uint32 |
一组粗略的功能。此结构体用于相机说明,有助于滤除不具备所需功能的相机。 这组声明将是位字段:CameraOutputCapabilities。 |
| MAX_FORMATS_PER_RESPONSE |
16
|
uint32 |