PROTOCOLS
编解码器
在 fuchsia.hardware.audio/codec.fidl 中定义
有关概述,请参阅 [音频编解码器接口]:
弃用
不再受支持,请改用 音频复合音频 使用一个 DAI 但无环形缓冲区,请参阅 音频驱动程序架构
GetDaiFormats
检索该编解码器支持的 DAI 格式(如果在该编解码器时不可用) 可能会以错误状态回复,控制器可能稍后重试。 检索多个 DaiSupportedFormats 允许 可以支持 DaiSupportedFormats 中的参数组合。
请求
<空>
响应
名称 | 类型 |
---|---|
payload |
Codec_GetDaiFormats_Result
|
GetHealthState
检索顶级运行状况。 驾驶员未及时响应可以作为驾驶员健康状况不佳的征兆。
请求
<空>
响应
名称 | 类型 |
---|---|
state |
HealthState
|
GetProperties
检索顶级静态属性。
请求
<空>
响应
名称 | 类型 |
---|---|
properties |
CodecProperties
|
IsBridgeable
返回编解码器是否可桥接。
弃用
不再受支持,桥接配置在运行时无法再更改。 驱动程序仍可配置为在桥接模式下运行,也可配置为在启动时不运行。
请求
<空>
响应
名称 | 类型 |
---|---|
supports_bridged_mode |
bool
|
重置
重置编解码器。
重置完成后,Reset
会返回。如果司机无法成功重置
编解码器,则它会关闭编解码器协议通道,在这种情况下,客户端可能会获得新的
编解码器协议通道,然后重试。
请求
<空>
响应
<空>
SetBridgedMode
设置编解码器的桥接模式。此方法是必需的,但只需在以下情况下执行操作:
编解码器通过回复 IsBridgeable
指定的桥接模式。
弃用
不再受支持,桥接配置在运行时无法再更改。 驱动程序仍可配置为在桥接模式下运行,也可配置为在启动时不运行。
请求
名称 | 类型 |
---|---|
enable_bridged_mode |
bool
|
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 时间轴,
如果驱动程序无法成功启动编解码器,则会关闭编解码器协议通道。
在这种情况下,客户端可能会获取新的编解码器协议通道并重试。
请求
<空>
响应
名称 | 类型 |
---|---|
start_time |
zx/Time
|
停止
停止编解码器操作。
将编解码器配置为停止时,Stop
会返回。此方法不会等待
让硬件实际停止播放/捕获(即,不受 turn_off_delay
影响)
),也不会在返回的 stop_time
中反映任何此类延迟。
stop_time
表示驱动程序完成编解码器配置停止的时间(按测量值进行衡量)
CLOCK_MONOTONIC 时间轴,
如果驱动程序无法成功将编解码器配置为停止,则会关闭编解码器
协议通道,在这种情况下,客户端可能会获取新的编解码器协议通道并重试。
请求
<空>
响应
名称 | 类型 |
---|---|
stop_time |
zx/Time
|
WatchPlugState
通过挂起获取来获取插头检测状态。司机会回复第一条
客户端发送的 WatchPlugState
。驱动程序不会响应后续客户端
WatchPlugState
调用,直到插头状态与最近报告的状态不同。
请求
<空>
响应
名称 | 类型 |
---|---|
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
,以便为 RING_BUFFER
选择环形缓冲区格式
processing_element_id
指定的处理元素。格式基于
驱动程序在 GetRingBufferFormats
中提供的相应参数、客户端支持的功能,以及
任何其他要求返回的 ring_buffer
渠道用于访问和控制
音频缓冲区。
如果 processing_element_id
与返回的 ID 不匹配,则返回 INVALID_ARGS
上传者:GetElements
。
如果由 ID 表示的元素的 ElementType
不是WRONG_TYPE
RING_BUFFER
。
请求
名称 | 类型 |
---|---|
processing_element_id |
ElementId
|
format |
Format
|
ring_buffer |
server_end<RingBuffer>
|
响应
名称 | 类型 |
---|---|
payload |
Composite_CreateRingBuffer_Result
|
GetDaiFormats
检索 DAI_INTERCONNECT
处理元素支持的 DAI 格式
此驱动程序支持的拓扑中(由 GetElements
从
fuchsia.hardware.audio.signalprocessing.
如果 DAI 格式当时不可用,则客户端返回 SHOULD_WAIT
稍后重试。
如果 processing_element_id
与返回的 ID 不匹配,则返回 INVALID_ARGS
上传者:GetElements
。
如果由 ID 表示的元素的 ElementType
不是WRONG_TYPE
DAI_INTERCONNECT
。
检索多个 DaiSupportedFormats
适用于以下情况的排他组合:
可能支持 SupportedFormats 中的参数。
请求
名称 | 类型 |
---|---|
processing_element_id |
ElementId
|
响应
名称 | 类型 |
---|---|
payload |
Composite_GetDaiFormats_Result
|
GetHealthState
检索顶级运行状况。 驾驶员未及时响应可以作为驾驶员健康状况不佳的征兆。
请求
<空>
响应
名称 | 类型 |
---|---|
state |
HealthState
|
GetProperties
检索顶级静态属性。
请求
<空>
响应
名称 | 类型 |
---|---|
properties |
CompositeProperties
|
GetRingBufferFormats
检索 RING_BUFFER
处理元素支持的环形缓冲区格式
此驱动程序支持的拓扑中(由 GetElements
从
fuchsia.hardware.audio.signalprocessing.
如果当时没有可用的环形缓冲区格式,则返回 SHOULD_WAIT
,
客户端可以稍后重试。
如果 processing_element_id
与返回的 ID 不匹配,则返回 INVALID_ARGS
上传者:GetElements
。
如果由 ID 表示的元素的 ElementType
不是WRONG_TYPE
RING_BUFFER
。
检索多个 SupportedFormats
适用于以下情况的排他组合:
SupportedFormats
中的参数可能受支持。
请求
名称 | 类型 |
---|---|
processing_element_id |
ElementId
|
响应
名称 | 类型 |
---|---|
payload |
Composite_GetRingBufferFormats_Result
|
重置
重置硬件,包括所有 DAI 互连和信号处理。
因此,通过CreateRingBuffer
获取的所有频道都将被关闭。
Reset
会在硬件完全重置后返回。此时,客户需要
重新配置所有 DAI 互连、选择信号处理拓扑并重新配置
任何处理元素,并重建任何环形缓冲区。
如果驱动程序无法成功重置硬件,将返回错误,然后关闭 这时,客户端可能会获取新的协议通道并重试。
请求
<空>
响应
名称 | 类型 |
---|---|
payload |
Composite_Reset_Result
|
SetDaiFormat
客户端会发送 SetDaiFormat
,以便为 DAI_INTERCONNECT
选择 DAI 格式
processing_element_id
指定的处理元素。格式基于
驱动程序在 GetDaiFormats
中提供的数据、客户端支持的功能,以及
。
如果 processing_element_id
与返回的 ID 不匹配,则返回 INVALID_ARGS
上传者:GetElements
。
如果由 ID 表示的元素的 ElementType
不是WRONG_TYPE
DAI_INTERCONNECT
。
请求
名称 | 类型 |
---|---|
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 中定义
有关概述,请参阅 音频复合设备:
连接
请连接到 Device
协议。
此方法允许组件在 devhost 的控制范围之外提供 FIDL。
请求
名称 | 类型 |
---|---|
composite_protocol |
server_end<Composite>
|
Dai
在 fuchsia.hardware.audio/dai.fidl 中定义
有关概述,请参阅 数字音频接口。
弃用
不再受支持,请改用 音频复合音频 一个 DAI 和一个环形缓冲区,请参阅 音频驱动程序架构
CreateRingBuffer
客户端会发送 CreateRingBuffer
,以同时选择 DAI 格式和环形缓冲区格式
根据驱动程序在 GetDaiFormats
和 GetRingBufferFormats
中提供的信息,
客户端支持的内容以及任何其他要求ring_buffer
频道是
用于控制音频缓冲区(如果已建立先前的环形缓冲区通道且
则驱动程序必须关闭该(环形缓冲区)通道并尝试
优雅地停止进程中的任何正在进行的流式传输操作。
请求
名称 | 类型 |
---|---|
dai_format |
DaiFormat
|
ring_buffer_format |
Format
|
ring_buffer |
server_end<RingBuffer>
|
GetDaiFormats
检索 DAI 支持的 DAI 格式(如果在 DAI 时不可用)
可能会以错误状态回复,客户端稍后可能会重试。
检索多个 DaiSupportedFormats
适用于以下情况的排他组合:
可能支持 SupportedFormats 中的参数。
请求
<空>
响应
名称 | 类型 |
---|---|
payload |
Dai_GetDaiFormats_Result
|
GetHealthState
检索顶级运行状况。 驾驶员未及时响应可以作为驾驶员健康状况不佳的征兆。
请求
<空>
响应
名称 | 类型 |
---|---|
state |
HealthState
|
GetProperties
检索顶级静态属性。
请求
<空>
响应
名称 | 类型 |
---|---|
properties |
DaiProperties
|
GetRingBufferFormats
检索 DAI 支持的环形缓冲区格式(如果在 DAI 时不可用)
可能会以错误状态回复,客户端稍后可能会重试。
检索多个 SupportedFormats
适用于以下情况的排他组合:
SupportedFormats
中的参数可能受支持。
请求
<空>
响应
名称 | 类型 |
---|---|
payload |
Dai_GetRingBufferFormats_Result
|
重置
重置 DAI 硬件。通过CreateRingBuffer
获取的ring_buffer
频道可能会关闭
由驱动程序提供,在这种情况下,客户端需要获取新的 ring_buffer
。
重置完成后,Reset
会返回。如果驱动程序无法成功重置硬件,
它会关闭 DAI 协议通道,在这种情况下,客户端可能会获取新的 DAI
然后重试。
请求
<空>
响应
<空>
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
检索顶级运行状况。 驾驶员未及时响应可以作为驾驶员健康状况不佳的征兆。
请求
<空>
响应
名称 | 类型 |
---|---|
state |
HealthState
|
RingBuffer
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
GetProperties
顶级静态属性的访问器。
请求
<空>
响应
名称 | 类型 |
---|---|
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
为非零值,驱动程序将向
最多 WatchClockRecoveryPositionInfo
个客户端请求
频率:clock_recovery_notifications_per_ring
。这些通知旨在
用于恢复时钟
请求
名称 | 类型 |
---|---|
min_frames |
uint32
|
clock_recovery_notifications_per_ring |
uint32
|
响应
名称 | 类型 |
---|---|
payload |
RingBuffer_GetVmo_Result
|
SetActiveChannels
通过位掩码设置哪些通道有效。
最低有效位对应于通道索引 0。
位掩码中未设置的通道(位为 0)处于非活动状态。
非活动通道向驱动程序指示其可以关闭与
无效频道。随后 SetActiveChannels
会将无效渠道设为有效渠道
可能会在 turn_on_delay
中引发,以实际重新开始播放/捕获频道。
频道总数是number_of_channels
(以Format
为单位),具体来说
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
。
请求
<空>
响应
名称 | 类型 |
---|---|
start_time |
zx/Time
|
停止
停止环形缓冲区。收到此调用的响应后,系统将不再
在再次调用 Start
之前,系统会发送通知。
如果在 GetVmo
之前调用 Stop
,则必须使用 ZX_ERR_BAD_STATE
关闭通道。
请求
<空>
响应
<空>
WatchClockRecoveryPositionInfo
通过挂起 get 获取环形缓冲区当前位置。司机必须对
客户端的第一次 WatchClockRecoveryPositionInfo
调用,但不会对后续调用进行响应
客户来电,直到位置信息与最近保持一致
向该客户端提供的值司机不得对
WatchClockRecoveryPositionInfo
,直到它回复 Start
命令为止。
在 Start
返回的 start_time
中,位置始终为 0。在这里
以由采样率、采样格式(以及时钟域、
(如果设备与 CLOCK_MONOTONIC
不在同一时钟域中)。
如果 clock_recovery_notifications_per_ring
不为零,驱动程序将回复其
用于恢复时钟的估计位置最多为
频率:clock_recovery_notifications_per_ring
。
只有在调用 GetVmo
之后才能调用 WatchClockRecoveryPositionInfo
,因此
已指定 clock_recovery_notifications_per_ring
。
提交时时间戳必须是单调递增的。
驱动程序将关闭协议通道并显示 ZX_ERR_BAD_STATE
错误(如果存在
此客户端已有待处理的WatchClockRecoveryPositionInfo
。
请求
<空>
响应
名称 | 类型 |
---|---|
position_info |
RingBufferPositionInfo
|
WatchDelayInfo
通过挂起 get 获取延迟相关信息。司机会立即回复
客户端发送的第一个 WatchDelayInfo
。驱动程序不会响应后续客户端
WatchDelayInfo
调用,直到延迟信息与最近报告的内容不同。
如果在第一次调用完成前再次调用 WatchDelayInfo
,
必须关闭渠道并返回错误 ZX_ERR_BAD_STATE
。
请求
<空>
响应
名称 | 类型 |
---|---|
payload |
RingBuffer_WatchDelayInfo_Result
|
StreamConfig
在 fuchsia.hardware.audio/stream_config.fidl 中定义
有关概述,请参阅 音频驱动程序流式传输接口
弃用
不再受支持,请改用 音频复合音频 环形缓冲区,请参阅 音频驱动程序架构
CreateRingBuffer
客户端会发送 CreateRingBuffer
,以根据
驱动程序在 GetSupportedFormats
中提供客户端支持的内容,以及
。ring_buffer
通道用于控制音频缓冲区(如果之前
环形缓冲区通道已建立,并且仍处于活跃状态,驱动程序必须关闭该通道
(环形缓冲区)通道,并尽一切努力正常地停止任何正在进行的流式传输。
操作。
请求
名称 | 类型 |
---|---|
format |
Format
|
ring_buffer |
server_end<RingBuffer>
|
GetHealthState
检索顶级运行状况。 驾驶员未及时响应可以作为驾驶员健康状况不佳的征兆。
请求
<空>
响应
名称 | 类型 |
---|---|
state |
HealthState
|
GetProperties
检索顶级静态属性。
请求
<空>
响应
名称 | 类型 |
---|---|
properties |
StreamProperties
|
GetSupportedFormats
获取指定驱动程序支持的格式。当
可以使用一个 SupportedFormats
来描述驱动程序,但驱动程序会返回多个
SupportedFormats
。例如,如果一个 SupportedFormats
允许
在 48KHz 时进行 32 位采样,在 96KHz 时进行 16 位采样,但不在
96KHz,则驱动程序返回 2 个 SupportedFormats
:<<32bits>,<48KHz>>和
<<16bits>,<96KHz>>。为简单起见,此示例会忽略 rate 和
每个样本的位数。如果驱动程序支持 16 或 32 位采样,
48 或 96KHz,驱动程序会回复 1 个 SupportedFormats
:
<<16bits,32bits>,<48KHz,96KHz>>。
请求
<空>
响应
名称 | 类型 |
---|---|
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
。
请求
<空>
响应
名称 | 类型 |
---|---|
gain_state |
GainState
|
WatchPlugState
通过挂起获取来获取插头检测状态。司机会回复第一条
客户端发送的 WatchPlugState
。驱动程序不会响应后续客户端
WatchPlugState
调用,直到插头状态与最近报告的状态不同。
如果在第一次调用完成之前再次调用 WatchPlugState
,则:
必须关闭协议通道并显示错误 ZX_ERR_BAD_STATE
。
请求
<空>
响应
名称 | 类型 |
---|---|
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 中定义
<空>
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 中定义
<空>
Composite_SetDaiFormat_Response
在 fuchsia.hardware.audio/composite.fidl 中定义
<空>
DaiFormat
在 fuchsia.hardware.audio/dai_format.fidl 中定义
DAI 格式。帧由 number_of_channels
个样本组成,这些样本的 bits_per_sample
位
bits_per_slot
内的数据按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
|
提升或下降 slk 时,数据样本和帧同步输出的时钟。 如果为 true,则竖条在数据和帧同步的上升边缘上拉伸,即 数据将在 Sclk 的下降边缘(Sclk 周期的中间)进行采样。 因此,如果为 false,则数据将在 sclk 的提升边缘进行采样。 |
无默认设置 |
frame_sync_sclks_offset |
int8
|
帧同步变化开头与音频样本之间的间隔数。 例如,对于 I2S 设置为 1,将立体声左对齐设置为 0。 |
无默认设置 |
frame_sync_size |
uint8
|
帧内帧同步的帧数较高。 例如,对于 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
个样本组成
其中包含 valid_bits_per_sample
个最高有效(左对齐)的数据,
bytes_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
|
驱动程序在 CLOCK_MONOTONIC 时间轴上对
播放/捕获指针到达了 |
无默认设置 |
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 个声道。数据从帧同步开始,从低到高逐出 下降边缘对于 第一个通道与第二个通道的 bits_per_channel 值低。 |
STEREO_RIGHT |
4 |
右对齐,2 个声道。对于 第一个通道与第二个通道的 bits_per_channel 值低。 |
TDM1 |
5 |
左对齐,通道数不定,帧同步时开始的数据从低值更改为 在 Sclk 的上升边缘就开始计时。帧同步必须保持高同步状态(正好 1) 循环。 |
TDM2 |
6 |
左对齐,通道数量可变,帧后一个时钟周期开始数据 在 sclk 的上升边缘,从低到高进行同步。帧同步必须 正好保持高一个时钟周期。 添加时间:10
|
TDM3 |
7 |
左对齐,通道数量可变,帧后两个时钟周期开始显示数据 在 sclk 的上升边缘,从低到高进行同步。帧同步必须 正好保持高一个时钟周期。 添加时间: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 协议。 |
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 |
目前无法执行此操作,但如果 调用方将等待前提条件得到满足。 |
GetVmoError 严格
类型:uint32
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
INVALID_ARGS |
1 |
环形缓冲区设置因参数无效(例如min_frames 过大。 |
INTERNAL_ERROR |
2 |
环形缓冲区设置因内部错误失败。 |
LuxeDetectCapabilities 严格
类型: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
|
Driver 目前健康状况良好。 如果未包含此字段,则不会提供健康信息。 这样可让驾驶员在信息不足的情况下发出信号 可以自行恢复的功能或资源,例如无法关闭 通过 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 中定义
环形缓冲区的属性。环形缓冲区创建后,这些值将不再更改。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
external_delay |
zx/Duration
|
驱动程序对其硬件外部延迟的最优估算值(针对所选格式)
抽象。在精确同步时,必须考虑外部延迟
在多个实体(例如设备)间呈现。
如果未添加, 弃用不再需要,因为通过下面的 已移除:20 已弃用:9
|
2 |
fifo_depth |
uint32
|
驱动程序在消耗或生成环时使用的临时缓冲区的大小(以字节为单位)
缓冲区内容。必填。
环形缓冲区内容必须以
如需将 在这种情况下,环形缓冲区数据可能直接由硬件消耗/生成
环形缓冲区数据可以改为由
位于环形缓冲区和音频硬件之间。在此例中,对于
将 弃用不再需要,因为通过下面的 已移除:20 已弃用:9
|
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”从位置 0 开始移动
来自 在播放期间,客户端必须在硬件传输之前写入数据。在拍摄期间, 只有在硬件传输发生后,客户端才能读取捕获的数据。因此,在 播放“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 strict
在 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 strict
在 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 strict
在 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 strict
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RingBuffer_SetActiveChannels_Response
|
|
2 |
err |
zx/Status
|
RingBuffer_WatchDelayInfo_Result 严格
在 fuchsia.hardware.audio/ring_buffer.fidl 中定义
序数 | 变体 | 类型 | 说明 |
---|---|---|---|
1 |
response |
RingBuffer_WatchDelayInfo_Response
|
|
3 |
framework_err |
internal
|
常量
名称 | 值 | 类型 | 说明 |
---|---|---|---|
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 |
ALIASES
名称 | 值 | 说明 |
---|---|---|
ClockDomain |
uint32 |
|
ElementId |
uint64 |
|
TopologyId |
uint64 |
服务
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
|
频道 |