PROTOCOLS
连接线
在 fuchsia.hardware.audio.signalprocessing/connector.fidl 中定义
如需简要了解信号处理协议,请参阅音频信号处理
SignalProcessingConnect
连接到 SignalProcessing 协议。
如果支持多个连接,但不支持新的连接请求(即已创建最大连接数,例如 1 个),则 protocol 通道(不是调用 SignalProcessingConnect 的通道)将关闭,并带有 ZX_ERR_ALREADY_BOUND 墓志铭。如果完全不支持信号处理,则 protocol 通道(同样,不是调用 SignalProcessingConnect 的通道)将关闭,并带有 ZX_ERR_NOT_SUPPORTED 墓志铭。此方法之所以命名为 SignalProcessingConnect 而不是 Connect,是因为此协议旨在进行组合,因此更详细的名称有助于区分并提高清晰度。
请求
| 名称 | 类型 |
|---|---|
protocol |
server_end:SignalProcessing
|
阅读者
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
此协议是复合音频驱动程序所必需的,但其他音频驱动程序类型(编解码器、Dai、StreamConfig)不支持此协议。
如需查看概览,请参阅信号处理接口。
GetElements
返回支持的处理元素的向量。 此向量必须包含一个或多个处理元素。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Reader_GetElements_Result
|
GetTopologies
返回一个包含支持的拓扑的向量。
此向量必须包含一个或多个拓扑。
如果返回了多个拓扑,客户端可以通过调用 SetTopology 从列表中选择任意拓扑。如果只返回一个拓扑,仍可调用 SetTopology,但不会造成任何更改。
每个元素都必须包含在至少一个拓扑中,但不必包含在每个拓扑中。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Reader_GetTopologies_Result
|
WatchElementState
通过挂起式 GET 获取处理元素状态。
对于给定的 processing_element_id,驱动程序将立即回复客户端发送的第一个 WatchElementState。在 ElementState 的任何部分发生变化(与最近报告的该元素的值相比)之前,驱动程序不会响应针对相应 processing_element_id 的后续客户端 WatchElementState 调用。
如果 processing_element_id 与 GetElements 返回的 ElementId 不匹配,驱动程序将关闭协议通道并返回 ZX_ERR_INVALID_ARGS 错误。
如果此方法在以下情况下再次被调用,驱动程序将关闭协议通道并返回 ZX_ERR_BAD_STATE 错误:此客户端和 processing_element_id 已有待处理的 WatchElementState。
请求
| 名称 | 类型 |
|---|---|
processing_element_id |
ElementId
|
响应
| 名称 | 类型 |
|---|---|
state |
ElementState
|
WatchTopology
通过挂起的 get 获取当前拓扑。
驱动程序将立即回复每个客户端发送的第一个 WatchTopology。
在信号处理拓扑发生变化之前(这是 SetTopology 调用的结果),驱动程序不会响应来自相应客户端的后续 WatchTopology 调用。
如果此方法在客户端已存在待处理的 WatchTopology 时再次被调用,驱动程序将关闭协议通道并返回 ZX_ERR_BAD_STATE 错误。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Reader_WatchTopology_Result
|
SignalProcessing
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
此协议是复合音频驱动程序所必需的,但其他音频驱动程序类型(编解码器、Dai、StreamConfig)不支持此协议。
如需查看概览,请参阅信号处理接口。
GetElements
返回支持的处理元素的向量。 此向量必须包含一个或多个处理元素。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Reader_GetElements_Result
|
GetTopologies
返回一个包含支持的拓扑的向量。
此向量必须包含一个或多个拓扑。
如果返回了多个拓扑,客户端可以通过调用 SetTopology 从列表中选择任意拓扑。如果只返回一个拓扑,仍可调用 SetTopology,但不会造成任何更改。
每个元素都必须包含在至少一个拓扑中,但不必包含在每个拓扑中。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Reader_GetTopologies_Result
|
SetElementState
控制由 processing_element_id 指定的处理元素,该元素是 GetElements 返回的唯一 ElementId。
对 SetElementState 的调用中指定的 state 是 SettableElementState。这是 ElementState 的子集,因为 WatchElementState 返回的某些字段(例如 processing_delay 或 plug_state)只能由客户端观察((not set))。
如果 processing_element_id 与 GetElements 返回的已知 ElementId 不匹配,或者 state 对相应元素无效,则返回 ZX_ERR_INVALID_ARGS。这包括违反本协议中规定的任何规则。
示例:state 指定应停止或绕过某个元素,但相应元素未指定(或明确设置为 false)can_stop 或 can_bypass。state 包含 type_specific 条目,但该条目的 SettableTypeSpecificElementState 与对应于 processing_element_id 的元素的 ElementType 不匹配。state 更改了 EQUALIZER 元素的 EqualizerBandState(目前为止一切正常),但指定了对 frequency 的更改,而此元素并未在其 supported_controls 中设置 CAN_CONTROL_FREQUENCY。state 为 GAIN 元素指定了 gain 值为负无穷大、NAN 或超出元素声明的 min_gain, max_gain 范围的 GainElementState。
调用者可能会将对 SignalProcessing 协议的方法调用与其他驱动程序协议的调用交错进行。某些非 SignalProcessing 配置更改可能需要重新协商驱动程序状态,然后某些元素才能接收 SetElementState。例如,如果更改了 DaiFormat,则 SetElementState 更改 AGL 元素的参数可能不需要重新协商驱动程序状态,因为更改增益参数通常不会更改支持的音频格式集。相比之下,在进行相同的 DaiFormat 更改后,在 CONNECTION_POINT 元素上调用 SetElementState 之前,可能需要重新建立驱动程序状态,因为格式更改可能会使之前针对拓扑的另一部分在 GetDaiFormats 协议调用中返回的一组受支持的格式失效。
驱动程序负责确定何时需要重新协商。如果需要这样做,相关的 SetElementState 调用必须返回 ZX_ERR_BAD_STATE,并且客户端必须完全关闭协议通道,以便重新开始协议协商。然后,客户端必须在任何非 SignalProcessing 协议调用之前重新调用返回 ZX_ERR_BAD_STATE 的 SetElementState 调用。
请求
| 名称 | 类型 |
|---|---|
processing_element_id |
ElementId
|
state |
SettableElementState
|
响应
| 名称 | 类型 |
|---|---|
payload |
SignalProcessing_SetElementState_Result
|
SetTopology
通过指定 topology_id 来设置当前有效的拓扑,该 topology_id 与 GetTopologies 返回的矢量中的条目相匹配。当前活跃的拓扑通过 WatchTopology 响应进行通信。如需更改有效拓扑,客户端可使用 SetTopology。
如果 GetTopologies 仅返回一个 Topology,则 SetTopology 是可选的,并且不会产生任何影响。
如果 GetTopologies 返回的 topologies 中未找到指定的 topology_id,则此调用将失败并返回 ZX_ERR_INVALID_ARGS。
SetTopology 可以在非 SignalProcessing 协议调用之前或之后调用。如果在非 SignalProcessing 协议调用之后调用,则 SetTopology 可能会返回 ZX_ERR_BAD_STATE,以指示在不重新协商驱动程序状态的情况下无法继续执行操作。如需进一步讨论,请参阅 SetElementState。
请求
| 名称 | 类型 |
|---|---|
topology_id |
TopologyId
|
响应
| 名称 | 类型 |
|---|---|
payload |
SignalProcessing_SetTopology_Result
|
WatchElementState
通过挂起式 GET 获取处理元素状态。
对于给定的 processing_element_id,驱动程序将立即回复客户端发送的第一个 WatchElementState。在 ElementState 的任何部分发生变化(与最近报告的该元素的值相比)之前,驱动程序不会响应针对相应 processing_element_id 的后续客户端 WatchElementState 调用。
如果 processing_element_id 与 GetElements 返回的 ElementId 不匹配,驱动程序将关闭协议通道并返回 ZX_ERR_INVALID_ARGS 错误。
如果此方法在以下情况下再次被调用,驱动程序将关闭协议通道并返回 ZX_ERR_BAD_STATE 错误:此客户端和 processing_element_id 已有待处理的 WatchElementState。
请求
| 名称 | 类型 |
|---|---|
processing_element_id |
ElementId
|
响应
| 名称 | 类型 |
|---|---|
state |
ElementState
|
WatchTopology
通过挂起的 get 获取当前拓扑。
驱动程序将立即回复每个客户端发送的第一个 WatchTopology。
在信号处理拓扑发生变化之前(这是 SetTopology 调用的结果),驱动程序不会响应来自相应客户端的后续 WatchTopology 调用。
如果此方法在客户端已存在待处理的 WatchTopology 时再次被调用,驱动程序将关闭协议通道并返回 ZX_ERR_BAD_STATE 错误。
请求
<EMPTY>
响应
| 名称 | 类型 |
|---|---|
payload |
Reader_WatchTopology_Result
|
STRUCTS
EdgePair
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
处理元素之间的边对,用于指定音频如何按顺序流经一组处理元素排列。
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
processing_element_id_from |
ElementId
|
无默认值 | |
processing_element_id_to |
ElementId
|
无默认值 |
Reader_GetElements_Response
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
processing_elements |
vector<Element>:64
|
无默认值 |
Reader_GetTopologies_Response
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
topologies |
vector<Topology>:64
|
无默认值 |
Reader_WatchTopology_Response
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 字段 | 类型 | 说明 | 默认 |
|---|---|---|---|
topology_id |
TopologyId
|
无默认值 |
SignalProcessing_SetElementState_Response
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
<EMPTY>
SignalProcessing_SetTopology_Response
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
<EMPTY>
枚举
ElementType flexible
类型:uint32
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 名称 | 值 | 说明 |
|---|---|---|
VENDOR_SPECIFIC |
1 |
特定于供应商。一种处理元素,未包含在任何后续类型定义中。 |
CONNECTION_POINT |
3 |
控制流水线通道混合和路由。 |
GAIN |
4 |
增益控制,也称为音量控制。 |
AUTOMATIC_GAIN_CONTROL |
5 |
自动增益控制。 无论输入信号如何变化,都能自动保持合适的信号电平。 |
AUTOMATIC_GAIN_LIMITER |
6 |
自动增益限制器。 自动将信号强度维持在指定水平以下。 低于该电平的输入不受影响,高于该电平的峰值会被衰减。 |
动态 |
7 |
改变信号的动态范围,例如动态范围压缩。 |
静音 |
8 |
忽略。 |
DELAY |
9 |
延迟。 |
EQUALIZER |
10 |
均衡器。 |
SAMPLE_RATE_CONVERSION |
11 |
采样率转换。 |
RING_BUFFER |
13 |
环形缓冲区。通过跨进程循环缓冲区传输的音频数据源或接收器。这是可启动/结束处理流水线的三种元素中的第一种。
包含此类型元素的驱动程序必须支持相应元素 ID 的复合方法 |
DAI_INTERCONNECT |
14 |
数字音频接口互连。
这是可启动/结束处理流水线的三种元素中的第二种。
包含此类型元素的驱动程序必须支持相应元素 ID 的复合方法 |
PACKET_STREAM |
15 |
数据包流。通过离散数据包传输的音频数据源或接收器。
这是可启动/结束处理流水线的三种元素中的第三种。
包含此类型元素的驱动程序必须支持相应元素 ID 的复合方法 添加了:HEAD
|
EqualizerBandType flexible
类型:uint64
在 fuchsia.hardware.audio.signalprocessing/equalizer.fidl 中定义
均衡器频段的类型。
| 名称 | 值 | 说明 |
|---|---|---|
峰值 |
1 |
|
NOTCH |
2 |
窄带抑制,可显著衰减 |
LOW_CUT |
3 |
降低低于 |
HIGH_CUT |
4 |
降低高于 |
LOW_SHELF |
5 |
将增益降低到 |
HIGH_SHELF |
6 |
以平台效应为特征,将高于 |
GainDomain 灵活
类型:uint8
在 fuchsia.hardware.audio.signalprocessing/gain.fidl 中定义
增益的硬件网域,例如 ANALOG。
| 名称 | 值 | 说明 |
|---|---|---|
数字商品 |
1 |
处理元素增益在数字域中应用。 |
ANALOG |
2 |
处理元素增益在模拟域中应用。 |
混合 |
3 |
处理元件增益通过数字和模拟硬件混合使用。 |
GainType strict
类型:uint8
在 fuchsia.hardware.audio.signalprocessing/gain.fidl 中定义
增益类型的表示法。
| 名称 | 值 | 说明 |
|---|---|---|
分贝 |
1 |
以分贝为单位指定的增益,例如 -103.0dB 或 +3.2dB。 |
PERCENT |
2 |
增幅,以百分比表示,例如 10.0% 或 80.5%。 |
LevelType strict
类型:uint8
在 fuchsia.hardware.audio.signalprocessing/dynamics.fidl 中定义
级别类型。
| 名称 | 值 | 说明 |
|---|---|---|
峰值 |
1 |
指定为峰值的增益级别。 |
RMS |
2 |
指定为 RMS 的级别。 |
PlugDetectCapabilities 灵活
类型:uint32
在 fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl 中定义
互连的插头检测功能。
| 名称 | 值 | 说明 |
|---|---|---|
HARDWIRED |
0 |
互连采用硬接线方式(将始终插接)。 |
CAN_ASYNC_NOTIFY |
1 |
互连可以拔出/插入,并且可以异步通知插拔状态变化。 |
ThresholdType strict
类型:uint8
在 fuchsia.hardware.audio.signalprocessing/dynamics.fidl 中定义
阈值类型。
| 名称 | 值 | 说明 |
|---|---|---|
高于 |
1 |
在阈值之上应用动态处理。 |
低于 |
2 |
在低于阈值的情况下应用动态处理。 |
TABLES
DaiInterconnect
在 fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl 中定义
具有 ElementType DAI_INTERCONNECT 的 Element 的参数。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
plug_detect_capabilities |
PlugDetectCapabilities
|
插头检测功能。 必填。 |
DaiInterconnectElementState
在 fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl 中定义
具有 ElementType DAI_INTERCONNECT 的 Element 的状态。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
plug_state |
PlugState
|
相应 DAI 互连的插头状态。 必填。 |
2 |
external_delay |
zx/Duration
|
驱动程序对超出此 DAI 互连的外部延迟的最佳估计值(根据流水线的当前配置)。 客户端在确定最低提前时间(在播放期间)和最低捕获延迟时间(在捕获期间)的要求时,必须考虑 如果未包含,则 可选。如果指定,则必须为非负数。 |
动力学
在 fuchsia.hardware.audio.signalprocessing/dynamics.fidl 中定义
Element 的参数,其中 type 等于 DYNAMICS。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
bands |
vector<DynamicsBand>:64
|
此协议中的 必需。必须包含至少一个条目。 |
2 |
supported_controls |
DynamicsSupportedControls
|
相应处理元素支持的控制变量(即可以通过调用 可选。 |
DynamicsBand
在 fuchsia.hardware.audio.signalprocessing/dynamics.fidl 中定义
Dynamics 元素频段的参数。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
id |
uint64
|
相应频段的唯一 ID,只需在相应的 必填。 |
DynamicsBandState
在 fuchsia.hardware.audio.signalprocessing/dynamics.fidl 中定义
Element 中单个频段的状态,其中 type 等于 DYNAMICS。
即使客户端无法更改控制频段字段的值(即 supported_controls 中未设置相应位),WatchElementState 也可能会返回这些字段。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
id |
uint64
|
频段的唯一 ID。必须与 |
2 |
min_frequency |
uint32
|
频段的最低频率(以 Hz 为单位)。例如,对于单频段动态处理,此字段可以为 0,以指定(与 max_frequency 一起)频段为全频段。 |
3 |
max_frequency |
uint32
|
频段的最大频率(以 Hz 为单位)。例如,对于单频段动态处理,此字段可以是奈奎斯特频率,用于(与 min_frequency 一起)指定频段为全频段。 必填。 |
4 |
threshold_db |
float32
|
动态主处理开始的输入 dB 值(受 必需。必须是有限值。 |
5 |
threshold_type |
ThresholdType
|
动态处理应用于
|
6 |
ratio |
float32
|
膝点区域之上或之下的输入与输出分贝比率(请参阅 必需。必须是有限值。 |
7 |
knee_width_db |
float32
|
膝部区域的宽度(以输入 dB 为单位)。如果存在,则不能为负值。
如果未包含,则膝部区域的宽度未指定。
值为零表示“硬”拐点;值越大,拐点越“软”。
此膝盖位于 可选。如果指定,则必须是有限值。
如果未在 |
8 |
attack |
zx/Duration
|
攻击时间。 如果未包含,则表示未指定启动时间。 可选。如果指定,则必须为非负数。
如果未在 |
9 |
release |
zx/Duration
|
发布时间。 如果未包含,则发布时间未指定。 可选。如果指定,则必须为非负数。
如果未在 |
10 |
output_gain_db |
float32
|
输出(也称为补偿或后期)增益值(以分贝为单位)。 如果未包含,则输出增益未指定。 可选。如果指定,则必须是有限值。
如果未在 |
11 |
input_gain_db |
float32
|
以分贝为单位的输入(也称为前)增益值。 如果未包含,则输入增益未指定。 可选。如果指定,则必须是有限值。
如果未在 |
12 |
level_type |
LevelType
|
电平类型(峰值或 RMS)。 如果未包含,则级别类型未指定。 可选。
如果未在 |
13 |
lookahead |
zx/Duration
|
预先查看时间。 如果未包含,则表示未指定预读时间。 可选。如果指定,则必须为非负数。
如果未在 |
14 |
linked_channels |
bool
|
关联的声道(也称为“立体声关联”,适用于 2 声道系统)。 如果未包含,则关联的频道选项未指定。 如果为 true,则动态响应将应用于所有渠道。 如果为 false,则每个渠道都有自己的动态响应。 可选。
如果未在 |
DynamicsElementState
在 fuchsia.hardware.audio.signalprocessing/dynamics.fidl 中定义
Element 的状态,其中 type 等于 DYNAMICS。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
band_states |
vector<DynamicsBandState>:64
|
每个 ID 都必须与 必需。必须包含至少一个条目。 |
元素
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
id |
ElementId
|
相应元素的唯一 ID。此 ID 的范围仅限于 必填。 |
2 |
type |
ElementType
|
处理元素类型。 必填。 |
3 |
type_specific |
TypeSpecificElement
|
处理元素的特定于类型的参数。 对于 |
5 |
description |
string:256
|
如果包含,则为处理元素的文本说明。 可选。如果存在,则不得为空。 |
6 |
can_stop |
bool
|
如果为 true,则可以通过 可选。 |
7 |
can_bypass |
bool
|
如果为 true,则可以通过 可选。 |
ElementState
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
驱动程序返回的元素的当前状态。请注意,此表包含 SettableElementState 中没有的字段,因为这些字段无法由客户端更改。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
type_specific |
TypeSpecificElementState
|
处理元素的特定于类型的状态参数。 如果此处理元素被停用,并且提供了其特定于类型的状态,那么该特定于类型的状态仅用于提供信息(例如,如果停止的元素在未提供其他取代状态信息的情况下重新启动,则该元素的状态)。 对于 DAI_INTERCONNECT、DYNAMICS、EQUALIZER、GAIN 和 VENDOR_SPECIFIC 元素,此属性是必需的。 如果为 AUTOMATIC_GAIN_CONTROL、AUTOMATIC_GAIN_LIMITER、CONNECTION_POINT、DELAY、MUTE、PACKET_STREAM、RING_BUFFER 或 SAMPLE_RATE_CONVERSION 类型的元素指定了此属性,则无效。 |
4 |
vendor_specific_data |
vector<uint8>:4096
|
如果包含,则为用于将供应商特定信息从驱动程序传送到 可选(即使元素的类型不是 VENDOR_SPECIFIC,也允许使用)。 新增:27
|
5 |
started |
bool
|
相应处理元素的开始/停止状态。 如果为 true,则启动与元素关联的硬件。如果为 false,则停止。 如果省略了相应的 已停止的处理元素不提供其抽象功能。 没有音频数据流经已停止的元素。 必填。 |
6 |
bypassed |
bool
|
相应处理元素的绕过状态。 如果为 true,则绕过与元素关联的硬件。如果此属性设为 false 或缺失,则不会绕过关联的硬件。 默认情况下,处理元素不会被绕过。
如果省略了对应的 被绕过的元素不会影响音频在拓扑中的流动。 音频流经已绕过的元素,但未发生变化。 可选。 |
7 |
turn_on_delay |
zx/Duration
|
如果包含此属性,则表示驱动程序对元素硬件在 如果不考虑 可选。如果指定,则必须为非负数。 |
8 |
turn_off_delay |
zx/Duration
|
如果包含,则表示驱动程序对元素硬件在 如果不考虑 可选。如果指定,则必须为非负数。 |
9 |
processing_delay |
zx/Duration
|
如果包含,则表示驱动程序对相应处理元素(包括 时间敏感型客户端在确定(播放)最短提前时间和最短捕获延迟时间的要求时,应考虑此值。 对于 可选。如果指定,则必须为非负数。 |
均衡器
在 fuchsia.hardware.audio.signalprocessing/equalizer.fidl 中定义
Element 的参数,其中 type 等于 EQUALIZER。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
bands |
vector<EqualizerBand>:64
|
此协议中的均衡器由多个频段构建而成,每个频段在此处和 必需。必须包含至少一个条目。 |
2 |
supported_controls |
EqualizerSupportedControls
|
此均衡器支持的控件(即可以通过 可选。 |
3 |
can_disable_bands |
bool
|
如果包含且为 true,则可以通过 可选。 |
4 |
min_frequency |
uint32
|
所有频段的最低频率(以 Hz 为单位)。 必填。 |
5 |
max_frequency |
uint32
|
所有频段的最大频率(以 Hz 为单位)。 必填。 |
6 |
max_q |
float32
|
所有频段的最大品质因数(通常用“Q”表示)。 此参数用于指示频次过渡的窄度。Q 值越高,陷波/峰值越窄,切除/搁架越陡峭。必须为正值。 可选。如果指定,则必须是有限值。 |
7 |
min_gain_db |
float32
|
以分贝为单位的最小增益。 如果存在 |
8 |
max_gain_db |
float32
|
最大增益(以分贝为单位)。 如果存在 |
EqualizerBand
在 fuchsia.hardware.audio.signalprocessing/equalizer.fidl 中定义
均衡器频段的参数。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
id |
uint64
|
相应频段的唯一 ID。必须仅在相应的 必填。 |
EqualizerBandState
在 fuchsia.hardware.audio.signalprocessing/equalizer.fidl 中定义
Element 中单个频段的状态,其中 type 等于 EQUALIZER。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
id |
uint64
|
频段的唯一 ID。必须与 必填。 |
2 |
type |
EqualizerBandType
|
频段类型。 必需。
如果这是对 |
3 |
frequency |
uint32
|
频段的中心频率。 必需。
如果这是对 |
4 |
q |
float32
|
品质因数,通常表示为“Q”。 表示频次过渡的窄度。Q 值越高,陷波/峰值越窄,切/搁架越陡峭。必须为正值。 可选。
如果用于 |
5 |
gain_db |
float32
|
增益(以分贝为单位)。 对于 |
6 |
enabled |
bool
|
启用/停用频段。 如果停用,音频仍会流经均衡器,但此频段不会产生任何影响。 如果 绕过整个封装的处理元素(通过将 可选。 |
EqualizerElementState
在 fuchsia.hardware.audio.signalprocessing/equalizer.fidl 中定义
Element 的状态,其中 type 等于 EQUALIZER。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
2 |
band_states |
vector<EqualizerBandState>:64
|
相应均衡器处理元素中各频段的状态。
必需。必须包含至少一个条目。 |
增益
在 fuchsia.hardware.audio.signalprocessing/gain.fidl 中定义
Element 的参数,其中 type 等于 GAIN。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
type |
GainType
|
指定增益的数字表示什么,例如百分比。 必填。 |
2 |
domain |
GainDomain
|
如果包含,则增益将应用于指定的 可选。 |
3 |
min_gain |
float32
|
必需。必须是有限值。 |
4 |
max_gain |
float32
|
以 必需。必须是有限值。 |
5 |
min_gain_step |
float32
|
增益步长的最小值,采用 必需。必须是有限值。 |
GainElementState
在 fuchsia.hardware.audio.signalprocessing/gain.fidl 中定义
Element 的状态,其中 type 等于 GAIN。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
gain |
float32
|
以 必需。必须是有限值。 |
PlugState
在 fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl 中定义
互连的插头状态。
如果驱动程序报告的 plug_detect_capabilities 等于 HARDWIRED,则驱动程序应仅在首次针对给定互连调用 WatchElementState 时做出响应,并将 plugged 设置为 true,将 plug_state_time 设置为时间“0”。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
plugged |
bool
|
指示互连器当前是否已插好。 必需 |
2 |
plug_state_time |
zx/Time
|
指示当前 必填。 |
SettableElementState
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
可由客户端设置的处理元素状态。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
type_specific |
SettableTypeSpecificElementState
|
可由客户端设置的特定于类型的元素状态参数。 如果某个元素处于停用状态,则此字段(以及 SettableElementState 中的所有其他字段)中的更改仅用于提供信息,并且在启用该元素之前不会生效。 如果未设置,则保留元素之前的 对于 DYNAMICS、EQUALIZER、GAIN 和 VENDOR_SPECIFIC 类型,此参数为可选参数。 如果为 AUTOMATIC_GAIN_CONTROL、AUTOMATIC_GAIN_LIMITER、CONNECTION_POINT、DAI_INTERCONNECT、DELAY、MUTE、PACKET_STREAM、RING_BUFFER 或 SAMPLE_RATE_CONVERSION 元素指定,则无效。 |
2 |
vendor_specific_data |
vector<uint8>:4096
|
如果包含,则为用于将供应商特定信息从客户端传送到音频驱动程序的八位字节不透明对象。 此元素可与任何元素类型搭配使用,而不仅仅是 VENDOR_SPECIFIC 元素。 可选。 新增:27
|
3 |
started |
bool
|
是否启动或停止此处理元素。 已停止的处理元素不提供其抽象功能。 具体而言,没有音频数据会流经已停止的元素。 如果相应 可选。 |
4 |
bypassed |
bool
|
是否绕过此处理元素。 被绕过的元素不会影响音频在拓扑中的流动。 具体来说,音频会通过被绕过的元素,而不会发生变化。 如果对应的 可选。 |
拓扑学
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
Topology 用于指定处理元素在硬件中的排列方式。
| 序数 | 字段 | 类型 | 说明 |
|---|---|---|---|
1 |
id |
TopologyId
|
相应拓扑的唯一 ID。此 ID 的范围仅限于 必填。 |
2 |
processing_elements_edge_pairs |
vector<EdgePair>:64
|
处理元素边对的向量,用于指定元素之间的连接。 处理元素通过边对连接,形成多元素流水线。一个拓扑可以包含多个不同的流水线:拓扑不必是单个互连序列(例如,拓扑 A->B->C D->E->F 是有效的)。 如需定义多个可能的配置,以便客户端可以选择其中一种,请在 如果设备支持多个拓扑条目,则每个特定拓扑不必包含每个元素。不过,每个元素都必须包含在至少一个拓扑中。 在每个拓扑中,每个连接元素的序列都必须以 DAI_INTERCONNECT、RING_BUFFER 或 PACKET_STREAM 类型的元素开头,并以 DAI_INTERCONNECT、RING_BUFFER 或 PACKET_STREAM 类型的元素结尾。 DAI_INTERCONNECT 元素可以开始或结束元素序列,但 RING_BUFFER 或 PACKET_STREAM 必须开始或结束元素序列。如果某个 RING_BUFFER 或 PACKET_STREAM 元素在 EdgePair 中被列为 作为一种特殊情况,DAI_INTERCONNECT 元素可以引用自身;也就是说,EdgePair 可能包含相等的 必需。必须包含至少一个条目。 |
VendorSpecific
在 fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl 中定义
Element 的参数,其中 type 等于 VENDOR_SPECIFIC。
| 序数 | 字段 | 类型 | 说明 |
|---|
VendorSpecificState
在 fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl 中定义
Element 的状态,其中 type 等于 VENDOR_SPECIFIC。
| 序数 | 字段 | 类型 | 说明 |
|---|
UNIONS
Reader_GetElements_Result strict
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Reader_GetElements_Response
|
|
2 |
err |
zx/Status
|
Reader_GetTopologies_Result strict
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Reader_GetTopologies_Response
|
|
2 |
err |
zx/Status
|
Reader_WatchTopology_Result strict
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
Reader_WatchTopology_Response
|
|
3 |
framework_err |
internal
|
SettableTypeSpecificElementState 灵活
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
可由客户端设置的特定于类型的处理元素状态。
处理元素控制的类型由相应联合中提供的参数类型定义。此特定于类型的变体必须与相应 Element 中的 ElementType 条目相匹配。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
vendor_specific |
VendorSpecificState
|
|
2 |
gain |
GainElementState
|
|
3 |
equalizer |
EqualizerElementState
|
|
4 |
dynamics |
DynamicsElementState
|
SignalProcessing_SetElementState_Result 严格
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
SignalProcessing_SetElementState_Response
|
|
2 |
err |
zx/Status
|
SignalProcessing_SetTopology_Result 严格
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
response |
SignalProcessing_SetTopology_Response
|
|
2 |
err |
zx/Status
|
TypeSpecificElement 灵活
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
Element 的特定于类型的参数。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
vendor_specific |
VendorSpecific
|
|
2 |
gain |
Gain
|
|
3 |
equalizer |
Equalizer
|
|
4 |
dynamics |
Dynamics
|
|
6 |
dai_interconnect |
DaiInterconnect
|
TypeSpecificElementState flexible
在 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl 中定义
驱动程序返回的特定于类型的处理元素状态。
处理元素控制的类型由相应联合中提供的参数类型定义。此特定于类型的变体必须与相应 Element 中的 ElementType 条目相匹配。
| 序数 | 变体 | 类型 | 说明 |
|---|---|---|---|
1 |
vendor_specific |
VendorSpecificState
|
|
2 |
gain |
GainElementState
|
|
3 |
equalizer |
EqualizerElementState
|
|
4 |
dynamics |
DynamicsElementState
|
|
6 |
dai_interconnect |
DaiInterconnectElementState
|
BITS
DynamicsSupportedControls 灵活
类型:uint64
在 fuchsia.hardware.audio.signalprocessing/dynamics.fidl 中定义
Dynamics 支持的控件。
如果包含,则可以使用 SetElementState 更改表示动态处理频段参数的每个位。
| 名称 | 值 | 说明 |
|---|---|---|
KNEE_WIDTH |
1 | 如果已设置, |
ATTACK |
2 | 如果已设置, |
发布 |
4 | 如果已设置, |
OUTPUT_GAIN |
8 | 如果已设置, |
INPUT_GAIN |
16 | 如果已设置, |
LOOKAHEAD |
32 | 如果已设置, |
LEVEL_TYPE |
64 | 如果已设置, |
LINKED_CHANNELS |
128 | 如果已设置, |
THRESHOLD_TYPE |
256 | 如果已设置, |
EqualizerSupportedControls 灵活
类型:uint64
在 fuchsia.hardware.audio.signalprocessing/equalizer.fidl 中定义
Equalizer 中指定的均衡器支持的控制变量。
| 名称 | 值 | 说明 |
|---|---|---|
CAN_CONTROL_FREQUENCY |
1 | 如果已设置, |
CAN_CONTROL_Q |
2 | 如果已设置, |
SUPPORTS_TYPE_PEAK |
4 | 如果设置了此值, |
SUPPORTS_TYPE_NOTCH |
8 | 如果设置了此值, |
SUPPORTS_TYPE_LOW_CUT |
16 | 如果设置了此值, |
SUPPORTS_TYPE_HIGH_CUT |
32 | 如果设置了此值, |
SUPPORTS_TYPE_LOW_SHELF |
64 | 如果设置, |
SUPPORTS_TYPE_HIGH_SHELF |
128 | 如果设置了此值, |
常量
| 名称 | 值 | 类型 | 说明 |
|---|---|---|---|
| MAX_BYTES_ELEMENT_VENDOR_SPECIFIC |
4096
|
uint32 |
新增:27
|
| MAX_COUNT_DYNAMICS_BANDS |
64
|
uint32 |
|
| MAX_COUNT_EQUALIZER_BANDS |
64
|
uint32 |
|
| MAX_COUNT_PROCESSING_ELEMENTS |
64
|
uint32 |
|
| MAX_COUNT_PROCESSING_ELEMENTS_EDGE_PAIRS |
64
|
uint32 |
|
| MAX_COUNT_TOPOLOGIES |
64
|
uint32 |
|
| MAX_STRING_SIZE |
256
|
uint32 |
别名
| 名称 | 值 | 说明 |
|---|---|---|
| ElementId |
uint64 |
|
| TopologyId |
uint64 |
服务
ConnectorService
在 fuchsia.hardware.audio.signalprocessing/connector.fidl 中定义
| 名称 | 类型 | 传输 |
|---|---|---|
| 连接器 |
fuchsia.hardware.audio.signalprocessing/Connector
|
渠道 |