协议
编解码器
在 fuchsia.hardware.audio/codec.fidl 中定义
如需简要了解,请参阅 [音频编解码器接口]。
弃用
不再受支持,请改用具有一个 DAI 且没有环形缓冲区的音频复合材料,请参阅音频驱动程序架构
GetDaiFormats
检索编解码器支持的 DAI 格式(如果当时不可用),编解码器可能会回复错误状态且控制器可能会稍后重试。检索多个 DaiSupportedFormats 允许支持对 DaiSupportedFormats 中的参数进行独占组合。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
payload |
Codec_GetDaiFormats_Result
|
GetHealthState
检索顶级运行状况。驾驶员没有及时回应可以表明驾驶员健康状况不佳。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
state |
HealthState
|
GetProperties
检索顶级静态属性。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
properties |
CodecProperties
|
IsBridgeable
返回编解码器是否可桥接。
弃用
不再受支持,无法再在运行时更改桥接配置。驱动程序仍可配置为在启动时运行或不以桥接模式运行。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
supports_bridged_mode |
bool
|
重置
重置编解码器。重置完成后,Reset
会返回。如果驱动程序无法成功重置编解码器,则会关闭编解码器协议通道,在这种情况下,客户端可能会获取新的编解码器协议通道并重试。
请求
<EMPTY>
响应
<EMPTY>
SetBridgedMode
设置编解码器的桥接模式。此方法是必需的,但只有在编解码器对 IsBridgeable
的回复中指明支持桥接模式时,它才需要执行相应操作。
弃用
不再受支持,无法再在运行时更改桥接配置。驱动程序仍可配置为在启动时运行或不以桥接模式运行。
请求
名称 | 类型 |
---|---|
enable_bridged_mode |
bool
|
SetDaiFormat
设置要在控制器与编解码器之间的接口中使用的 DAI 格式。如果在请求时不受支持(例如对于可移除硬件),则返回错误。
请求
名称 | 类型 |
---|---|
format |
DaiFormat
|
响应
名称 | 类型 |
---|---|
payload |
Codec_SetDaiFormat_Result
|
SignalProcessingConnect
连接到 SignalProcessing
协议。
可以支持多个连接,如果不支持新的连接请求(即,已创建最大连接数(例如一个),则 protocol
通道(而不是调用 SignalProcessingConnect
的通道)将以 ZX_ERR_ALREADY_BOUND
epitaph 的形式关闭。如果完全不支持信号处理,则 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 中定义
如需简要了解编解码器协议,请参阅编解码器接口
弃用
不再受支持,请改用具有一个 DAI 且没有环形缓冲区的音频复合材料,请参阅音频驱动程序架构
连接
连接到编解码器协议服务器。 这种指向编解码器协议的间接使我们能够支持独立的编解码器客户端连接。
请求
名称 | 类型 |
---|---|
codec_protocol |
server_end<Codec>
|
复合材料
在 fuchsia.hardware.audio/composite.fidl 中定义
Composite
接口是音频驱动程序公开的 FIDL 协议。Composite
接口是通用接口,允许配置各种音频硬件类型,包括 StreamConfig
、Dai
和 Codec
FIDL 接口支持的类型。Composite
接口更为通用,并在音频子系统内提供更灵活的路由。另请参阅音频驱动程序复合材料
CreateRingBuffer
客户端会发送 CreateRingBuffer
,以便为 processing_element_id
指定的 RING_BUFFER
ENDPOINT
类型处理元素选择环形缓冲区格式。格式取决于驱动程序在 GetRingBufferFormats
中提供的信息、客户端支持的内容以及任何其他要求。
返回的 ring_buffer
通道用于访问和控制驱动程序提供的音频缓冲区。如果 processing_element_id
与 GetElements
返回的 ID 不匹配,则返回 INVALID_ARGS
。如果 ID 表示的元素的 ElementType
不是 EndpointType
RING_BUFFER
下的 ENDPOINT
,则返回 WRONG_TYPE
。
请求
名称 | 类型 |
---|---|
processing_element_id |
uint64
|
format |
Format
|
ring_buffer |
server_end<RingBuffer>
|
响应
名称 | 类型 |
---|---|
payload |
Composite_CreateRingBuffer_Result
|
GetDaiFormats
在 GetElements
从 fuchsia.hardware.audio.signalprocessing 返回且该驱动程序所支持的拓扑中,检索 DAI_INTERCONNECT
ENDPOINT
类型处理元素所支持的 DAI 格式。
如果 DAI 格式不可用,则返回 SHOULD_WAIT
(客户端稍后可能会重试)。如果 processing_element_id
与 GetElements
返回的 ID 不匹配,则返回 INVALID_ARGS
。如果 ID 表示的元素的 ElementType
不是 EndpointType
DAI_INTERCONNECT
的 ENDPOINT
,则返回 WRONG_TYPE
。检索多个 DaiSupportedFormats
支持支持 SupportedFormats 中参数的独占组合的情况。
请求
名称 | 类型 |
---|---|
processing_element_id |
uint64
|
响应
名称 | 类型 |
---|---|
payload |
Composite_GetDaiFormats_Result
|
GetHealthState
检索顶级运行状况。驾驶员没有及时回应可以表明驾驶员健康状况不佳。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
state |
HealthState
|
GetProperties
检索顶级静态属性。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
properties |
CompositeProperties
|
GetRingBufferFormats
在 GetElements
从 fuchsia.hardware.audio.signalprocessing 返回且该驱动程序所支持的拓扑中,检索 RING_BUFFER
ENDPOINT
类型处理元素所支持的环形缓冲区格式。
如果当时没有环形缓冲区格式,则返回 SHOULD_WAIT
,客户端可能会稍后重试。如果 processing_element_id
与 GetElements
返回的 ID 不匹配,则返回 INVALID_ARGS
。如果 ID 表示的元素的 ElementType
不是 EndpointType
RING_BUFFER
的 ENDPOINT
,则返回 WRONG_TYPE
。检索多个 SupportedFormats
支持支持 SupportedFormats
中参数的独占组合的情况。
请求
名称 | 类型 |
---|---|
processing_element_id |
uint64
|
响应
名称 | 类型 |
---|---|
payload |
Composite_GetRingBufferFormats_Result
|
重置
重置硬件,包括所有 DAI 互连和信号处理。
因此,CreateRingBuffer
获取的所有频道都将关闭。
当硬件完全重置时,Reset
会返回。此时,客户端需要重新配置任何 DAI 互连、选择信号处理拓扑并重新配置所有处理元素,并重建所有环形缓冲区。
如果驱动程序无法成功重置硬件,则会返回一个错误,然后关闭协议通道。在这种情况下,客户端可能会获取新的协议通道并重试。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
payload |
Composite_Reset_Result
|
SetDaiFormat
客户端会发送 SetDaiFormat
,以便为 processing_element_id
指定的 DAI_INTERCONNECT
ENDPOINT
类型处理元素选择 DAI 格式。格式取决于驱动程序在 GetDaiFormats
中提供的信息、客户端支持的内容以及任何其他要求。
如果 processing_element_id
与 GetElements
返回的 ID 不匹配,则返回 INVALID_ARGS
。如果 ID 表示的元素的 ElementType
不是 EndpointType
DAI_INTERCONNECT
下的 ENDPOINT
,则返回 WRONG_TYPE
。
请求
名称 | 类型 |
---|---|
processing_element_id |
uint64
|
format |
DaiFormat
|
响应
名称 | 类型 |
---|---|
payload |
Composite_SetDaiFormat_Result
|
SignalProcessingConnect
连接到 SignalProcessing
协议。
可以支持多个连接,如果不支持新的连接请求(即,已创建最大连接数(例如一个),则 protocol
通道(而不是调用 SignalProcessingConnect
的通道)将以 ZX_ERR_ALREADY_BOUND
epitaph 的形式关闭。如果完全不支持信号处理,则 protocol
通道(同样,而不是调用 SignalProcessingConnect
的通道)将以 ZX_ERR_NOT_SUPPORTED
音阶关闭。此方法命名为 SignalProcessingConnect
(而不是 Connect
),因为此协议旨在由系统组合而成,因此名称越详细,越便于区分,并且清晰度更高。
请求
名称 | 类型 |
---|---|
protocol |
server_end<fuchsia.hardware.audio.signalprocessing/SignalProcessing>
|
CompositeConnector
在 fuchsia.hardware.audio/composite_connector.fidl 中定义
如需了解概览,请参阅音频复合设备。
连接
连接到 Device
协议。
此方法允许组件在 devhost 的控制范围之外提供 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
协议。
可以支持多个连接,如果不支持新的连接请求(即,已创建最大连接数(例如一个),则 protocol
通道(而不是调用 SignalProcessingConnect
的通道)将以 ZX_ERR_ALREADY_BOUND
epitaph 的形式关闭。如果完全不支持信号处理,则 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
|
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
参数规范。
如果 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
通过位掩码设置哪些通道为活动通道。
最低有效位对应于通道索引 0。
位掩码中未设置的通道(位为 0)处于非活动状态。非活动通道会向驱动程序表明,它可以关闭与非活动通道相关联的硬件。后续 SetActiveChannels
将非活跃频道设置为活跃状态时,可能会导致 turn_on_delay
实际上重新开始播放/捕获这些频道。通道总数是 Format
中的 number_of_channels
(具体而言是在 PcmFormat
中),即此位掩码最多可设置 number_of_channels
位(最多 64 位)。停用一个、多个或所有通道不会对环形缓冲区执行 Stop
操作。SetActiveChannels
不会更改环形缓冲区有关 Start
/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 执行读取或写入操作,具体取决于 driver_transfer_bytes
中所述的缓冲。
如果在 SetActiveChannels
之前调用 Start
,则默认情况下所有通道都处于活动状态。如果在 GetVmo
之前调用 Start
,则必须使用 ZX_ERR_BAD_STATE
关闭通道。如果在此 RingBuffer 已启动的情况下调用了 Start
,或者如果在第一次调用完成之前第二次调用 Start
,则必须关闭通道并返回 ZX_ERR_BAD_STATE
错误。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
start_time |
zx/Time
|
停止
停止环形缓冲区。收到此调用的响应后,在再次调用 Start
之前,不会再发送位置通知。如果在 GetVmo
之前调用 Stop
,或者如果在第一次调用完成之前第二次调用 Stop
,则必须使用 ZX_ERR_BAD_STATE
关闭通道。
请求
<EMPTY>
响应
<EMPTY>
WatchClockRecoveryPositionInfo
通过挂起 get 获取环形缓冲区当前位置。驱动程序必须响应客户端的第一个 WatchClockRecoveryPositionInfo
调用,但不会响应后续客户端调用,直到位置信息从最近提供给客户端的信息发生变化为止。驱动程序在回复 Start
命令之前不得响应 WatchClockRecoveryPositionInfo
。在 Start
返回的 start_time
中,位置始终为 0。然后,测试将以速率、样本格式(和时钟域,如果设备与 CLOCK_MONOTONIC
不在同一时钟域内)指定的速率运行。如果 clock_recovery_notifications_per_ring
不为零,驱动程序将在回复时提供其估计位置,该位置用于最多以 clock_recovery_notifications_per_ring
频率恢复时钟。WatchClockRecoveryPositionInfo
只能在调用 GetVmo
之后调用,因此指定了 clock_recovery_notifications_per_ring
。传递的时间戳必须为单调递增。如果此客户端已有待处理的 WatchClockRecoveryPositionInfo
,则驱动程序将关闭协议通道并显示 ZX_ERR_BAD_STATE
错误。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
position_info |
RingBufferPositionInfo
|
WatchDelayInfo
通过挂机获取交通延误信息。驱动程序将立即回复客户端发送的第一个 WatchDelayInfo
。在延迟信息从最近报告的内容发生变化之前,驱动程序不会响应后续的客户端 WatchDelayInfo
调用。如果在第一次调用完成之前第二次调用 WatchDelayInfo
,则必须关闭通道并返回 ZX_ERR_BAD_STATE
错误。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
delay_info |
DelayInfo
|
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 位样本,则驱动程序会回复 2 个 SupportedFormats
:<<32bits>,<48KHz>> 和 <<16bits>,<96KHz>>。为简单起见,仅忽略此示例以外的采样率。如果驱动程序支持 48 或 96KHz 的 16 或 32 位样本,则驱动程序会回复 1 个 SupportedFormats
:<<16bits,32bits>,<48KHz,96KHz>>。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
supported_formats |
vector<SupportedFormats>[64]
|
SetGain
客户端对增益状态的更新。
请求
名称 | 类型 |
---|---|
target_state |
GainState
|
SignalProcessingConnect
连接到 SignalProcessing
协议。
可以支持多个连接,如果不支持新的连接请求(即,已创建最大连接数(例如一个),则 protocol
通道(而不是调用 SignalProcessingConnect
的通道)将以 ZX_ERR_ALREADY_BOUND
epitaph 的形式关闭。如果完全不支持信号处理,则 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
协议。
此方法允许组件在 devhost 的控制范围之外提供 FIDL。
请求
名称 | 类型 |
---|---|
protocol |
server_end<StreamConfig>
|
结构
Codec_GetDaiFormats_Response
在 fuchsia.hardware.audio/codec.fidl 中定义
野战 | 类型 | 说明 | 默认 |
---|---|---|---|
formats |
vector<DaiSupportedFormats>[64]
|
无默认取景方式 |
Codec_SetDaiFormat_Response
在 fuchsia.hardware.audio/codec.fidl 中定义
野战 | 类型 | 说明 | 默认 |
---|---|---|---|
state |
CodecFormatInfo
|
无默认取景方式 |
Composite_CreateRingBuffer_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
<EMPTY>
Composite_GetDaiFormats_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
野战 | 类型 | 说明 | 默认 |
---|---|---|---|
dai_formats |
vector<DaiSupportedFormats>[64]
|
无默认取景方式 |
Composite_GetRingBufferFormats_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
野战 | 类型 | 说明 | 默认 |
---|---|---|---|
ring_buffer_formats |
vector<SupportedFormats>[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
|
帧同步更改开始与音频样本之间的 Sclk 数。 例如,将 I2S 设为 1,将立体声左对齐设为 0。 |
无默认取景方式 |
frame_sync_size |
uint8
|
帧内帧同步的 SCL 数量较高。 例如,对于 32 位槽位设置为 32 的 I2S,TDM 通常设置为 1。 |
无默认取景方式 |
DaiSupportedFormats
在 fuchsia.hardware.audio/dai_format.fidl 中定义
DAI 支持的格式。帧由 number_of_channels
样本组成,这些样本在 bits_per_slot
位内包含 bits_per_sample
位数据,以 frame_formats
形式排列。支持每个矢量中列出的所有值。如果驱动程序不支持的所有组合都不能用一个 DaiSupportedFormats
来描述,则 GetDaiSupportedFormats
会在返回的矢量中返回多个 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]
|
每个插槽支持的位数。值必须按升序列出。 |
无默认取景方式 |
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]
|
无默认取景方式 |
PcmFormat
在 fuchsia.hardware.audio/ring_buffer_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
|
无默认取景方式 |
枚举
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 个时钟周期。 添加数量:10
|
TDM3 |
7 |
左对齐,可变通道数,在帧同步从低到高变为时钟周期(在 sclk 的上升边缘)后,数据在两个时钟周期开始同步。帧同步必须保持高电平状态并正好持续 1 个时钟周期。 添加数量:10
|
DaiSampleFormat 严格
类型: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 协议。 |
编解码器 |
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 |
操作目前无法执行,但如果调用方等待满足前提条件,操作可能会成功。 |
GetVmoError 严格
类型:uint32
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
INVALID_ARGS |
1 |
环形缓冲区设置失败,因为参数无效(例如 min_frames 过大)。 |
INTERNAL_ERROR |
2 |
由于内部错误,环形缓冲区设置失败。 |
PlaDetectCapabilities 严格
类型:uint32
在 fuchsia.hardware.audio/plug.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
硬质 |
0 |
驱动程序为固定连接线(始终会接通电源)。 |
CAN_ASYNC_NOTIFY |
1 |
驱动程序能够异步通知插头状态变化。 |
SampleFormat 严格
类型:uint8
在 fuchsia.hardware.audio/ring_buffer_format.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
PCM_SIGNED |
1 |
主机字节序处的有符号整数线性脉冲编码调制样本。 |
PCM_UNSIGNED |
2 |
主机字节顺序处的无符号整数线性脉冲编码调制样本。 |
PCM_FLOAT |
3 |
浮点样本,根据 IEEE-754 标准编码。 |
表
ChannelAttributes
在 fuchsia.hardware.audio/ring_buffer_format.fidl 中定义
整个通道配置中的单个通道的规范。
序数 | 野战 | 类型 | 说明 |
---|---|---|---|
1 |
min_frequency |
uint32
|
保证由此通道发射(或捕获)此通道的最低频率(以 Hz 为单位)。如果未添加 可选。 |
2 |
max_frequency |
uint32
|
保证由此通道发射(或捕获到)此通道的最大频率(以 Hz 为单位)。如果未添加 可选。 |
ChannelSet
在 fuchsia.hardware.audio/ring_buffer_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 |
uint8[16]
|
编解码器的唯一标识符。 如果未添加此字段,则编解码器的唯一 ID 不存在。 可选。 |
5 |
plug_detect_capabilities |
PlugDetectCapabilities
|
插头检测功能。 必选。 |
CompositeProperties
在 fuchsia.hardware.audio/composite.fidl 中定义
序数 | 野战 | 类型 | 说明 |
---|---|---|---|
2 |
manufacturer |
string[256]
|
制造商名称的界面字符串。如果未设置,则制造商未知。 可选。 |
3 |
product |
string[256]
|
商品名称的界面字符串。如果未设置,则产品名称未知。 可选。 |
4 |
unique_id |
uint8[16]
|
唯一标识符。如果未包含此字段,则设备没有唯一 ID。
为实现蓝牙技术的驱动程序预留了以 0x42、0x54...(或 ASCII 中为 可选。 |
5 |
clock_domain |
ClockDomain
|
运行此硬件的时钟域的标识符。如果两个硬件设备具有相同的时钟域,则它们的时钟频率相同且完全同步。虽然这两个时钟具有相同的速率,但时钟位置之间可能会存在任意(但固定)的量的偏差。时钟域通常来自系统级实体,例如平台总线或全局时钟树。 有两个特殊值:
如果网域不是 必选。 |
DaiProperties
在 fuchsia.hardware.audio/dai.fidl 中定义
序数 | 野战 | 类型 | 说明 |
---|---|---|---|
1 |
is_input |
bool
|
驱动程序类型为输入 (true) 或输出 (false) 必选。 |
2 |
manufacturer |
string[256]
|
制造商名称的界面字符串。如果您未添加该属性,则表示制造商未指定。 可选。 |
3 |
product_name |
string[256]
|
商品名称的界面字符串。如果未指定,则未指定产品名称。 可选。 |
4 |
unique_id |
uint8[16]
|
驱动程序的唯一标识符。如果未包含此字段,则没有驱动程序的唯一 ID。 可选。 添加数量:20
|
5 |
clock_domain |
ClockDomain
|
运行此硬件的时钟域的标识符。如果两个硬件设备具有相同的时钟域,则它们的时钟频率相同且完全同步。虽然这两个时钟具有相同的速率,但时钟位置之间可能会存在任意(但固定)的量的偏差。时钟域通常来自系统级实体,例如平台总线或全局时钟树。 有两个特殊值:
如果网域不是 必选。 添加数量:20
|
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/ring_buffer_format.fidl 中定义
序数 | 野战 | 类型 | 说明 |
---|---|---|---|
1 |
pcm_format |
PcmFormat
|
支持未压缩 PCM 样本的格式。 必选。 |
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 关闭硬件或控制电源子系统),发出其运行状况信号。 可选。 |
PcmSupportedFormats
在 fuchsia.hardware.audio/ring_buffer_format.fidl 中定义
支持未压缩 PCM 音频的格式。每一帧由连续存储的一个或多个 (number_of_channels) 个样本组成。在为每个样本分配的 bytes_per_sample
内,valid_bits_per_sample
位数据存储在最高有效(左对齐)部分。支持每个矢量中列出的所有值。如果驱动程序不支持的所有组合都不能用一个 SupportedFormats
或 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
|
为在此结构体其余字段中提供的信息设置时间戳。必选。 |
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
|
使用或生成环形缓冲区内容时驱动程序/硬件使用的临时缓冲区的大小(以字节为单位)。 环形缓冲区内容必须通过临时缓冲区和环形缓冲区之间的数据传输,以 这些数据传输意味着,环形缓冲区中始终存在对客户端来说不安全的部分写入/读取。这个不安全的缓冲区区域在一侧由当前位置“P”定义,在另一侧由“安全指针”位置“S”定义。当环形缓冲区启动后,这两个指针便开始移动。“P”开始从 在播放期间,客户端必须在进行硬件传输之前写入数据。在捕获期间,客户端只能在硬件传输之后读取捕获的数据。因此,在播放期间,“S”始终在“P”之前,而在拍摄期间,“S”始终在“P”之后。 播放在启动环形缓冲区之前,客户端可以安全地写入任何环形缓冲区位置。建议它们至少写入
启动环形缓冲区后,客户端在“P”和“S”之间向环形缓冲区写入数据是不安全的,因为这表示数据已在使用(可能已被消耗)。客户端可以安全地写入环形缓冲区的其余部分(介于“S”和“0/P”之间)。
随着时间的推移,驱动程序/硬件会以
之后,“S”先于“P”封装环形缓冲区。请注意,从 0 到“S”的区域,加上从“P”到环形缓冲区末尾的区域,相加等于
在稳定状态下,指针“P”和“S”之外的任何区域都可以安全写入:
录制记录时,只有客户端可以安全地读取驱动程序/硬件未同时写入的环形缓冲区中的那部分内容。在捕获开始前,它可以读取整个环缓冲区,但驱动程序尚未写入任何内容供客户端读取。这是客户端启动环形缓冲区时的环形缓冲区:
捕获开始后,驱动程序/硬件会获取帧,最终从“0”开始将其第一次数据传输到环形缓冲区。这些传输的大小未知,但最大可达
驱动程序/硬件将至少
之后,“P”会先于环形缓冲区封装,然后才是“S”。请注意,从 0 到“P”的区域,再加上从“S”到环形缓冲区末尾的区域,相加等于
在稳定状态(即进程封装到环形缓冲区)下,指针“S”和“P”之外的任何区域都可以安全地读取:
硬件与软件环形缓冲区数据可以直接由硬件使用/生成,也就是说, 环形缓冲区数据可能由概念上位于环形缓冲区和音频硬件之间的音频驱动程序软件使用/生成。在这种情况下,对于播放来说,
必选。 添加了:HEAD
|
StreamProperties
在 fuchsia.hardware.audio/stream_config.fidl 中定义
序数 | 野战 | 类型 | 说明 |
---|---|---|---|
1 |
unique_id |
uint8[16]
|
唯一标识符。如果不包含,则 StreamConfig 没有唯一 ID。为实现蓝牙技术的驱动程序预留了以 0x42、0x54...(或 ASCII 中为 可选。 |
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
|
运行此硬件的时钟域的标识符。如果两个硬件设备具有相同的时钟域,则它们的时钟频率相同且完全同步。虽然这两个时钟具有相同的速率,但时钟位置之间可能会存在任意(但固定)的量的偏差。时钟域通常来自系统级实体,例如平台总线或全局时钟树。 有两个特殊值:
如果网域不是 必选。 |
SupportedFormats
在 fuchsia.hardware.audio/ring_buffer_format.fidl 中定义
此设备支持的所有可能的格式。
序数 | 野战 | 类型 | 说明 |
---|---|---|---|
1 |
pcm_supported_formats |
PcmSupportedFormats
|
支持未压缩 PCM 样本的格式,包含属性。 必选。 |
联合
Codec_GetDaiFormats_Result 严格
在 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_CreateRingBuffer_Result strict
在 fuchsia.hardware.audio/composite.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Composite_CreateRingBuffer_Response
|
|
2 |
err |
DriverError
|
Composite_GetDaiFormats_Result 严格
在 fuchsia.hardware.audio/composite.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Composite_GetDaiFormats_Response
|
|
2 |
err |
DriverError
|
Composite_GetRingBufferFormats_Result 严格的
在 fuchsia.hardware.audio/composite.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Composite_GetRingBufferFormats_Response
|
|
2 |
err |
DriverError
|
Composite_Reset_Result 严格
在 fuchsia.hardware.audio/composite.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Composite_Reset_Response
|
|
2 |
err |
DriverError
|
Composite_SetDaiFormat_Result 严格
在 fuchsia.hardware.audio/composite.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Composite_SetDaiFormat_Response
|
|
2 |
err |
DriverError
|
DaiFrameFormat 严格
在 fuchsia.hardware.audio/dai_format.fidl 中定义
标准帧格式或自定义帧格式。
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
frame_format_standard |
DaiFrameFormatStandard
|
DAI 中所有样本的格式类型,在 |
2 |
frame_format_custom |
DaiFrameFormatCustom
|
DAI 中所有样本的格式类型,在 |
Dai_GetDaiFormats_Result 严格
在 fuchsia.hardware.audio/dai.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Dai_GetDaiFormats_Response
|
|
2 |
err |
zx/Status
|
Dai_GetRingBufferFormats_Result 严格
在 fuchsia.hardware.audio/dai.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
Dai_GetRingBufferFormats_Response
|
|
2 |
err |
zx/Status
|
RingBuffer_GetVmo_Result 严格 资源
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RingBuffer_GetVmo_Response
|
|
2 |
err |
GetVmoError
|
RingBuffer_SetActiveChannels_Result 严格
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RingBuffer_SetActiveChannels_Response
|
|
2 |
err |
zx/Status
|
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
CLOCK_DOMAIN_EXTERNAL |
4294967295
|
uint32 |
|
CLOCK_DOMAIN_MONOTONIC |
0
|
uint32 |
|
MAX_COUNT_CHANNELS_IN_RING_BUFFER |
64
|
uint32 |
|
MAX_COUNT_CHANNEL_SETS |
64
|
uint32 |
|
MAX_COUNT_DAI_FORMATS |
MAX_COUNT_FORMATS
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_BITS_PER_SAMPLE |
8
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_BITS_PER_SLOT |
8
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_FRAME_FORMATS |
64
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_NUMBER_OF_CHANNELS |
64
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_RATES |
64
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_SAMPLE_FORMATS |
4
|
uint32 |
|
MAX_COUNT_FORMATS |
64
|
uint32 |
|
MAX_COUNT_SUPPORTED_BYTES_PER_SAMPLE |
8
|
uint32 |
|
MAX_COUNT_SUPPORTED_NUMBER_OF_CHANNELS |
64
|
uint32 |
|
MAX_COUNT_SUPPORTED_RATES |
64
|
uint32 |
|
MAX_COUNT_SUPPORTED_SAMPLE_FORMATS |
3
|
uint32 |
|
MAX_COUNT_SUPPORTED_VALID_BITS_PER_SAMPLE |
8
|
uint32 |
|
MAX_DAI_UI_STRING_SIZE |
256
|
uint32 |
|
MAX_UI_STRING_SIZE |
256
|
uint32 |
|
UNIQUE_ID_SIZE |
16
|
uint32 |
别名
名称 | 值 | 说明 |
---|---|---|
ClockDomain |
uint32 |
服务
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
|
频道 |
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
|
频道 |