此文件定义了 PacketStream 协议,该协议用于流式传输基于数据包(例如编码)的音频,以进行播放和捕获。
PROTOCOLS
编解码器
在 fuchsia.hardware.audio/codec.fidl 中定义
如需了解概览,请参阅[音频编解码器接口]。
弃用
不再支持,请改用不含环形缓冲区的 Audio Composite 和一个 DAI,请参阅音频驱动程序架构
已弃用
GetDaiFormats
检索编解码器支持的 DAI 格式,如果当时不可用,编解码器可能会回复错误状态,控制器可能会稍后重试。 检索多个 DaiSupportedFormats 可处理以下情况:可能支持 DaiSupportedFormats 中参数的独占组合。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Codec_GetDaiFormats_Result
|
GetHealthState
检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
state |
HealthState
|
GetProperties
检索顶级静态属性。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
properties |
CodecProperties
|
重置
重置编解码器。
重置完成后,Reset 会返回。如果驱动程序无法成功重置编解码器,它将关闭编解码器协议通道,在这种情况下,客户端可以获取新的编解码器协议通道并重试。
请求
<EMPTY>
响应
<EMPTY>
SetDaiFormat
设置控制器与编解码器之间接口中使用的 DAI 格式。如果在请求时不支持(例如,对于可移除的硬件),则返回错误。
请求
| 名称 | 类型 |
|---|---|
format |
DaiFormat
|
响应
| 名称 | 类型 |
|---|---|
payload |
Codec_SetDaiFormat_Result
|
SignalProcessingConnect
连接到 SignalProcessing 协议。
如果支持多个连接,但不支持新的连接请求(即已创建的连接数达到上限,例如 1 个),则 protocol 渠道(不是调用 SignalProcessingConnect 的渠道)将关闭,并带有 ZX_ERR_ALREADY_BOUND 墓志铭。如果完全不支持信号处理,则 protocol 通道(同样,不是调用 SignalProcessingConnect 的通道)将关闭,并带有 ZX_ERR_NOT_SUPPORTED 墓志铭。此方法之所以命名为 SignalProcessingConnect 而不是 Connect,是因为此协议旨在进行组合,因此更详细的名称有助于区分并提高清晰度。
请求
| 名称 | 类型 |
|---|---|
protocol |
server_end:fuchsia.hardware.audio.signalprocessing/SignalProcessing
|
开始
启动/重新启动编解码器操作。
在配置编解码器以启动完成后,Start 会返回。此方法不会等待硬件实际开始播放/捕获(即不会考虑 turn_on_delay 影响),返回的 start_time 中也不会反映任何此类延迟。start_time 表示驱动程序完成编解码器配置以开始运行的时间,以 CLOCK_MONOTONIC 时间线衡量。
如果驱动程序无法成功启动编解码器,它将关闭编解码器协议通道,在这种情况下,客户端可以获取新的编解码器协议通道并重试。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
start_time |
zx/Time
|
停止
停止编解码器操作。
在配置编解码器以停止时,Stop 会返回。此方法不会等待硬件实际停止播放/捕获(即不考虑 turn_off_delay 影响),返回的 stop_time 中也不会反映任何此类延迟。stop_time 表示驱动程序完成编解码器配置以停止的时间,以 CLOCK_MONOTONIC 时间线衡量。
如果驱动程序无法成功配置编解码器以停止,它将关闭编解码器协议通道,在这种情况下,客户端可以获取新的编解码器协议通道并重试。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
stop_time |
zx/Time
|
WatchPlugState
通过挂起的 get 获取插头检测状态。驱动程序将回复客户端发送的第一个 WatchPlugState。在插头状态从最近报告的状态发生变化之前,驱动程序不会响应后续的客户端 WatchPlugState 调用。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
plug_state |
PlugState
|
CodecConnector
在 fuchsia.hardware.audio/codec_connector.fidl 中定义
如需查看编解码器协议的概览,请参阅编解码器接口
弃用
不再支持,请改用不含环形缓冲区的 Audio Composite 和一个 DAI,请参阅音频驱动程序架构
已弃用
关联
连接到编解码器协议服务器。 这种对 Codec 协议的间接调用使我们能够支持独立的编解码器客户端连接。
请求
| 名称 | 类型 |
|---|---|
codec_protocol |
server_end:Codec
|
复合材料
在 fuchsia.hardware.audio/composite.fidl 中定义
CreatePacketStream
CreatePacketStream 由客户端发送,用于为 processing_element_id 指定的 PACKET_STREAM 处理元素选择数据包流格式。格式基于驱动程序在 GetPacketStreamFormats 中提供的信息、客户端支持的内容以及任何其他要求。返回的 packet_stream_control 通道用于访问和控制驱动程序提供的数据包流协议。
如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。如果相应 ID 所表示的元素的 ElementType 不是 PACKET_STREAM,则返回 WRONG_TYPE。
如果服务器目前无法为此元素/格式创建数据包流,但将来应该能够创建,则返回 SHOULD_WAIT。此请求可以重试。
如果驱动程序不支持数据包流,或者不支持指定的 format,则返回 NOT_SUPPORTED。
请求
| 名称 | 类型 |
|---|---|
processing_element_id |
ElementId
|
format |
Format2
|
packet_stream_control |
server_end:PacketStreamControl
|
响应
| 名称 | 类型 |
|---|---|
payload |
Composite_CreatePacketStream_Result
|
CreateRingBuffer
CreateRingBuffer 由客户端发送,用于为 processing_element_id 指定的处理元素选择环形缓冲区格式 RING_BUFFER。该格式基于驱动程序在 GetRingBufferFormats 中提供的信息、客户端支持的信息以及任何其他要求。返回的 ring_buffer 通道用于访问和控制驱动程序提供的音频缓冲区。如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。
如果相应 ID 所表示的元素的 ElementType 不是 RING_BUFFER,则返回 WRONG_TYPE。
如果驱动程序不支持环形缓冲区,或者不支持指定的 format,则返回 NOT_SUPPORTED。
请求
| 名称 | 类型 |
|---|---|
processing_element_id |
ElementId
|
format |
Format2
|
ring_buffer |
server_end:RingBuffer
|
响应
| 名称 | 类型 |
|---|---|
payload |
Composite_CreateRingBuffer_Result
|
GetDaiFormats
检索此驱动程序支持的拓扑中 DAI_INTERCONNECT 处理元素支持的 DAI 格式,如 GetElements 从 fuchsia.hardware.audio.signalprocessing.
如果 DAI 格式在当时不可用,则返回 SHOULD_WAIT,客户端可能会稍后重试。
如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。
如果相应 ID 所表示的元素的 ElementType 不是 DAI_INTERCONNECT,则返回 WRONG_TYPE。
检索多个 DaiSupportedFormats 可用于支持 DaiSupportedFormats 中参数的独占组合的情况。返回给调用方的向量必须包含至少一个条目。
请求
| 名称 | 类型 |
|---|---|
processing_element_id |
ElementId
|
响应
| 名称 | 类型 |
|---|---|
payload |
Composite_GetDaiFormats_Result
|
GetHealthState
检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
state |
HealthState
|
GetPacketStreamFormats
检索相应驱动程序支持的拓扑中 PACKET_STREAM 处理元素支持的数据包流格式,如 fuchsia.hardware.audio.signalprocessing 中的 GetElements 和 GetTopologies 所返回的那样。
如果目前无法提供数据包流格式,则返回 SHOULD_WAIT。客户端可能会稍后重试此请求。
如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。如果相应 ID 所表示的元素的 ElementType 不是 PACKET_STREAM,则返回 WRONG_TYPE。
如果驱动程序不支持数据包流,则返回 NOT_SUPPORTED。
返回具有多个 SupportedFormats2 的向量可实现以下情况:支持 SupportedFormats2 中参数的专属组合。
返回给调用方的向量必须包含至少一个条目。
请求
| 名称 | 类型 |
|---|---|
processing_element_id |
ElementId
|
响应
| 名称 | 类型 |
|---|---|
payload |
Composite_GetPacketStreamFormats_Result
|
GetProperties
检索顶级静态属性。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Composite_GetProperties_Result
|
GetRingBufferFormats
检索相应驱动程序支持的拓扑中 RING_BUFFER 处理元素支持的环形缓冲区格式,如 GetElements 从 fuchsia.hardware.audio.signalprocessing 返回的。如果当时没有可用的环形缓冲区格式,则返回 SHOULD_WAIT,客户端可能会稍后重试。
如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。
如果相应 ID 所表示的元素的 ElementType 不是 RING_BUFFER,则返回 WRONG_TYPE。
检索多个 SupportedFormats2 可用于支持 SupportedFormats2 中参数的独占组合的情况。返回给调用方的向量必须包含至少一个条目。
请求
| 名称 | 类型 |
|---|---|
processing_element_id |
ElementId
|
响应
| 名称 | 类型 |
|---|---|
payload |
Composite_GetRingBufferFormats_Result
|
重置
重置硬件,包括所有 DAI 互连和信号处理。
因此,通过 CreateRingBuffer 或 CreatePacketStream 获取的所有渠道都将关闭。
当硬件完全重置时,Reset 会返回。此时,客户端需要重新配置所有 DAI 互连,选择信号处理拓扑并重新配置所有处理元素,以及重建所有环形缓冲区和数据包流。
如果驱动程序无法成功重置硬件,则会返回错误,然后关闭协议通道,在这种情况下,客户端可以获取新的协议通道并重试。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Composite_Reset_Result
|
SetDaiFormat
SetDaiFormat 由客户端发送,用于为 processing_element_id 指定的处理元素选择 DAI 格式。DAI_INTERCONNECT格式基于驱动程序在 GetDaiFormats 中提供的信息、客户端支持的内容以及任何其他要求。
如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。
如果相应 ID 所表示元素的 ElementType 不是 DAI_INTERCONNECT,则返回 WRONG_TYPE。
请求
| 名称 | 类型 |
|---|---|
processing_element_id |
ElementId
|
format |
DaiFormat
|
响应
| 名称 | 类型 |
|---|---|
payload |
Composite_SetDaiFormat_Result
|
SignalProcessingConnect
连接到 SignalProcessing 协议。
如果支持多个连接,但不支持新的连接请求(即已创建的连接数达到上限,例如 1 个),则 protocol 渠道(不是调用 SignalProcessingConnect 的渠道)将关闭,并带有 ZX_ERR_ALREADY_BOUND 墓志铭。如果完全不支持信号处理,则 protocol 通道(同样,不是调用 SignalProcessingConnect 的通道)将关闭,并带有 ZX_ERR_NOT_SUPPORTED 墓志铭。此方法之所以命名为 SignalProcessingConnect 而不是 Connect,是因为此协议旨在进行组合,因此更详细的名称有助于区分并提高清晰度。
请求
| 名称 | 类型 |
|---|---|
protocol |
server_end:fuchsia.hardware.audio.signalprocessing/SignalProcessing
|
CompositeConnector
在 fuchsia.hardware.audio/composite_connector.fidl 中定义
如需了解概览,请参阅音频复合设备。
关联
连接到 Composite 协议。
此方法允许组件在不受开发主机控制的情况下提供 FIDL。
请求
| 名称 | 类型 |
|---|---|
composite_protocol |
server_end:Composite
|
Dai
在 fuchsia.hardware.audio/dai.fidl 中定义
如需了解概览,请参阅数字音频接口。
弃用
不再支持,请改用包含一个 DAI 和一个环形缓冲区的音频复合,请参阅音频驱动程序架构
已弃用
CreateRingBuffer
CreateRingBuffer 由客户端发送,用于根据驱动程序在 GetDaiFormats 和 GetRingBufferFormats 中提供的信息、客户端支持的格式以及任何其他要求来选择 DAI 格式和环形缓冲区格式。ring_buffer 渠道用于控制音频缓冲区。如果之前已建立并仍处于有效状态的环形缓冲区渠道,驱动程序必须关闭该(环形缓冲区)渠道,并尽一切努力使进程中任何正在进行的流式传输操作正常静止。
请求
| 名称 | 类型 |
|---|---|
dai_format |
DaiFormat
|
ring_buffer_format |
Format
|
ring_buffer |
server_end:RingBuffer
|
GetDaiFormats
检索 DAI 支持的 DAI 格式,如果在检索时不可用,DAI 可能会回复错误状态,客户端可能会稍后重试。
检索多个 DaiSupportedFormats 可用于支持 SupportedFormats 中参数的独占组合的情况。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Dai_GetDaiFormats_Result
|
GetHealthState
检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
state |
HealthState
|
GetProperties
检索顶级静态属性。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
properties |
DaiProperties
|
GetRingBufferFormats
检索 DAI 支持的环形缓冲区格式,如果在检索时不可用,DAI 可能会回复错误状态,客户端可能会在稍后重试。
检索多个 SupportedFormats 可用于支持 SupportedFormats 中参数的独占组合的情况。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Dai_GetRingBufferFormats_Result
|
重置
重置 DAI 硬件。通过 CreateRingBuffer 获取的 ring_buffer 渠道可能会被驱动程序关闭,在这种情况下,客户端需要获取新的 ring_buffer。重置完成后,Reset 会返回。如果驱动程序无法成功重置硬件,它将关闭 DAI 协议通道,在这种情况下,客户端可以获取新的 DAI 协议通道并重试。
请求
<EMPTY>
响应
<EMPTY>
SignalProcessingConnect
连接到 SignalProcessing 协议。
如果支持多个连接,但不支持新的连接请求(即已创建的连接数达到上限,例如 1 个),则 protocol 渠道(不是调用 SignalProcessingConnect 的渠道)将关闭,并带有 ZX_ERR_ALREADY_BOUND 墓志铭。如果完全不支持信号处理,则 protocol 通道(同样,不是调用 SignalProcessingConnect 的通道)将关闭,并带有 ZX_ERR_NOT_SUPPORTED 墓志铭。此方法之所以命名为 SignalProcessingConnect 而不是 Connect,是因为此协议旨在进行组合,因此更详细的名称有助于区分并提高清晰度。
请求
| 名称 | 类型 |
|---|---|
protocol |
server_end:fuchsia.hardware.audio.signalprocessing/SignalProcessing
|
DaiConnector
在 fuchsia.hardware.audio/dai_connector.fidl 中定义
如需简要了解 DAI 协议,请参阅数字音频接口
弃用
不再支持,请改用包含一个 DAI 和一个环形缓冲区的音频复合,请参阅音频驱动程序架构
已弃用
关联
此连接会连接到 DAI 协议服务器。
请求
| 名称 | 类型 |
|---|---|
dai_protocol |
server_end:Dai
|
健康
在 fuchsia.hardware.audio/health.fidl 中定义
GetHealthState
检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
state |
HealthState
|
PacketStreamControl
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
用于建立和管理数据包流的控制协议。
AllocateVmos
请求驱动程序为数据传输分配 VMO。 返回已分配的 VMO 及其分配的 ID。
返回的 VMO 句柄必须包含 ZX_RIGHT_TRANSFER、ZX_RIGHT_READ 和 ZX_RIGHT_MAP。 如果数据包流是输出流,则句柄还必须包含 ZX_RIGHT_WRITE。
如果 min_vmo_size 为零或 vmo_count 为零,则返回 ZX_ERR_INVALID_ARGS。如果驱动程序无法分配所请求的 VMO,则返回 ZX_ERR_NO_MEMORY。
如果 VMO 已分配或注册,或者流已启动,则返回 ZX_ERR_BAD_STATE。先调用 DeallocateVmos 或 UnregisterVmos 进行重新配置。
请求
| 名称 | 类型 |
|---|---|
payload |
AllocateVmosConfig
|
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControl_AllocateVmos_Result
|
DeallocateVmos
释放之前通过 AllocateVmos 分配的所有 VMO。当 PacketStreamControl 频道关闭时,系统也会自动执行此操作。
如果当前未分配 VMO,或者流未停止,则返回 ZX_ERR_BAD_STATE。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControl_DeallocateVmos_Result
|
GetPacketStreamSink
连接到驱动程序实现的数据接收器。 用于驱动程序消耗数据的音频输出。
Flow:
- 应用将音频数据写入已注册的 VMO。
- 应用刷新写入区域的缓存(如果
needs_cache_flush_or_invalidate为 true)。 - 应用使用数据的位置调用
PacketStreamSink.PutPacket。 - 驱动程序使用数据。
如果多次调用此方法,则会关闭之前的 PacketStreamSink 渠道,并舍弃该渠道上的所有待处理请求。新渠道会取代旧渠道。
如果流是输入流,或者驱动程序不支持此方法,则返回 ZX_ERR_NOT_SUPPORTED。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControl_GetPacketStreamSink_Result
|
GetProperties
顶级静态属性的访问器。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControl_GetProperties_Result
|
RegisterVmos
向驱动程序注册客户端分配的 VMO。
注册的 VMO 句柄必须包含 ZX_RIGHT_TRANSFER、ZX_RIGHT_READ 和 ZX_RIGHT_MAP。 如果数据包流是输入流,则句柄还必须包含 ZX_RIGHT_WRITE。
如果 vmo_infos 为空、任何 VMO 句柄无效或发现重复的 vmo_id,则返回 ZX_ERR_INVALID_ARGS。
如果任何 VMO 不具备所需权限,则返回 ZX_ERR_ACCESS_DENIED。如果 VMO 已注册或已分配,或者流已启动,则返回 ZX_ERR_BAD_STATE。先调用 UnregisterVmos 或 DeallocateVmos 进行重新配置。
请求
| 名称 | 类型 |
|---|---|
payload |
RegisterVmosConfig
|
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControl_RegisterVmos_Result
|
SetPacketStreamSink
为驱动程序提供数据接收器。 这用于驱动程序生成数据的音频输入。
Flow:
- 驱动程序将音频数据写入已注册的 VMO。
- 驱动程序使用数据的位置调用
PacketStreamSink.PutPacket。 - 应用接收
PutPacket。 - 应用使相应区域的缓存失效(如果
needs_cache_flush_or_invalidate为 true)。 - 应用读取数据。
如果多次调用此方法,驱动程序会关闭之前的 PacketStreamSink 渠道。新渠道会取代旧渠道。
如果流是输出流,或者驱动程序不支持此方法,则返回 ZX_ERR_NOT_SUPPORTED。
请求
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControlSetPacketStreamSinkRequest
|
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControl_SetPacketStreamSink_Result
|
开始
启动数据包流。
在以下情况下返回 ZX_ERR_BAD_STATE:
- 尚未分配(如果指定了
DRIVER_OWNED)和/或注册(如果指定了CLIENT_OWNED)缓冲区。如果支持INLINE,则此属性不适用。 - 直播已开始。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControl_Start_Result
|
停止
停止数据包流。
收到回答后,系统会停止流式传输。
行为取决于流方向:
- 输出:驱动程序停止使用数据包。所有待处理的
PacketStreamSink.PutPacket请求都将保持待处理状态,直到再次调用Start。客户端可以在Stop之后调用PacketStreamSink.FlushPackets来舍弃这些待处理的数据包。 - 输入:驱动程序停止生成数据包。在再次调用
Start之前,驱动程序不会再进行任何PacketStreamSink.PutPacket调用。
请注意,由于 PacketStreamSink 使用单独的渠道,因此无法严格保证 Stop 和 PacketStreamSink.PutPacket 之间的顺序:
- 对于输出,在
Stop返回后,一些正在进行的PacketStreamSink.PutPacket调用可能会成功完成。 - 对于输入,某些正在进行的
PacketStreamSink.PutPacket调用可能会在Stop返回后到达客户端。
如果数据流未启动,则返回 ZX_ERR_BAD_STATE。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControl_Stop_Result
|
UnregisterVmos
取消注册之前通过 RegisterVmos 注册的所有 VMO。当PacketStreamControl频道关闭时,系统也会自动执行此操作。
如果 VMO 当前未注册,或流未停止,则返回 ZX_ERR_BAD_STATE。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamControl_UnregisterVmos_Result
|
PacketStreamSink
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
用于流式传输基于数据包的音频数据的协议。 此协议充当数据接收器。此协议的“服务器”会使用数据包,而“客户端”会生成数据包。
此协议可用于两个方向:
- 输出(客户端 -> 驱动程序):驱动程序实现
PacketStreamSink。客户端(应用)调用PutPacket。 - 输入(驱动程序 -> 客户端):客户端(应用)实现
PacketStreamSink。驱动程序调用PutPacket。
FlushPackets
刷新当前所有待处理的数据包,但不处理这些数据包。 此调用会一直等待,直到所有待处理的数据包完成或取消。
注意:在取消数据包之前,系统可能会对其进行部分处理(例如,如果数据包包含多个音频帧,或者数据与编码帧边界不一致)。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamSink_FlushPackets_Result
|
PutPacket
提交要由服务器处理的数据包。
客户端可以通过重复调用 PutPacket 来将多个数据包排入队列。
系统会按提交顺序处理数据包。此调用会一直处于阻塞状态,直到有效负载得到处理。当此调用返回时,缓冲区区域保证可供重复使用。
如果流未启动或未配置,则返回 ZX_ERR_BAD_STATE。
如果调用了 FlushPackets,则返回 ZX_ERR_CANCELED。如果数据包无效,则返回 ZX_ERR_INVALID_ARGS。其中包括:
- 缺少载荷。
- 使用了
inline_data,但supported_buffer_types不包含INLINE。 - 使用了
vmo_transfer,但supported_buffer_types不包含CLIENT_OWNED或DRIVER_OWNED。 vmo_id未识别,或vmo_offset+payload_size超过 VMO 大小。
注意:服务器不需要检测 VMO 区域是否正被之前的待处理数据包使用。客户端负责管理缓冲区使用情况。
请求
| 名称 | 类型 |
|---|---|
payload |
PacketStreamSinkPutPacketRequest
|
响应
| 名称 | 类型 |
|---|---|
payload |
PacketStreamSink_PutPacket_Result
|
RingBuffer
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
环形缓冲区用于在各方(通常在不同进程中)之间传送音频,从而实现并发、异步的数据访问,而无需使用锁。这种模式之所以有效,是因为双方都了解哪些缓冲区可以安全访问,以及这些区域如何随时间变化。
如需详细了解生产者和消费者在环形缓冲区启动之前以及在环形缓冲区处于活动状态时的责任,请参阅环形缓冲区行为。
GetProperties
顶级静态属性的访问器。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
properties |
RingBufferProperties
|
GetVmo
请求一个共享缓冲区,用于在客户端和驱动程序之间移动批量音频数据。
客户端请求 min_frames 作为其所需的部分环形缓冲区的大小。
驱动程序会在 num_frames 中返回已分配的环形缓冲区空间的实际大小。
num_frames 必须至少为 min_frames 加上 driver_transfer_bytes(以帧为单位),以便环形缓冲区内容可以传入和传出,否则必须使用 GetVmoError.INVALID_ARGS 使调用失败。
由于任何内部要求(例如对齐),驱动程序可能会将环形缓冲区大小增加到 min_frames 加上 driver_transfer_bytes(以帧为单位)以上。
客户端可以将整个返回的环形缓冲区视为可安全访问,但当前位置紧邻的 driver_transfer_bytes 除外,有关更多详情,请参阅 RingBufferProperties 中的 driver_transfer_bytes 参数规范。
返回的 VMO 句柄必须包含 ZX_RIGHT_TRANSFER、ZX_RIGHT_READ 和 ZX_RIGHT_MAP。 如果环形缓冲区是“传出”缓冲区(将音频数据从客户端传送到设备),则句柄还必须包含 ZX_RIGHT_WRITE。
如果 clock_recovery_notifications_per_ring 不为零,驱动程序将以最多 clock_recovery_notifications_per_ring 的频率向 WatchClockRecoveryPositionInfo 客户端请求发送回复。这些通知旨在用于时钟恢复。
请求
| 名称 | 类型 |
|---|---|
min_frames |
uint32
|
clock_recovery_notifications_per_ring |
uint32
|
响应
| 名称 | 类型 |
|---|---|
payload |
RingBuffer_GetVmo_Result
|
SetActiveChannels
通过位掩码设置哪些渠道处于活跃状态。
渠道总数是 Format 中的 number_of_channels,具体而言是 PcmFormat 中的 number_of_channels,即此位掩码最多可设置 number_of_channels 位(最多 64 位)。最低有效位对应于渠道索引 0。位掩码中未设置(位为 0)的渠道处于非活跃状态。默认情况下,所有渠道均处于有效状态。因此,创建 RingBuffer 会为所有渠道启用关联的硬件。
非活跃通道会向驱动程序表明,它可以关闭与非活跃通道关联的硬件。后续的 SetActiveChannels 将非活动频道设置为活动频道可能会导致 turn_on_delay 实际重启频道的播放/拍摄。
停用一个、多个或所有渠道不会Stop环形缓冲区,也不会改变环形缓冲区在位置方面的行为。调用 Start 后,无论活跃渠道的数量(包括没有活跃渠道的情况),环形缓冲区的位置都会前进(并根据需要发送位置通知)。这意味着环形缓冲区中的格式不会更改。
如果驱动程序不支持停用渠道,则必须返回 ZX_ERR_NOT_SUPPORTED。如果掩码不正确,即启用了给定 number_of_channels 要使用的位数之外的渠道,则驱动程序必须返回 ZX_ERR_INVALID_ARGS。
set_time 值(在 CLOCK_MONOTONIC 时间轴中)表示将硬件配置为激活或停用渠道的时间已完成。set_time 不包含潜在的 turn_on_delay,驱动程序不会延迟回复,等待硬件实际开启,而是会回复 set_time,指明硬件配置完成的时间。如果所请求的渠道配置已处于有效状态,则返回的 set_time 可以在调用 SetActiveChannels 之前,但必须在发送回复之前。如果使用相同的配置再次调用,则回复必须包含之前返回的相同 set_time 值。
对于输入渠道,驱动程序不需要将非活动渠道归零。
如果在第一次调用完成之前第二次调用 SetActiveChannels,则必须关闭通道并返回错误 ZX_ERR_BAD_STATE。
请求
| 名称 | 类型 |
|---|---|
active_channels_bitmask |
uint64
|
响应
| 名称 | 类型 |
|---|---|
payload |
RingBuffer_SetActiveChannels_Result
|
开始
启动环形缓冲区。
start_time 值(在 CLOCK_MONOTONIC 时间轴中)表示位置开始移动的时间,从环形缓冲区的开头开始,即驱动程序已开始从环形缓冲区位置 0 读取或写入数据,但需遵守下文“环形缓冲区行为”中所述的总体位置和缓冲行为。
如果在 GetVmo 之前调用了 Start,则必须使用 ZX_ERR_BAD_STATE 关闭通道。如果在 RingBuffer 已启动时调用 Start,或者在第一次调用完成之前第二次调用 Start,则必须关闭通道并返回错误 ZX_ERR_BAD_STATE。
如果在 SetActiveChannels 之前调用了 Start,则默认情况下所有渠道都处于有效状态。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
start_time |
zx/Time
|
停止
停止环形缓冲区。
收到此调用的响应后,在再次调用 Start 之前,系统不会再发送任何位置通知。
如果在 GetVmo 之前调用了 Stop,则必须使用 ZX_ERR_BAD_STATE 关闭通道。
请求
<EMPTY>
响应
<EMPTY>
WatchClockRecoveryPositionInfo
通过挂起获取来获取环形缓冲区的当前位置。
只有在调用了 GetVmo(其中指定了 clock_recovery_notifications_per_ring)之后,才能调用 WatchClockRecoveryPositionInfo。
驱动程序必须响应客户端的首次 WatchClockRecoveryPositionInfo 调用,但在位置信息与最近提供给该客户端的信息相比发生变化之前,不会响应后续的客户端调用。
驱动程序必须在回复 Start 命令后才能响应 WatchClockRecoveryPositionInfo。
在 Start 返回的 start_time 处,位置始终为 0。然后,它会以速率、采样格式(以及时钟域,如果设备与CLOCK_MONOTONIC不在同一时钟域中)指定的速率进行处理。
如果 clock_recovery_notifications_per_ring 不为零,驱动程序将以最多 clock_recovery_notifications_per_ring 的频率回复其估计位置,以用于时钟恢复。
RingBufferPositionInfo 返回值必须包含单调递增的时间戳。
如果此客户端已存在待处理的 WatchClockRecoveryPositionInfo,驱动程序将关闭协议通道并显示 ZX_ERR_BAD_STATE 错误。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
position_info |
RingBufferPositionInfo
|
WatchDelayInfo
通过挂起式 GET 获取有关延迟的信息。
驱动程序会立即回复客户发送的第一条 WatchDelayInfo。
在延迟信息发生变化(与最近报告的延迟信息不同)之前,驱动程序不会响应后续的客户端 WatchDelayInfo 调用。
如果在第一次调用完成之前第二次调用 WatchDelayInfo,则必须关闭通道并返回错误 ZX_ERR_BAD_STATE。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
RingBuffer_WatchDelayInfo_Result
|
StreamConfig
在 fuchsia.hardware.audio/stream_config.fidl 中定义
如需了解概览,请参阅音频驱动程序流式传输接口
弃用
不再支持,请改用带一个环形缓冲区的音频复合,请参阅音频驱动程序架构
已弃用
CreateRingBuffer
CreateRingBuffer 由客户端发送,用于根据驱动程序在 GetSupportedFormats 中提供的信息(客户端支持的信息)以及任何其他要求来选择流格式。ring_buffer 渠道用于控制音频缓冲区。如果之前已建立环形缓冲区渠道且该渠道仍处于活跃状态,驱动程序必须关闭该(环形缓冲区)渠道,并尽一切努力使进程中任何正在进行的流式传输操作正常停止。
请求
| 名称 | 类型 |
|---|---|
format |
Format
|
ring_buffer |
server_end:RingBuffer
|
GetHealthState
检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
state |
HealthState
|
GetProperties
检索顶级静态属性。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
properties |
StreamProperties
|
GetSupportedFormats
获取给定驱动程序支持的格式。如果驱动程序支持的组合无法全部用一个 SupportedFormats 来描述,则驱动程序会在返回的向量中返回多个 SupportedFormats。例如,如果一个 SupportedFormats 允许 48KHz 的 32 位采样和 96KHz 的 16 位采样,但不允许 96KHz 的 32 位采样,则驱动程序会回复两个 SupportedFormats:<<32 位>,<48KHz>> 和 <<16 位>,<96KHz>>。为简单起见,此示例忽略了除采样率和每样本位数之外的参数。如果驱动程序支持 16 位或 32 位采样,且支持 48 或 96KHz 采样率,则驱动程序会回复 1 SupportedFormats:<<16 位、32 位>,<48KHz、96KHz>>。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
supported_formats |
vector<SupportedFormats>:64
|
SetGain
客户端更新增益状态。
请求
| 名称 | 类型 |
|---|---|
target_state |
GainState
|
SignalProcessingConnect
连接到 SignalProcessing 协议。
如果支持多个连接,但不支持新的连接请求(即已创建的连接数达到上限,例如 1 个),则 protocol 渠道(不是调用 SignalProcessingConnect 的渠道)将关闭,并带有 ZX_ERR_ALREADY_BOUND 墓志铭。如果完全不支持信号处理,则 protocol 通道(同样,不是调用 SignalProcessingConnect 的通道)将关闭,并带有 ZX_ERR_NOT_SUPPORTED 墓志铭。此方法之所以命名为 SignalProcessingConnect 而不是 Connect,是因为此协议旨在进行组合,因此更详细的名称有助于区分并提高清晰度。
请求
| 名称 | 类型 |
|---|---|
protocol |
server_end:fuchsia.hardware.audio.signalprocessing/SignalProcessing
|
WatchGainState
通过挂起的 get 获取增益状态。驱动程序将回复客户端发送的第一个 WatchGainState,并且此回复必须包含设置为 0dB 或更低的 gain_db。在增益状态从最近报告的状态发生变化之前,驱动程序不会响应后续的客户端 WatchGainState 调用。
如果在第一次调用完成之前第二次调用 WatchGainState,则必须使用错误 ZX_ERR_BAD_STATE 关闭协议通道。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
gain_state |
GainState
|
WatchPlugState
通过挂起的 get 获取插头检测状态。驱动程序将回复客户端发送的第一个 WatchPlugState。在插头状态从最近报告的状态发生变化之前,驱动程序不会响应后续的客户端 WatchPlugState 调用。如果在第一次调用完成之前第二次调用 WatchPlugState,则必须使用错误 ZX_ERR_BAD_STATE 关闭协议通道。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
plug_state |
PlugState
|
StreamConfigConnector
在 fuchsia.hardware.audio/stream_config_connector.fidl 中定义
如需了解概览,请参阅音频驱动程序流式传输接口。
弃用
不再支持,请改用带一个环形缓冲区的音频复合,请参阅音频驱动程序架构
已弃用
关联
连接到 StreamConfig 协议。
此方法允许组件在不受开发主机控制的情况下提供 FIDL。
请求
| 名称 | 类型 |
|---|---|
protocol |
server_end:StreamConfig
|
STRUCTS
Codec_GetDaiFormats_Response
在 fuchsia.hardware.audio/codec.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
formats |
vector<DaiSupportedFormats>:64
|
无默认值 |
Codec_SetDaiFormat_Response
在 fuchsia.hardware.audio/codec.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
state |
CodecFormatInfo
|
无默认值 |
Composite_CreatePacketStream_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
<EMPTY>
Composite_CreateRingBuffer_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
<EMPTY>
Composite_GetDaiFormats_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
dai_formats |
vector<DaiSupportedFormats>:64
|
无默认值 |
Composite_GetPacketStreamFormats_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
packet_stream_formats |
vector<SupportedFormats2>:64
|
无默认值 |
Composite_GetProperties_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
properties |
CompositeProperties
|
无默认值 |
Composite_GetRingBufferFormats_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
ring_buffer_formats |
vector<SupportedFormats2>:64
|
无默认值 |
Composite_Reset_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
<EMPTY>
Composite_SetDaiFormat_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
<EMPTY>
DaiFormat
在 fuchsia.hardware.audio/dai_format.fidl 中定义
DAI 格式。帧由 number_of_channels 个样本组成,这些样本在 bits_per_slot 中包含 bits_per_sample 位数据,并以 frame_format 形式排列。如需了解详情,请参阅数字音频接口。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
number_of_channels |
uint32
|
频道数。
如果 |
无默认值 |
channels_to_use_bitmask |
uint64
|
通过位掩码设置哪些渠道处于有效状态。
最低有效位对应于渠道指数 0。不得设置最低有效 |
无默认值 |
sample_format |
DaiSampleFormat
|
所有样本的样本格式。 |
无默认值 |
frame_format |
DaiFrameFormat
|
所有样本的帧格式。 |
无默认值 |
frame_rate |
uint32
|
所有样本的帧速率。 |
无默认值 |
bits_per_slot |
uint8
|
所有渠道的每时段比特数。 |
无默认值 |
bits_per_sample |
uint8
|
每个渠道的每样本位数。
必须小于 |
无默认值 |
DaiFrameFormatCustom
在 fuchsia.hardware.audio/dai_format.fidl 中定义
自定义帧格式。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
left_justified |
bool
|
广告资源块内样本的对齐方式。 |
无默认值 |
sclk_on_raising |
bool
|
在上升或下降的 sclk 上对数据样本和帧同步输出进行时钟控制。 如果为 true,则 sclk 在数据和帧同步的上升沿上升,即在 sclk 的下降沿(sclk 周期的中间)对数据进行采样。因此,如果为 false,则将在 sclk 的上升沿对数据进行采样。 |
无默认值 |
frame_sync_sclks_offset |
int8
|
帧同步更改开始与音频样本之间的 sclks 数量。例如,对于 I2S,设置为 1;对于立体声左对齐,设置为 0。 |
无默认值 |
frame_sync_size |
uint8
|
一个帧内帧同步的 sclk 数较高。 例如,对于 I2S,如果 32 位插槽设置为 32,对于 TDM,通常设置为 1。 |
无默认值 |
DaiSupportedFormats
在 fuchsia.hardware.audio/dai_format.fidl 中定义
DAI 支持的格式。帧由 number_of_channels 个样本组成,这些样本在 bits_per_slot 位中包含 bits_per_sample 位数据,并以 frame_formats 形式排列。
支持每个向量中列出的所有值。如果驱动程序支持的组合无法全部用一个 DaiSupportedFormats 来描述,GetDaiFormats 会在返回的向量中返回多个 DaiSupportedFormats。
如需了解详情,请参阅数字音频接口。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
number_of_channels |
vector<uint32>:64
|
支持的可能频道数量。 |
无默认值 |
sample_formats |
vector<DaiSampleFormat>:4
|
支持的示例格式。 |
无默认值 |
frame_formats |
vector<DaiFrameFormat>:64
|
支持的帧格式。 |
无默认值 |
frame_rates |
vector<uint32>:64
|
支持的费率。值必须按升序排列。 |
无默认值 |
bits_per_slot |
vector<uint8>:8
|
每个 slot 支持的位数。值必须按升序排列。 |
无默认值 |
bits_per_sample |
vector<uint8>:8
|
支持的每个样本的位数。值必须按升序排列。 |
无默认值 |
Dai_GetDaiFormats_Response
在 fuchsia.hardware.audio/dai.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
dai_formats |
vector<DaiSupportedFormats>:64
|
无默认值 |
Dai_GetRingBufferFormats_Response
在 fuchsia.hardware.audio/dai.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
ring_buffer_formats |
vector<SupportedFormats>:64
|
无默认值 |
PacketStreamControl_AllocateVmos_Response 资源
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
vmos |
VmoInfos
|
无默认值 |
PacketStreamControl_DeallocateVmos_Response
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
<EMPTY>
PacketStreamControl_GetProperties_Response
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
properties |
PacketStreamProperties
|
无默认值 |
PacketStreamControl_RegisterVmos_Response
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
<EMPTY>
PacketStreamControl_SetPacketStreamSink_Response
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
<EMPTY>
PacketStreamControl_Start_Response
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
<EMPTY>
PacketStreamControl_Stop_Response
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
<EMPTY>
PacketStreamControl_UnregisterVmos_Response
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
<EMPTY>
PacketStreamSink_FlushPackets_Response
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
<EMPTY>
PcmFormat
在 fuchsia.hardware.audio/pcm_format.fidl 中定义
支持 PCM 音频的格式。帧由 number_of_channels 个样本组成,这些样本在 bytes_per_sample 字节内具有 valid_bits_per_sample 位的最高有效位(左对齐)数据。
如需了解详情,请参阅音频驱动程序流式传输接口。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
number_of_channels |
uint8
|
频道数量。 |
无默认值 |
sample_format |
SampleFormat
|
所有样本的格式。 |
无默认值 |
bytes_per_sample |
uint8
|
分配用于保存样本的字节数,必须大于或等于 |
无默认值 |
valid_bits_per_sample |
uint8
|
样本中的有效位数,必须小于或等于 |
无默认值 |
frame_rate |
uint32
|
所有样本的帧速率。 |
无默认值 |
RingBufferPositionInfo
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
timestamp |
zx/Time
|
驱动程序对播放/捕获指针到达
|
无默认值 |
position |
uint32
|
驱动程序估计的在时间 |
无默认值 |
RingBuffer_GetVmo_Response 资源
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
num_frames |
uint32
|
无默认值 | |
ring_buffer |
handle<vmo>
|
无默认值 |
RingBuffer_SetActiveChannels_Response
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
set_time |
zx/Time
|
无默认值 |
RingBuffer_WatchDelayInfo_Response
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
delay_info |
DelayInfo
|
无默认值 |
枚举
DaiFrameFormatStandard 严格
类型:uint8
在 fuchsia.hardware.audio/dai_format.fidl 中定义
标准帧格式。
| 名称 | 值 | 说明 |
|---|---|---|
无 |
1 |
没有帧格式,例如没有帧同步的 PDM 格式的样本。 |
I2S |
2 |
格式如 I2S 规范中所述(左对齐、2 个声道、每个样本 32 位、帧同步在左声道时保持低电平,在右声道时保持高电平、数据在帧同步变化后一个时钟周期开始,在 sclk 的下降沿时输出)。 |
STEREO_LEFT |
3 |
左对齐,2 个渠道。数据从帧同步变化(从低到高)开始,在 sclk 的下降沿时钟输出。对于第一个通道,帧同步必须保持高电平 |
STEREO_RIGHT |
4 |
右对齐,2 个渠道。对于第一个通道,帧同步必须保持高电平 |
TDM1 |
5 |
左对齐,通道数量可变,数据从帧同步信号从低变为高时开始,在 sclk 的上升沿时输出。帧同步必须保持高电平状态,持续时间正好为 1 个时钟周期。 |
TDM2 |
6 |
左对齐,通道数量可变,数据在帧同步从低变为高后的一个时钟周期开始,在 sclk 的上升沿时钟输出。帧同步必须保持高电平正好 1 个时钟周期。 |
TDM3 |
7 |
左对齐,渠道数量可变,数据在帧同步从低变为高后的两个时钟周期开始,在 sclk 的上升沿时钟输出。帧同步必须保持高电平正好 1 个时钟周期。 |
DaiSampleFormat strict
类型:uint8
在 fuchsia.hardware.audio/dai_format.fidl 中定义
| 名称 | 值 | 说明 |
|---|---|---|
PDM |
1 |
脉冲密度调制示例。 |
PCM_SIGNED |
2 |
有符号整数线性脉冲编码调制样本,采用主机字节序。 |
PCM_UNSIGNED |
3 |
无符号整数线性脉冲编码调制样本,采用主机字节序。 |
PCM_FLOAT |
4 |
浮点样本,按照 IEEE-754 标准进行编码。 |
DeviceType 灵活
类型:uint32
在 fuchsia.hardware.audio/device_type.fidl 中定义
| 名称 | 值 | 说明 |
|---|---|---|
STREAM_CONFIG |
1 |
设备支持 fuchsia.hardware.audio/StreamConfig 协议。 |
DAI |
2 |
设备支持 fuchsia.hardware.audio/Dai 协议。 |
CODEC |
3 |
设备支持 fuchsia.hardware.audio/Codec 协议。 |
复合 |
4 |
设备支持 fuchsia.hardware.audio/Composite 协议。 |
DriverError 灵活
类型:uint32
在 fuchsia.hardware.audio/common.fidl 中定义
| 名称 | 值 | 说明 |
|---|---|---|
INTERNAL_ERROR |
1 |
驱动程序在执行操作时遇到了其他未指明的错误。 |
NOT_SUPPORTED |
2 |
相应操作未实现、不受支持或未启用。 |
INVALID_ARGS |
3 |
实参无效。 |
WRONG_TYPE |
4 |
操作对象类型错误,无法执行相应操作。 |
SHOULD_WAIT |
5 |
目前无法执行该操作,但如果调用方等待前提条件得到满足,则可能会成功。 |
FATAL_ERROR |
6 |
驱动程序中发生了严重错误。相应连接不再可用,客户端应将其关闭。 添加:29
|
EncodingType flexible
类型:uint32
在 fuchsia.hardware.audio/encoding.fidl 中定义
用于流的编码类型。
| 名称 | 值 | 说明 |
|---|---|---|
AAC |
1 |
|
SBC |
2 |
GetVmoError 严格
类型:uint32
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
| 名称 | 值 | 说明 |
|---|---|---|
INVALID_ARGS |
1 |
由于参数无效(例如 min_frames 过大),环形缓冲区设置失败。 |
INTERNAL_ERROR |
2 |
由于内部错误,环形缓冲区设置失败。 |
PlugDetectCapabilities strict
类型:uint32
在 fuchsia.hardware.audio/plug.fidl 中定义
| 名称 | 值 | 说明 |
|---|---|---|
HARDWIRED |
0 |
驱动程序已硬连线(将始终插接)。 |
CAN_ASYNC_NOTIFY |
1 |
驱动程序能够异步通知插头状态变化。 |
SampleFormat 严格
类型:uint8
在 fuchsia.hardware.audio/pcm_format.fidl 中定义
| 名称 | 值 | 说明 |
|---|---|---|
PCM_SIGNED |
1 |
有符号整数线性脉冲编码调制样本,采用主机字节序。 |
PCM_UNSIGNED |
2 |
无符号整数线性脉冲编码调制样本,采用主机字节序。 |
PCM_FLOAT |
3 |
浮点样本,按照 IEEE-754 标准进行编码。 |
SingularUniqueId 灵活
类型:uint8
在 fuchsia.hardware.audio/unique_id.fidl 中定义
标识系统中的唯一设备。 这些设备的 UniqueId 由枚举值后跟 (UNIQUE_ID_SIZE - 1) 个零组成。
| 名称 | 值 | 说明 |
|---|---|---|
DSP |
0 |
|
BUILTIN_SPEAKER |
1 |
|
BUILTIN_HEADPHONE_JACK |
2 |
|
BUILTIN_MICROPHONE |
3 |
|
BUILTIN_HEADSET_JACK |
4 |
TABLES
AllocateVmosConfig
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
min_vmo_size |
uint64
|
每个 VMO 所需的最小大小(以字节为单位)。 必填。 |
2 |
vmo_count |
uint32
|
要分配的 VMO 数量。 必填。 |
ChannelAttributes
在 fuchsia.hardware.audio/pcm_format.fidl 中定义
整个渠道配置中单个渠道的规范。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
min_frequency |
uint32
|
此渠道保证发出(或捕获)的最低频次(以 Hz 为单位)。
如果未包含 可选。 |
2 |
max_frequency |
uint32
|
此渠道保证发出的(或捕获的)最大频率(以 Hz 为单位)。如果未包含 可选。 |
ChannelSet
在 fuchsia.hardware.audio/pcm_format.fidl 中定义
渠道配置的规范。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
attributes |
vector<ChannelAttributes>:64
|
描述相应频道集的属性。
此向量的大小定义了相应 必填。 |
CodecFormatInfo
在 fuchsia.hardware.audio/codec.fidl 中定义
编解码器格式信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
external_delay |
zx/Duration
|
驱动程序针对所选格式对流水线中存在的外部延迟(以纳秒为单位)的最佳估计值。在跨多个实体(例如设备)精确同步演示时,应考虑外部延迟。如果不包含,则 可选。 |
2 |
turn_on_delay |
zx/Duration
|
驱动程序对硬件在发出 可选。 |
3 |
turn_off_delay |
zx/Duration
|
驱动程序对硬件在发出 可选。 |
CodecProperties
在 fuchsia.hardware.audio/codec.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
is_input |
bool
|
驱动程序类型是输入 (true) 还是输出 (false)。如果未包含,则驱动程序可同时用于输入和输出。 可选。 |
2 |
manufacturer |
string:256
|
制造商名称的界面字符串。如果未包含,则表示制造商未指定。 如果包含此字符串,则该字符串不得为空。 可选。 |
3 |
product |
string:256
|
产品名称的界面字符串。如果未包含,则表示未指定商品名称。 如果包含此字符串,则该字符串不得为空。 可选。 |
4 |
unique_id |
UniqueId
|
相应编解码器的唯一标识符。如果未包含,则表示相应编解码器没有唯一 ID。
如需了解有关特定预定义值和范围的注意事项,请参阅 可选。 |
5 |
plug_detect_capabilities |
PlugDetectCapabilities
|
插头检测功能。 必填。 |
CompositeProperties
在 fuchsia.hardware.audio/composite.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
2 |
manufacturer |
string:256
|
制造商名称的界面字符串。如果未设置,则表示制造商未知。 如果包含此字符串,则该字符串不得为空。 可选。 |
3 |
product |
string:256
|
产品名称的界面字符串。如果未设置,则商品名称未知。 如果包含此字符串,则该字符串不得为空。 可选。 |
4 |
unique_id |
UniqueId
|
唯一标识符。如果未包含,则此设备没有唯一 ID。
如需了解有关特定预定义值和范围的注意事项,请参阅 可选。 |
5 |
clock_domain |
ClockDomain
|
相应硬件运行的时钟网域的标识符。如果两个硬件设备具有相同的时钟域,则它们的时钟速率相同且完全同步。虽然这两个时钟的速率相同,但时钟位置可能会相互偏移任意(但固定)量。clock_domain 通常来自系统级实体,例如平台总线或全局时钟树。 有两个特殊值:
如果网域不是 必填。 |
DaiProperties
在 fuchsia.hardware.audio/dai.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
is_input |
bool
|
驱动程序类型是输入 (true) 还是输出 (false) 必填。 |
2 |
manufacturer |
string:256
|
制造商名称的界面字符串。如果未包含,则表示制造商未指定。 如果包含此字符串,则该字符串不得为空。 可选。 |
3 |
product_name |
string:256
|
产品名称的界面字符串。如果未包含,则表示未指定商品名称。 如果包含此字符串,则该字符串不得为空。 可选。 |
4 |
unique_id |
UniqueId
|
DAI 的唯一标识符。如果未包含,则表示此 DAI 没有唯一 ID。
如需了解有关特定预定义值和范围的注意事项,请参阅 可选。 |
5 |
clock_domain |
ClockDomain
|
相应硬件运行的时钟网域的标识符。如果两个硬件设备具有相同的时钟域,则它们的时钟速率相同且完全同步。虽然这两个时钟的速率相同,但时钟位置可能会相互偏移任意(但固定)量。clock_domain 通常来自系统级实体,例如平台总线或全局时钟树。 有两个特殊值:
如果网域不是 必填。 |
DelayInfo
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
由驱动程序返回的延迟信息。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
internal_delay |
zx/Duration
|
驱动程序对所抽象的硬件内部延迟的最佳估计值(针对所选格式)。 “内部”是指 DAI 互连和环形缓冲区之间的硬件(例如 SoC 音频子系统),而“外部”是指任何 DAI 互连远端的硬件(例如硬件编解码器)。 对于播放期间的给定帧,这是指驱动程序将其从环形缓冲区复制出来后,在退出任何互连之前发生的任何延迟。 在录制期间,对于给定的帧,这是指该帧进入互连后、驱动程序将其移入环形缓冲区之前的任何延迟。 客户端在确定最低提前时间(在播放期间)和最低捕获延迟时间(在捕获期间)的要求时,必须考虑 此延迟不得包括进出环形缓冲区的数据复制所需的临时缓冲所增加的固有延迟,该延迟包含在 必填。 |
2 |
external_delay |
zx/Duration
|
驱动程序对硬件(它抽象的)外部延迟的最佳估计值(针对所选格式)。 “外部”是指任何 DAI 互连远端的硬件(例如硬件编解码器),而“内部”是指 DAI 互连和环形缓冲区之间的硬件(例如 SoC 音频子系统)。 客户端在确定最低提前时间(在播放期间)和最低捕获延迟时间(在捕获期间)的要求时,必须考虑 如果未包含,则 与 可选。 |
编码
在 fuchsia.hardware.audio/encoding.fidl 中定义
编码音频串流的格式规范。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
decoded_channel_count |
uint32
|
解码后的视频流的声道数。 必填。 |
2 |
decoded_frame_rate |
uint32
|
解码后的视频流的帧速率。这是解码器的提示。 可选。 |
3 |
average_encoding_bitrate |
uint32
|
视频流的平均比特率(以每秒传输的位数表示)。 必填。 |
4 |
encoding_type |
EncodingType
|
相应直播的编码类型。 必填。 |
格式
在 fuchsia.hardware.audio/format.fidl 中定义
已弃用:请改用 Format2。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
pcm_format |
PcmFormat
|
GainState
在 fuchsia.hardware.audio/stream_config.fidl 中定义
客户端请求或驱动程序返回的增益状态。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
muted |
bool
|
当前静音状态。如果未包含,则状态为未静音。 可选。 |
2 |
agc_enabled |
bool
|
当前自动增益控制 (AGC) 状态。如果不包含,则停用 AGC。 可选。 |
3 |
gain_db |
float32
|
当前增益(以分贝为单位)。 必填。 |
HealthState
在 fuchsia.hardware.audio/health.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
healthy |
bool
|
驱动程序目前运行状况良好。 如果未包含此字段,则不会提供任何健康信息。 这样一来,驱动程序便可在自身没有足够的功能或资源来恢复的情况下(例如无法通过 GPIO 或对电源子系统进行控制来关闭硬件电源),发出健康状态信号。 可选。 |
PacketStreamControlSetPacketStreamSinkRequest 资源
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
stream |
client_end:PacketStreamSink
|
PacketStreamControl_GetPacketStreamSink_Response 资源
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
stream |
client_end:PacketStreamSink
|
PacketStreamProperties
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
数据包流的属性。数据包流创建后,这些值不会发生变化。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
needs_cache_flush_or_invalidate |
bool
|
如果设置为 true,则表示数据包流在不同的缓存一致性网域中运行。客户端必须确保在输出期间将数据写入刷新到主内存,或在输入期间使数据无效。 如果设置为 false,则服务器和客户端位于同一一致性网域中。仍需要同步(例如栅栏)来对读取和写入操作进行排序。 必填。 |
2 |
supported_buffer_types |
BufferType
|
相应驱动程序支持的缓冲区方法。 必填。 |
PacketStreamSinkPutPacketRequest 资源
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
payload |
DataTransfer
|
相应数据包的载荷位置。 必填。 |
PacketStreamSink_PutPacket_Response
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|
PcmSupportedFormats
在 fuchsia.hardware.audio/pcm_format.fidl 中定义
支持 PCM 音频的格式。每个帧都包含一个或多个(通道数)个连续存储的样本。在为每个样本分配的 bytes_per_sample 中,valid_bits_per_sample 位数据存储在最高有效位(左对齐)部分。
系统支持每个向量中列出的所有值。这意味着交叉产品:一个向量中的任何列出项都支持与另一个向量中的任何列出项组合使用。
如果驱动程序支持的并非所有组合都可以用一个 PcmSupportedFormats 表来描述,GetSupportedFormats 必须返回包含多个 SupportedFormats 条目的向量。
如需了解详情,请参阅音频驱动程序流式传输接口。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
channel_sets |
vector<ChannelSet>:64
|
可能支持的 必填。 |
2 |
sample_formats |
vector<SampleFormat>:3
|
支持的可能 必填。 |
3 |
bytes_per_sample |
vector<uint8>:8
|
为每个样本分配的可能字节数的向量。值必须按升序排列。 必填。 |
4 |
valid_bits_per_sample |
vector<uint8>:8
|
向量,包含由 必填。 |
5 |
frame_rates |
vector<uint32>:64
|
支持的可能帧速率的向量。值必须按升序排列。 必填。 |
PlugState
在 fuchsia.hardware.audio/plug.fidl 中定义
驱动程序返回的插头状态。
如果驱动程序报告的 plug_detect_capabilities 等于 HARDWIRED,则驱动程序应仅在首次调用 WatchPlugState 时做出响应,并将 plugged 设置为 true,将 plug_state_time 设置为时间“0”。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
plugged |
bool
|
驱动程序目前已插入。必需 |
2 |
plug_state_time |
zx/Time
|
为相应结构体其余字段中提供的信息添加时间戳。必填。 |
RegisterVmosConfig 资源
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
vmo_infos |
VmoInfos
|
要向驱动程序注册的 VMO 的列表。 必填。 |
RingBufferProperties
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
环形缓冲区的属性。环形缓冲区创建后,这些值不会发生变化。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
3 |
needs_cache_flush_or_invalidate |
bool
|
如果设置为 true,则表示环形缓冲区在不同的缓存一致性网域中运行,因此客户端必须确保其数据写入在播放期间完全刷新到主内存,或者在捕获期间在任何读取之前使环形缓冲区的视图失效。这是因为可能存在绕过 CPU 读取/写入主内存的 CPU 外部硬件。 设置为 false 时,表示环形缓冲区在与 CPU 相同的缓存一致性网域中运行,因此驱动程序不需要刷新/使环形缓冲区失效。请注意,在这种情况下,驱动程序和客户端仍必须同步其数据访问,例如在读取之前插入适当的获取栅栏,在写入之后插入释放栅栏,或者(更常见的是)遵循环形缓冲区行为中所述的生产者/消费者模式。 必填。 |
4 |
turn_on_delay |
zx/Duration
|
驱动程序对硬件在通道由 驱动程序估计,在 可选。 |
5 |
driver_transfer_bytes |
uint32
|
驱动程序在使用或生成环形缓冲区内容时所用的临时缓冲区或 FIFO 的大小(以字节为单位)。 环形缓冲区行为中详细介绍了
必填。 新增:27
|
StreamProperties
在 fuchsia.hardware.audio/stream_config.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
unique_id |
UniqueId
|
唯一标识符。如果未包含,则此 StreamConfig 没有唯一 ID。
如需了解有关特定预定义值和范围的注意事项,请参阅 可选。 |
2 |
is_input |
bool
|
驱动程序类型是输入 (true) 还是输出 (false) 必填。 |
3 |
can_mute |
bool
|
获得静音功能。如果不包含,StreamConfig 将无法静音。 可选。 |
4 |
can_agc |
bool
|
自动增益控制 (AGC) 功能。如果不包含,StreamConfig 就无法进行 AGC。 可选。 |
5 |
min_gain_db |
float32
|
以分贝为单位的最小增益。 必填。 |
6 |
max_gain_db |
float32
|
最大增益(以分贝为单位)。 必填。 |
7 |
gain_step_db |
float32
|
增益步长(以分贝为单位),此值不得为负值,但可以为零,以表示有效连续的值范围。不得超过 必填。 |
8 |
plug_detect_capabilities |
PlugDetectCapabilities
|
插头检测功能。 必填。 |
9 |
manufacturer |
string:256
|
制造商名称的界面字符串。如果未包含,则表示制造商未指定。 如果包含此字符串,则该字符串不得为空。 可选。 |
10 |
product |
string:256
|
产品名称的界面字符串。如果未包含,则表示未指定商品名称。 如果包含此字符串,则该字符串不得为空。 可选。 |
11 |
clock_domain |
ClockDomain
|
相应硬件运行的时钟网域的标识符。如果两个硬件设备具有相同的时钟域,则它们的时钟速率相同且完全同步。虽然这两个时钟的速率相同,但时钟位置可能会相互偏移任意(但固定)量。clock_domain 通常来自系统级实体,例如平台总线或全局时钟树。 有两个特殊值:
如果网域不是 必填。 |
SupportedEncodings
在 fuchsia.hardware.audio/encoding.fidl 中定义
支持的编码音频格式。
此表定义了一组有效的配置。所有字段都是独立的,这意味着它们之间存在叉积关系:任何列出的 channel_set 都支持任何列出的 frame_rate 和任何列出的 encoded_type。
如果设备支持具有不同速率/声道限制的多个编码器(例如,AAC 支持 48kHz,但 SBC 仅支持 44.1kHz),则设备必须在 SupportedFormats2 向量中将它们报告为单独的条目。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
decoded_channel_sets |
vector<ChannelSet>:64
|
可能支持的 此向量中的每个条目都必须描述一个唯一的渠道数量。例如,此向量不能包含两个不同的 必填。 |
2 |
decoded_frame_rates |
vector<uint32>:64
|
支持的可能帧速率的向量。 如果存在,则必须包含至少一个值。 值必须按升序排列。 可选。 |
3 |
min_encoding_bitrate |
uint32
|
视频流的最低编码比特率(以每秒传输的位数表示)。 如果同时存在这两个参数,则不得超过“max_encoding_bitrate”。 可选。 |
4 |
max_encoding_bitrate |
uint32
|
相应视频流的最大编码比特率(以每秒传输的位数表示)。 如果两者都存在,则不能小于“min_encoding_bitrate”。 可选。 |
5 |
encoding_types |
vector<EncodingType>:64
|
支持上述配置的编码器类型。 必须包含至少一个值。此向量中的值必须是唯一的。 必填。 |
SupportedFormats
在 fuchsia.hardware.audio/format.fidl 中定义
已弃用:请改用 SupportedFormats2。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
pcm_supported_formats |
PcmSupportedFormats
|
VmoInfo 资源
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
用于注册 VMO 的 VMO 信息。用于在 RegisterVmos 和 AllocateVmos 中将 VMO 句柄与唯一 ID 配对。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
id |
VmoId
|
与 VMO 对应的 ID。 必填。 |
2 |
vmo |
handle<vmo>
|
VMO 的句柄。 必填。 |
VmoTransfer 资源
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
此元素描述包含音频数据的 VMO 部分。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
vmo_id |
VmoId
|
之前注册或分配的 VMO 的 ID。 必填。 |
2 |
vmo_offset |
uint64
|
VMO 中的偏移量,用于开始读取或写入。 这是相对于相应 VMO 的开始时间而言的。 必填。 |
3 |
payload_size |
uint64
|
要从此 VMO 区域读取/写入的字节数。 必填。 |
UNIONS
Codec_GetDaiFormats_Result strict
在 fuchsia.hardware.audio/codec.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Codec_GetDaiFormats_Response
|
|
2 |
err |
zx/Status
|
Codec_SetDaiFormat_Result 严格
在 fuchsia.hardware.audio/codec.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Codec_SetDaiFormat_Response
|
|
2 |
err |
zx/Status
|
Composite_CreatePacketStream_Result 严格
在 fuchsia.hardware.audio/composite.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Composite_CreatePacketStream_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_CreateRingBuffer_Result 严格
在 fuchsia.hardware.audio/composite.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Composite_CreateRingBuffer_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_GetDaiFormats_Result strict
在 fuchsia.hardware.audio/composite.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Composite_GetDaiFormats_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_GetPacketStreamFormats_Result 严格
在 fuchsia.hardware.audio/composite.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Composite_GetPacketStreamFormats_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_GetProperties_Result strict
在 fuchsia.hardware.audio/composite.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Composite_GetProperties_Response
|
|
3 |
framework_err |
internal
|
Composite_GetRingBufferFormats_Result 严格
在 fuchsia.hardware.audio/composite.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Composite_GetRingBufferFormats_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_Reset_Result 严格
在 fuchsia.hardware.audio/composite.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Composite_Reset_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_SetDaiFormat_Result 严格
在 fuchsia.hardware.audio/composite.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Composite_SetDaiFormat_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
DaiFrameFormat strict
在 fuchsia.hardware.audio/dai_format.fidl 中定义
标准或自定义帧格式。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
frame_format_standard |
DaiFrameFormatStandard
|
DAI 中所有样本的格式类型,列于 |
2 |
frame_format_custom |
DaiFrameFormatCustom
|
DAI 中所有样本的格式类型,在 |
Dai_GetDaiFormats_Result strict
在 fuchsia.hardware.audio/dai.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Dai_GetDaiFormats_Response
|
|
2 |
err |
zx/Status
|
Dai_GetRingBufferFormats_Result strict
在 fuchsia.hardware.audio/dai.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Dai_GetRingBufferFormats_Response
|
|
2 |
err |
zx/Status
|
DataTransfer 灵活 资源
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
要转移的数据。支持两种数据传送方式,分别对应于 DataTransfer 联合体的两个成员:
-
vmo_transfer:驱动程序之前已知的 VMO 中的区域。此 VMO 必须已通过
PacketStreamControl.RegisterVmos(如果由客户端分配)或PacketStreamControl.AllocateVmos(如果由驱动程序分配)建立。未来的请求会通过唯一的vmo_id引用此缓冲区。由于 VMO 可在多个请求中重复使用,因此固定/映射的一次性费用会分摊。 -
data:载荷直接在消息中提供。此模式适用于小规模传输或控制信息,而不适用于高吞吐量流式传输。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
vmo_transfer |
VmoTransfer
|
数据存储在已注册 VMO 的区域中。要求 |
2 |
inline_data |
vector<uint8>:8192
|
嵌入式数据缓冲区。
需要 |
格式 2 灵活
在 fuchsia.hardware.audio/format.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
pcm_format |
PcmFormat
|
线性 PCM(未压缩)样本的格式。 |
2 |
encoding |
Encoding
|
编码音频的格式。 |
PacketStreamControl_AllocateVmos_Result 严格 资源
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_AllocateVmos_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_DeallocateVmos_Result strict
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_DeallocateVmos_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_GetPacketStreamSink_Result strict resource
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_GetPacketStreamSink_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_GetProperties_Result strict
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_GetProperties_Response
|
|
3 |
framework_err |
internal
|
PacketStreamControl_RegisterVmos_Result strict
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_RegisterVmos_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_SetPacketStreamSink_Result 严格
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_SetPacketStreamSink_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_Start_Result 严格
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_Start_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_Stop_Result 严格
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_Stop_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_UnregisterVmos_Result 严格
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_UnregisterVmos_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamSink_FlushPackets_Result 严格
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamSink_FlushPackets_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamSink_PutPacket_Result 严格
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
PacketStreamSink_PutPacket_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
RingBuffer_GetVmo_Result 严格 资源
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
RingBuffer_GetVmo_Response
|
|
2 |
err |
GetVmoError
|
RingBuffer_SetActiveChannels_Result strict
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
RingBuffer_SetActiveChannels_Response
|
|
2 |
err |
zx/Status
|
RingBuffer_WatchDelayInfo_Result strict
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
RingBuffer_WatchDelayInfo_Response
|
|
3 |
framework_err |
internal
|
SupportedFormats2 灵活
在 fuchsia.hardware.audio/format.fidl 中定义
相应设备支持的所有可能格式。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
pcm_supported_formats |
PcmSupportedFormats
|
支持的线性 PCM(未压缩)采样格式,带有属性。 |
2 |
supported_encodings |
SupportedEncodings
|
非 LPCM 编码音频(例如 AAC、MP3)支持的格式。 |
BITS
BufferType flexible
类型:uint64
在 fuchsia.hardware.audio/packet_stream.fidl 中定义
相应流支持的缓冲区所有权/转移类型。 驱动程序可以支持多个值。
| 名称 | 值 | 说明 |
|---|---|---|
CLIENT_OWNED |
1 | 客户端分配 VMO 并将其注册到驱动程序。 |
DRIVER_OWNED |
2 | 驱动程序分配 VMO 并将句柄传递给客户端。 |
INLINE |
4 | 数据以内嵌方式在 FIDL 消息中发送。 它可以单独使用(独立),无需分配或注册 VMO,也可以与包含其他缓冲区类型的数据包混合使用。 |
常量
别名
| 名称 | 值 | 说明 |
|---|---|---|
| ClockDomain |
uint32 |
|
| ElementId |
uint64 |
|
| TopologyId |
uint64 |
|
| UniqueId |
array[UNIQUE_ID_SIZE] |
以 0x42、0x54 等(或 ASCII 中的 |
| VmoId |
uint64 |
添加了:HEAD
|
| VmoInfos |
vector[VMO_VECTOR_MAX] |
添加了:HEAD
|
服务
CodecConnectorService
在 fuchsia.hardware.audio/codec_connector.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| codec_connector |
fuchsia.hardware.audio/CodecConnector
|
渠道 |
CodecService
在 fuchsia.hardware.audio/codec.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| 编解码器 |
fuchsia.hardware.audio/Codec
|
渠道 |
CompositeConnectorService
在 fuchsia.hardware.audio/composite_connector.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| composite_connector |
fuchsia.hardware.audio/CompositeConnector
|
渠道 |
DaiConnectorService
在 fuchsia.hardware.audio/dai_connector.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| dai_connector |
fuchsia.hardware.audio/DaiConnector
|
渠道 |
DaiService
在 fuchsia.hardware.audio/dai.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| dai |
fuchsia.hardware.audio/Dai
|
渠道 |
DeviceService
在 fuchsia.hardware.audio/composite.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| 设备 |
fuchsia.hardware.audio/Composite
|
渠道 |
StreamConfigConnectorInputService
在 fuchsia.hardware.audio/stream_config_connector.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| stream_config_connector |
fuchsia.hardware.audio/StreamConfigConnector
|
渠道 |
StreamConfigConnectorOutputService
在 fuchsia.hardware.audio/stream_config_connector.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| stream_config_connector |
fuchsia.hardware.audio/StreamConfigConnector
|
渠道 |
StreamConfigConnectorService
在 fuchsia.hardware.audio/stream_config_connector.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| stream_config_connector |
fuchsia.hardware.audio/StreamConfigConnector
|
渠道 |
StreamConfigService
在 fuchsia.hardware.audio/stream_config.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| stream_config |
fuchsia.hardware.audio/StreamConfig
|
渠道 |