fuchsia.audio.device

添加了:HEAD

协议

控制

fuchsia.audio.device/control.fidl 中定义

Control 实例用于更改音频设备的设置或状态。该库还会创建用于在客户端和设备之间传递音频数据的环形缓冲区。每个 Control 都与一个初始化的音频设备相关联;相反,每个设备随时都与 0 个或 1 个 Control 相关联。

CodecStart

启动编解码器硬件。如果成功,则会在编解码器启动之后返回,并且 start_time 指示硬件启动的时间。请注意,在调用此方法之前,必须设置编解码器的 DaiFormat(通过成功的 SetDaiFormat 调用)。

只应针对编解码器设备调用。

请求

<EMPTY>

响应

名称类型
payload Control_CodecStart_Result

CodecStop

停止编解码器硬件。如果成功,则会在编解码器停止运行后返回,并且 stop_time 指示硬件停止的时间。请注意,在调用此方法之前,必须设置编解码器的 DaiFormat(通过成功的 SetDaiFormat 调用)。

只应针对编解码器设备调用。

请求

<EMPTY>

响应

名称类型
payload Control_CodecStop_Result

CreateRingBuffer

创建用于将音频传入/传出此设备的环形缓冲区。如果设备是 Composite,则必须由 element_id 标识目标 RING_BUFFER ENDPOINT。

只应针对 Composite 和 StreamConfig 设备调用。

请求

名称类型
payload ControlCreateRingBufferRequest

响应

名称类型
payload Control_CreateRingBuffer_Result

GetElements

返回受支持处理元素的矢量。 必须返回一个或多个处理元素,或者 ZX_ERR_NOT_SUPPORTED

请求

<EMPTY>

响应

名称类型
payload fuchsia.hardware.audio.signalprocessing/Reader_GetElements_Result

GetTopologies

返回受支持拓扑的矢量。必须返回一个或多个拓扑,或 ZX_ERR_NOT_SUPPORTED。如果返回多个拓扑,客户端可以使用 SetTopology 从列表中选择任何拓扑。如果仅返回一个拓扑,则拓扑定义仅供参考,因为使用的唯一拓扑无法通过 SetTopology 更改。如果 GetElements 返回一个或多个元素,则 GetTopologies 必须返回一个或多个拓扑。

请求

<EMPTY>

响应

名称类型
payload fuchsia.hardware.audio.signalprocessing/Reader_GetTopologies_Result

重置

重置硬件 - 停止硬件,释放所有环形缓冲区,并清除已设置的所有 DaiFormats 或 RingBufferFormats。

此方法会在硬件重置完成时返回。调用此方法后,设备仍然处于受控状态,但必须重新创建并重启所有环形缓冲区。对于具有 DAI_INTERCONNECT 的设备(例如编解码器和一些复合材料),必须再次(依次)调用 SetDaiFormatCodecStart,才能使互连恢复到有效操作模式。如果适用,还必须调用 SetTopologySetElementState

只应针对编解码器和复合设备调用。

请求

<EMPTY>

响应

名称类型
payload Control_Reset_Result

SetDaiFormat

设置连接到此编解码器端点的数字互连的电线格式。 此方法会返回与已设置的格式相关的信息,包括延迟值。如果设备是复合设备,则必须通过 element_id 标识目标 DAI_INTERCONNECT ENDPOINT。

只应针对编解码器和复合设备调用。

请求

名称类型
payload ControlSetDaiFormatRequest

响应

名称类型
payload Control_SetDaiFormat_Result

SetElementState

使用由 GetElements 返回的唯一 ID 来控制处理元素。如果 processing_element_idGetElements 返回的 ID 不匹配,或者 TypeSpecificElementState 的类型与 GetElements 针对此 ID 返回的处理元素的 ElementType 不匹配,则返回 ZX_ERR_INVALID_ARGS。如果 state 值无效(即任何值违反此协议中指定的规则),驱动程序可能会返回 ZX_ERR_INVALID_ARGS,例如,当某个处理元素未在 supported_controls 中通告 CAN_CONTROL_FREQUENCY 时,试图更改 EQUALIZER 处理元素的 EqualizerBandState frequency

SetElementState 可以在非 SignalProcessing 协议调用之前或之后调用。如果在非 SignalProcessing 协议调用之后调用,则 SetElementState 可能需要(也可能不需要)与调用构成 SignalProcessing 的协议(例如 Dai)时重新协商所达到的驱动程序状态。例如,在 SetElementState 更改 AGL 处理元素的参数时,可能不需要重新协商 Dai 状态,因为更改增益参数通常不会更改受支持的音频格式集。相比之下,如果 SetElementState 更改了 CONNECTION_POINT 元素的参数,则该更改可能需要重新协商,因为它可能会使之前的 GetDaiFormats Dai 协议调用中返回的受支持格式集无效。

驱动程序负责确定何时需要重新协商。如果需要重新协商,则 SetElementState 必须返回 ZX_ERR_BAD_STATE,并且客户端必须关闭协议通道,以便重新开始协议协商。然后,客户端必须在任何非 SignalProcessing 协议调用之前进行返回 ZX_ERR_BAD_STATESetElementState 调用。

请求

名称类型
processing_element_id fuchsia.hardware.audio.signalprocessing/ElementId
state fuchsia.hardware.audio.signalprocessing/ElementState

响应

名称类型
payload fuchsia.hardware.audio.signalprocessing/SignalProcessing_SetElementState_Result

SetGain

更改设备的总体增益状态。

只应针对 StreamConfig 设备调用。

请求

名称类型
payload ControlSetGainRequest

响应

名称类型
payload Control_SetGain_Result

SetTopology

使用 GetTopologies 返回的向量 ID 设置要使用的拓扑。当前拓扑通过 WatchTopology 响应传达。如需更改处于活动状态的拓扑,客户端会使用 SetTopology。如果指定的 topology_id 未包含在 GetTopologies 返回的 topologies 内,则此调用将返回 ZX_ERR_INVALID_ARGS。如果 GetTopologies 仅返回一个 Topology,则 SetTopology 是可选的且不起作用。

SetTopology 可能会在非 SignalProcessing 协议调用之前或之后调用。如果在非 SignalProcessing 协议调用之后调用,则 SetTopology 可能会返回 ZX_ERR_BAD_STATE,以指示如果不重新协商驱动程序状态,操作将无法继续。如需进一步的讨论,请参阅 SetElementState

请求

名称类型
topology_id fuchsia.hardware.audio.signalprocessing/TopologyId

响应

名称类型
payload fuchsia.hardware.audio.signalprocessing/SignalProcessing_SetTopology_Result

WatchElementState

通过挂起 get 获取处理元素状态。对于给定的 processing_element_id,驱动程序将回复客户端发送的第一个 WatchElementState。除非 Element 表中的任何字段从最近针对该 processing_element_id 报告的内容发生变化,否则驱动程序不会响应针对给定 processing_element_id 的后续客户端 WatchElementState 调用。如果在此客户端和 processing_element_id 已有待处理的 WatchElementState 的情况下再次调用此方法,驱动程序将关闭协议通道并显示错误 ZX_ERR_BAD_STATE

请求

名称类型
processing_element_id fuchsia.hardware.audio.signalprocessing/ElementId

响应

名称类型
state fuchsia.hardware.audio.signalprocessing/ElementState

WatchTopology

通过挂起 get 获取当前拓扑。 驱动程序将立即回复每个客户端发送的第一个 WatchTopology。在信号处理拓扑发生变更(因 SetTopology 调用而发生)之前,驱动程序不会响应来自该客户端的后续 WatchTopology 调用。如果在此客户端已有待处理的 WatchTopology 时再次调用此方法,驱动程序将以错误 ZX_ERR_BAD_STATE 关闭协议通道。

添加了:HEAD

请求

<EMPTY>

响应

名称类型
topology_id fuchsia.hardware.audio.signalprocessing/TopologyId

ControlCreator

fuchsia.audio.device/control.fidl 中定义

ControlCreator 接口可创建 Control 实例。每个 Control 绑定到单个设备。一台设备在任何时候只能绑定到一个 Control

创建

为指定设备创建 Control

请求

名称类型
payload ControlCreatorCreateRequest

响应

名称类型
payload ControlCreator_Create_Result

Observer

fuchsia.audio.device/registry.fidl 中定义

Observer 实例用于了解音频设备的功能和状态,并及时了解设备状态随时间变化的情况。每个 Observer 都与一个初始化的音频设备相关联。一个音频设备可能会被多个 Observer 实例观察到。

GetElements

返回受支持处理元素的矢量。 必须返回一个或多个处理元素,或者 ZX_ERR_NOT_SUPPORTED

请求

<EMPTY>

响应

名称类型
payload fuchsia.hardware.audio.signalprocessing/Reader_GetElements_Result

GetReferenceClock

检索设备的参考时钟。

此时钟将位于设备的“Info”表中指定的网域中。

只应针对 Composite 或 StreamConfig 设备调用。

请求

<EMPTY>

响应

名称类型
payload Observer_GetReferenceClock_Result

GetTopologies

返回受支持拓扑的矢量。必须返回一个或多个拓扑,或 ZX_ERR_NOT_SUPPORTED。如果返回多个拓扑,客户端可以使用 SetTopology 从列表中选择任何拓扑。如果仅返回一个拓扑,则拓扑定义仅供参考,因为使用的唯一拓扑无法通过 SetTopology 更改。如果 GetElements 返回一个或多个元素,则 GetTopologies 必须返回一个或多个拓扑。

请求

<EMPTY>

响应

名称类型
payload fuchsia.hardware.audio.signalprocessing/Reader_GetTopologies_Result

WatchElementState

通过挂起 get 获取处理元素状态。对于给定的 processing_element_id,驱动程序将回复客户端发送的第一个 WatchElementState。除非 Element 表中的任何字段从最近针对该 processing_element_id 报告的内容发生变化,否则驱动程序不会响应针对给定 processing_element_id 的后续客户端 WatchElementState 调用。如果在此客户端和 processing_element_id 已有待处理的 WatchElementState 的情况下再次调用此方法,驱动程序将关闭协议通道并显示错误 ZX_ERR_BAD_STATE

请求

名称类型
processing_element_id fuchsia.hardware.audio.signalprocessing/ElementId

响应

名称类型
state fuchsia.hardware.audio.signalprocessing/ElementState

WatchGainState

请求在设备增益状态发生任何变化时发出通知。

注意:此操作仅会通知设备的 Info 表(具体为 GainCapabilities)中描述的控件发生的变更。使用 WatchElementState 进行公开为 SignalProcessingGetTopologiesGetElements)的增益处理。

只应针对 StreamConfig 设备调用。

请求

<EMPTY>

响应

名称类型
payload Observer_WatchGainState_Result

WatchPlugState

请求通知设备插头状态发生的任何变化。在首次被调用时,它会立即返回。

只应针对 Codec 或 StreamConfig 设备调用。

请求

<EMPTY>

响应

名称类型
payload Observer_WatchPlugState_Result

WatchTopology

通过挂起 get 获取当前拓扑。 驱动程序将立即回复每个客户端发送的第一个 WatchTopology。在信号处理拓扑发生变更(因 SetTopology 调用而发生)之前,驱动程序不会响应来自该客户端的后续 WatchTopology 调用。如果在此客户端已有待处理的 WatchTopology 时再次调用此方法,驱动程序将以错误 ZX_ERR_BAD_STATE 关闭协议通道。

添加了:HEAD

请求

<EMPTY>

响应

名称类型
topology_id fuchsia.hardware.audio.signalprocessing/TopologyId

提供商

fuchsia.audio.device/provider.fidl 中定义

使用 Provider 接口手动添加不使用 devfs 机制的设备。(使用 devfs 的设备会在检测到时自动添加)。

AddDevice

请求

名称类型
payload ProviderAddDeviceRequest

响应

名称类型
payload Provider_AddDevice_Result

注册类型

fuchsia.audio.device/registry.fidl 中定义

Registry 实例会在设备到达和离开时通知客户端,并创建观察器(请参阅 Observer),以通知更详细的状态变化。

CreateObserver

为指定设备请求 Observer

请求

名称类型
payload RegistryCreateObserverRequest

响应

名称类型
payload Registry_CreateObserver_Result

WatchDeviceRemoved

注册在(活跃的、已添加的)设备被移除时接收通知。 由于该方法仅通知一次移除,因此在完成移除后,应立即重新调用该方法,以防发生其他移除操作。

请求

<EMPTY>

响应

名称类型
payload Registry_WatchDeviceRemoved_Result

WatchDevicesAdded

注册在添加了一部或多部设备时收到通知。 devices 矢量将始终至少包含一个 Info 条目。

请求

<EMPTY>

响应

名称类型
payload Registry_WatchDevicesAdded_Result

RingBuffer

fuchsia.audio.device/control.fidl 中定义

RingBuffer 实例控制关联音频流的数据流。

SetActiveChannels

如果设备支持,则请求关闭/打开特定频道。旨在实现闲置时节省电量。

通道由位掩码指定;最低有效位对应于通道 0。每个未设置位都表示该通道可以停用。SetActiveChannels 不会更改环形缓冲区对 Start/Stop 的响应方式,特别是在位置方面。

设备无需遵守SetActiveChannels。例如,不需要将输入流的不活动通道清零,并且仍可播放写入输出流环形缓冲区的无效通道的数据。

如果未调用,则默认情况下,所有渠道都将处于活动状态。

请求

名称类型
payload RingBufferSetActiveChannelsRequest

响应

名称类型
payload RingBuffer_SetActiveChannels_Result

开始

从环形缓冲区的第一帧开始启动环形缓冲区。

请求

名称类型
payload RingBufferStartRequest

响应

名称类型
payload RingBuffer_Start_Result

停止

停止环形缓冲区。

请求

名称类型
payload RingBufferStopRequest

响应

名称类型
payload RingBuffer_Stop_Result

WatchDelayInfo

通过挂起 get 请求延迟信息。RingBuffer 将立即响应第一次 WatchDelayInfo 调用。仅当延迟信息从之前传达的值发生更改时,后续调用才会完成。

请求

<EMPTY>

响应

名称类型
payload RingBuffer_WatchDelayInfo_Result

枚举

ControlCodecStartError灵活

类型:uint32

fuchsia.audio.device/control.fidl 中定义

Control/CodecStart 返回的错误。

名称说明
1

此设备遇到了错误,无法继续控制。

2

此设备类型不支持调用的方法。

3

上一个 CodecStart 调用尚未完成。

4

进行此调用前未调用 SetDaiFormat

5

进行此通话时,设备已经启动。

6

驱动程序返回了一些其他错误。系统可能会重试此调用。

ControlCodecStopError灵活

类型:uint32

fuchsia.audio.device/control.fidl 中定义

Control/CodecStop 返回的错误。

名称说明
1

此设备遇到了错误,无法继续控制。

2

此设备类型不支持调用的方法。

3

上一个 CodecStop 调用尚未完成。

4

进行此调用前未调用 SetDaiFormat

5

进行此呼叫时设备已经停止。

6

驱动程序返回了一些其他错误。系统可能会重试此调用。

ControlCreateRingBufferError

类型:uint32

fuchsia.audio.device/control.fidl 中定义

Control/CreateRingBuffer 返回的错误。

名称说明
1

此设备遇到了错误,无法继续控制。

2

此设备类型不支持调用的方法。

3

上一个 CreateRingBuffer 调用尚未完成。

4

必需的 element_id 缺失或未引用 RING_BUFFER 元素。

5

缺少必需的options

6

缺少必需的options.format

7

缺少必需的options.ring_buffer_min_bytes

8

缺少必需的ring_buffer_server

9

Control 已有活跃的 RingBuffer 实例。

10

设备不支持指定的格式。

11

设备无法使用指定选项创建环形缓冲区。

12

驱动程序返回了一些其他错误。系统可能会重试此调用。

ControlCreatorError 灵活

类型:uint32

fuchsia.audio.device/control.fidl 中定义

ControlCreator/Create 返回的错误。

名称说明
1

缺少必需的token_id

2

缺少必需的control_server

3

未找到 token_id 对应的设备。此令牌从未使用过,或者具有 token_id 的设备已被移除。

4

token_id 的设备出现错误,无法控制。

5

已存在与 token_id 关联的 Control。此设备已受到有效控制。

ControlResetError灵活

类型:uint32

fuchsia.audio.device/control.fidl 中定义

Control/CodecReset 返回的错误。

名称说明
1

此设备遇到了错误,无法继续控制。

2

此设备类型不支持调用的方法。

ControlSetDaiFormatError灵活

类型:uint32

fuchsia.audio.device/control.fidl 中定义

Control/SetDaiFormat 返回的错误。

名称说明
1

此设备遇到了错误,无法继续控制。

2

此设备类型不支持调用的方法。

3

上一个 SetDaiFormat 调用尚未完成。

4

必需的 element_id 缺失或未引用 DAI_INTERCONNECT 元素。

5

必需的dai_format缺失或无效。

6

设备不支持指定的 dai_format。

7

驱动程序返回了一些其他错误。系统可能会重试此调用。

ControlSetGainError

类型:uint32

fuchsia.audio.device/control.fidl 中定义

Control/SetGain 返回的错误。

名称说明
1

此设备遇到了错误,无法继续控制。

2

此设备类型不支持调用的方法。

3

缺少必需的target_state

4

缺少必需的target_state.gain_db

5

指定的增益超出了设备的允许范围。

6

已请求 MUTE,但设备没有 MUTE 控件。

7

已请求启用 AGC,但设备没有 AGC。

DeviceType 灵活

类型:uint32

fuchsia.audio.device/device.fidl 中定义

驱动程序使用的协议及其方向性(如果是 StreamConfig)。

名称说明
1

设备使用 fuchsia.hardware.audio/Codec 协议。

2

设备使用 fuchsia.hardware.audio/Composite 协议。

3

设备使用 fuchsia.hardware.audio/Dai 协议。

4

设备使用 fuchsia.hardware.audio/StreamConfig,并且是音频流的来源。

5

设备使用 fuchsia.hardware.audio/StreamConfig,是音频流的目的地。

ObserverGetReferenceClockError 灵活

类型:uint32

fuchsia.audio.device/registry.fidl 中定义

Observer/GetReferenceClock 返回的错误。

名称说明
1

此设备遇到了错误,无法继续被观测。

2

此设备类型不支持调用的方法。

3

无法返回设备的参考时钟。

ObserverWatchGainStateError灵活

类型:uint32

fuchsia.audio.device/registry.fidl 中定义

Observer/WatchGainState 返回的错误。

名称说明
1

此设备遇到了错误,无法继续被观测。

2

此设备类型不支持调用的方法。

3

上一个 WatchGainState 调用尚未完成。

ObserverWatchPlugStateError灵活

类型:uint32

fuchsia.audio.device/registry.fidl 中定义

Observer/WatchPlugState 返回的错误。

名称说明
1

此设备遇到了错误,无法继续被观测。

2

此设备类型不支持调用的方法。

3

上一个 WatchPlugState 调用尚未完成。

ConnectorDetectCapabilities 灵活

类型:uint32

fuchsia.audio.device/registry.fidl 中定义

设备的热插拔功能。

名称说明
0

设备应始终接通电源。插头状态无法更改。

1

设备可以拔下/接通电源,并可以异步通知变化。

ConnectorState 灵活

类型:uint32

fuchsia.audio.device/registry.fidl 中定义

设备当前的插入状态。

名称说明
1

已连接且可用于音频流式传输。

2

未连接;不支持音频流式传输。

ProviderAddDeviceError 灵活

类型:uint32

fuchsia.audio.device/provider.fidl 中定义

Provider 协议返回的错误。

名称说明
1

必需的 device_name 的格式不正确,为空或缺失。

2

缺少必需的device_type

3

必需的driver_client无效或缺失。

4

driver_client 中的协议与 device_type 不兼容或尚不支持。

RegistryCreateObserverError灵活

类型:uint32

fuchsia.audio.device/registry.fidl 中定义

Registry/CreateObserver 返回的错误。

名称说明
1

缺少必需的token_id

2

缺少必需的observer_server

3

未找到 token_id 对应的设备。此令牌从未使用过,或者具有 token_id 的设备已被移除。

4

具有 token_id 的设备遇到了错误,无法再被检测到。

RegistryWatchDeviceRemovedError 灵活

类型:uint32

fuchsia.audio.device/registry.fidl 中定义

Registry/WatchDeviceRemoved 返回的错误。

名称说明
1

上一个 WatchDeviceRemoved 调用尚未完成。

RegistryWatchDevicesAddedError灵活

类型:uint32

fuchsia.audio.device/registry.fidl 中定义

Registry/WatchDevicesAdded 返回的错误。

名称说明
1

上一个 WatchDevicesAdded 调用尚未完成。

RingBufferSetActiveChannelsError灵活

类型:uint32

fuchsia.audio.device/control.fidl 中定义

RingBuffer/SetActiveChannels 返回的错误。

名称说明
1

此设备遇到了错误,无法继续控制。

2

上一个 SetActiveChannels 调用尚未完成。

3

设备不支持 SetActiveChannels。无法停用单个渠道(所有渠道始终有效)。

4

缺少必需的channel_bitmask

5

传递的 channel_bitmask 指定的通道超出了当前为此环形缓冲区配置的通道范围。

RingBufferStartError灵活

类型:uint32

fuchsia.audio.device/control.fidl 中定义

RingBuffer/Start 返回的错误。

名称说明
1

此设备遇到了错误,无法继续控制。

2

上一个 Start 调用尚未完成。

3

对已启动的环形缓冲区调用了 Start

RingBufferStopError灵活

类型:uint32

fuchsia.audio.device/control.fidl 中定义

RingBuffer/Stop 返回的错误。

名称说明
1

此设备遇到了错误,无法继续控制。

2

上一个 Stop 调用尚未完成。

3

对已停止的环形缓冲区调用了 Stop

RingBufferWatchDelayInfoError 灵活

类型:uint32

fuchsia.audio.device/control.fidl 中定义

RingBuffer/WatchDelayInfo 返回的错误。

名称说明
1

此设备遇到了错误,无法继续被观测。

2

上一个 WatchDelayInfo 调用尚未完成。

ChannelAttributes

fuchsia.audio.device/device.fidl 中定义

单个渠道的属性(如频率范围)。

序数野战类型说明
min_frequency uint32

此信道保证发射/捕获的最低频率,以 Hz 为单位。如果没有提供,此信道会扩展到设备范围的底部。

可选。

max_frequency uint32

此信道保证发射/捕获的最大频率,以 Hz 为单位。如果没有频率,此信道会扩展到设备范围的顶部。

可选。

ChannelSet

fuchsia.audio.device/device.fidl 中定义

一种可能的设备信道配置。

序数野战类型说明
attributes vector<ChannelAttributes>[64]

此矢量中的每一项描述该渠道的属性(例如频率范围)。此矢量的长度定义了该 ChannelSet 支持的通道数。必须包含至少一个条目。

必选。

ControlCreateRingBufferRequest 资源

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
element_id ElementId

RING_BUFFER 类型的 ENDPOINT 的元素 ID。

对于 Composite,必需;对于 StreamConfig,系统会忽略此参数。

options RingBufferOptions

有关所创建实际环形缓冲区的其他要求。

必选。

ring_buffer_server server_end<RingBuffer>

要创建的 RingBuffer 的 server_end。

必选。

ControlCreatorCreateRequest 资源

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
token_id TokenId

要控制的设备的令牌 ID。

必选。

control_server server_end<Control>

要创建的 Control 的 server_end。

必选。

ControlCreator_Create_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明

ControlSetDaiFormatRequest

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
element_id ElementId

DAI_INTERCONNECT 类型的 ENDPOINT 的元素 ID。

对于 Composite,必需;对于 Codec,系统会忽略此参数。

dai_format fuchsia.hardware.audio/DaiFormat

ControlSetGainRequest

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
target_state GainState

要设置的增益状态。

必选。

Control_CodecStart_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
start_time zx/Time

Control_CodecStop_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
stop_time zx/Time

Control_CreateRingBuffer_Response 资源

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
properties RingBufferProperties

创建时有关环形缓冲区和活跃音频流的属性。

ring_buffer fuchsia.audio/RingBuffer

表示音频流和环形内存本身的对象。 注意:环形缓冲区 VMO 内存范围必须在每次读取前缓存失效,并在每次写入后刷新缓存。

Control_Reset_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明

Control_SetDaiFormat_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
state fuchsia.hardware.audio/CodecFormatInfo

Control_SetGain_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明

DelayInfo

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
internal_delay zx/Duration

驱动程序对硬件内部延迟的最佳估计值,该值针对所选格式将其抽象化。此时长不得为负数。

必选。

external_delay zx/Duration

互连以外流水线的延迟时间(输出设备的 DMA“读取”位置之后,或输入设备的 DMA“写入”位置之前)。如果存在,此时长必须是非负数。

可选。

ElementDaiFormatSet

fuchsia.audio.device/device.fidl 中定义

下表显示了此端点可以支持的可能 Dai 格式。

序数野战类型说明
element_id ElementId

要描述的元素的 ID。这必须与设备的 Info 表中包含的元素列表中的 ENDPOINT (DAI_INTERCONNECT) 条目匹配。如果要描述编解码器或 Dai 设备支持的 DAI 格式,则此值应为 DEFAULT_DAI_INTERCONNECT_ELEMENT_ID (1)。

必选。

format_sets vector<fuchsia.hardware.audio/DaiSupportedFormats>[64]

此元素支持的 dai_format_set 条目。

(必填)。必须包含至少一个条目。

ElementRingBufferFormatSet

fuchsia.audio.device/device.fidl 中定义

下表列出了此端点可以支持的 RingBuffer 格式。

序数野战类型说明
element_id ElementId

要描述的元素的 ID。这必须与设备的 Info 表中包含的元素列表中的 ENDPOINT (RING_BUFFER) 条目匹配。如果要描述 Dai 或 StreamConfig 设备支持的 RingBuffer 格式,则此值应为 DEFAULT_RING_BUFFER_ELEMENT_ID (0)。

必选。

format_sets vector<PcmFormatSet>[64]

此元素支持的 ring_buffer_format_set 条目。

(必填)。必须包含至少一个条目。

GainCapabilities

fuchsia.audio.device/registry.fidl 中定义

设备的总体增益能力。

序数野战类型说明
min_gain_db float32

设备的最小增益(以分贝为单位)。

必选。

max_gain_db float32

设备的最大增益(以分贝为单位)。

必选。

gain_step_db float32

每个增益变化步的精确度(以分贝为单位)。

必选。

can_mute bool

如果为 true,设备会包含不同的 MUTE 控件。如果为 false 或不存在,则系统不会显示此参数。

可选。

can_agc bool

自动增益控制。如果没有,则表示此硬件不支持 AGC。

可选。

GainState

fuchsia.audio.device/device.fidl 中定义

设备的当前增益状态。

序数野战类型说明
gain_db float32

设备级增益(以分贝为单位)。

必选。

muted bool

所有频道的静音状态。如果没有,所有频道都会取消静音。

可选。

agc_enabled bool

自动增益控制。如果没有,则将其停用。

可选。

参考

fuchsia.audio.device/registry.fidl 中定义

检测到设备(或通过 Provider/AddDevice 添加)时,系统会查询其属性和功能。此枚举过程完成后,系统会通过 Registry/WatchDevicesAdded 向正在监控设备到达的客户端发出通知。

系统会针对已添加的每个音频设备返回一个 Info 表。

序数野战类型说明
token_id TokenId

保证对此启动会话具有唯一性的设备标识符,但在重新启动后可能会发生变化。

所有设备类型都必需。

device_type DeviceType

驱动程序使用的协议及其方向性(如果是 StreamConfig)。

所有设备类型都必需。

device_name string[256]

从 devfs 或 Provider/AddDevice 调用方接收的设备高层级名称。

所有设备类型都必需。

manufacturer string[256]

设备制造商的名称。

对于所有设备类型,此属性为可选属性。

product string[256]

设备的简要产品名称。

对于所有设备类型,此属性为可选属性。

unique_instance_id uint8[16]

由驱动程序提供的 16 个字符的 ID(如果存在)可用于区分同一设备的实例。此值不应在系统重新启动后发生变化。

对于所有设备类型,此属性为可选属性。

is_input bool

设备是音频的来源 (is_input TRUE) 还是目标 (is_input FALSE)。

StreamConfig 为必需项;编解码器为可选配置;Composite 时则没有。

ring_buffer_format_sets vector<ElementRingBufferFormatSet>[64]

设备配置设置的所有组合中设备可以支持的所有格式的并集。 如果设备公开了一个或多个 RingBuffer ENDPOINT 元素,则此字段必须存在,并且对于每个相关 ENDPOINT 元素,其矢量必须只包含一个条目。如果设备未公开 RingBuffer ENDPOINT 元素,则必须省略此字段(完全不存在,而不是用空向量填充)。

StreamConfig 为必需项;对于 Composite,为可选;Codec 不存在。

dai_format_sets vector<ElementDaiFormatSet>[64]

设备配置设置的所有组合中设备可以支持的所有 DAI 格式的并集。如果设备公开了一个或多个 Dai ENDPOINT 元素,则此字段必须存在,并且对于每个相关 ENDPOINT 元素,其矢量必须只包含一个条目。如果设备未公开 Dai ENDPOINT 元素,则必须省略此字段(完全不存在,而不是用空矢量填充)。

对于编解码器为必需;对于 Composite,为可选项;对于 StreamConfig,不存在。

gain_caps GainCapabilities

设备的增益/静音功能。

StreamConfig 的必需项;编解码器和 Composite 集成时不适用。

plug_detect_caps PlugDetectCapabilities

设备的热插拔功能。

Codec 和 StreamConfig 要求提供,Composite 不支持。

clock_domain ClockDomain

运行设备的时钟硬件的时钟域的标识符。同一时钟网域中的设备会保持完全同步。它们可能会相对于其他时钟域漂移,但该域中的所有时钟会同时完美发生。虽然它们的时钟频率相同,但它们的位置可能会偏移任意的固定量。

时钟域有两个特殊值:

  • CLOCK_DOMAIN_MONOTONIC 表示硬件由系统单调时钟驱动,并且将始终与该时间轴同步。

  • CLOCK_DOMAIN_EXTERNAL 表示硬件不与其他任何已知时钟同步(甚至是 CLOCK_DOMAIN_EXTERNAL 中的任何其他时钟)。

Composite 和 StreamConfig 必需;编解码器除外。

signal_processing_elements vector<fuchsia.hardware.audio.signalprocessing/Element>[64]

支持的信号处理元素的矢量。 如果存在,则必须至少包含一个元素。

对于 Composite 是必需的;对于 Codec 和 StreamConfig,则为可选。

signal_processing_topologies vector<fuchsia.hardware.audio.signalprocessing/Topology>[64]

支持的信号处理拓扑的矢量。如果存在,则必须至少包含一个元素。

对于 Composite 是必需的;对于 Codec 和 StreamConfig,则为可选。

Observer_GetReferenceClock_Response 资源

fuchsia.audio.device/registry.fidl 中定义

序数野战类型说明
reference_clock handle<clock>

设备的参考时钟。

Observer_WatchGainState_Response

fuchsia.audio.device/registry.fidl 中定义

序数野战类型说明
state GainState

设备的最新增益状态。

Observer_WatchPlugState_Response

fuchsia.audio.device/registry.fidl 中定义

序数野战类型说明
state PlugState

设备当前的插头状态。

plug_time zx/Time

插头状态最近一次更改的时间(采用 CLOCK_MONOTONIC)。

PcmFormatSet

fuchsia.audio.device/device.fidl 中定义

此表包含代表设备配置的三个维度(声道化、采样格式、帧速率)的向量。设备应支持这些矢量中的项目的所有组合。

序数野战类型说明
channel_sets vector<ChannelSet>[64]

设备支持的声道集数量。必须至少包含一个 ChannelSet 条目。

必选。

sample_types vector<fuchsia.audio/SampleType>[32]

设备支持的样本格式数量。它必须包含至少一个 AudioSampleFormat 条目。

必选。

frame_rates vector<uint32>[64]

设备支持的帧速率数。它必须至少包含一个帧速率条目。

必选。

ProviderAddDeviceRequest 资源

fuchsia.audio.device/provider.fidl 中定义

序数野战类型说明
device_name string[256]

设备的概要名称。不得为空字符串。

必选。

device_type DeviceType

指示设备使用的协议,以及(如果是 StreamConfig)是输入(音频来源)还是输出(音频的目的地)。

必选。

driver_client DriverClient

此服务将用于配置/观察设备的协议通道(Codec、Composite、Dai 或 StreamConfig)的 client_end。目前,AddDevice 仅接受此处的 codec_clientcomposite_clientstream_config_client

必选。

弃用

不再支持 Codec、Dai 和 StreamConfig,请改用音频复合材料。请参阅音频驱动程序架构

已废弃:HEAD

Provider_AddDevice_Response

fuchsia.audio.device/provider.fidl 中定义

序数野战类型说明

RegistryCreateObserverRequest 资源

fuchsia.audio.device/registry.fidl 中定义

序数野战类型说明
token_id TokenId

要观察的设备的令牌。

必选。

observer_server server_end<Observer>

要创建的 Observer 的服务器端。

必选。

Registry_CreateObserver_Response

fuchsia.audio.device/registry.fidl 中定义

序数野战类型说明

Registry_WatchDeviceRemoved_Response

fuchsia.audio.device/registry.fidl 中定义

序数野战类型说明
token_id TokenId

设备最近移除的令牌。

Registry_WatchDevicesAdded_Response

fuchsia.audio.device/registry.fidl 中定义

序数野战类型说明
devices vector<Info>[256]

自上次调用 WatchDevicesAdded 以来添加的设备。首次调用时,此方法会返回所有音频设备。

RingBufferOptions

fuchsia.audio.device/control.fidl 中定义

创建环形缓冲区时由调用方指定的参数。

序数野战类型说明
format fuchsia.audio/Format

要创建的环形缓冲区的格式(采样格式、信道化、帧速率)。

必选。

ring_buffer_min_bytes uint32

环形缓冲区中所需的最少字节数。实际缓冲区可能会更大,具体取决于编码、驱动程序、设备或操作系统的要求。

必选。

RingBufferProperties

fuchsia.audio.device/control.fidl 中定义

环形缓冲区或关联音频流的相关信息。

序数野战类型说明
valid_bits_per_sample uint8

每个样本中有效的位数(从最高有效位数开始)。这可能小于实际样本大小(例如,如果是由 18 位 ADC 馈送的输入环形缓冲区),任何其他精度位都应忽略。

必选。

turn_on_delay zx/Duration

调用 SetActiveChannels 后,停用的信道完全正常运行之前的最大延迟。这是重新启用所有频道时最糟糕的时长。该值必须是非负数。

必选。

RingBufferSetActiveChannelsRequest

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
channel_bitmask uint64

要启用的渠道(应停用所有其他渠道)。不应在环形缓冲区格式中指定的 channel_count 之上设置任何位(例如,对于四通道流,channel_bitmask 必须在 [0x00, 0x0F] 范围内)。

必选。

RingBufferStartRequest

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明

RingBufferStopRequest

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明

RingBuffer_SetActiveChannels_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
set_time zx/Time

配置硬件时的 CLOCK_MONOTONIC 时间。注意:这不包括 turn_on_delay 对数据流的影响。

必选。

RingBuffer_Start_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
start_time zx/Time

直播开始的 CLOCK_MONOTONIC 时间。

必选。

RingBuffer_Stop_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明

RingBuffer_WatchDelayInfo_Response

fuchsia.audio.device/control.fidl 中定义

序数野战类型说明
delay_info DelayInfo

必选。

联合

ControlCreator_Create_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response ControlCreator_Create_Response
err ControlCreatorError

Control_CodecStart_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response Control_CodecStart_Response
err ControlCodecStartError

Control_CodecStop_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response Control_CodecStop_Response
err ControlCodecStopError

Control_CreateRingBuffer_Result strict 资源

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response Control_CreateRingBuffer_Response
err ControlCreateRingBufferError

Control_Reset_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response Control_Reset_Response
err ControlResetError

Control_SetDaiFormat_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response Control_SetDaiFormat_Response
err ControlSetDaiFormatError

Control_SetGain_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response Control_SetGain_Response
err ControlSetGainError

DriverClient 柔性 资源

fuchsia.audio.device/device.fidl 中定义

用于配置和观察设备的协议通道。

弃用

不再支持 Codec、Dai 和 StreamConfig,请改用音频复合材料。请参阅音频驱动程序架构

已废弃:HEAD
序数变体类型说明
codec fuchsia.hardware.audio/Codec

为使用 fuchsia_hardware_audio.Codec 接口的驱动程序填充。

composite fuchsia.hardware.audio/Composite

为使用 fuchsia_hardware_audio.Composite 接口的驱动程序填充。

dai fuchsia.hardware.audio/Dai

为使用 fuchsia_hardware_audio.Dai 接口的驱动程序填充。

stream_config fuchsia.hardware.audio/StreamConfig

为使用 fuchsia_hardware_audio.StreamConfig 接口的驱动程序填充。

Observer_GetReferenceClock_Result 严格资源

fuchsia.audio.device/registry.fidl 中定义

序数变体类型说明
response Observer_GetReferenceClock_Response
err ObserverGetReferenceClockError

Observer_WatchGainState_Result 严格

fuchsia.audio.device/registry.fidl 中定义

序数变体类型说明
response Observer_WatchGainState_Response
err ObserverWatchGainStateError

Observer_WatchPlugState_Result 严格

fuchsia.audio.device/registry.fidl 中定义

序数变体类型说明
response Observer_WatchPlugState_Response
err ObserverWatchPlugStateError

Provider_AddDevice_Result 严格

fuchsia.audio.device/provider.fidl 中定义

序数变体类型说明
response Provider_AddDevice_Response
err ProviderAddDeviceError

Registry_CreateObserver_Result 严格

fuchsia.audio.device/registry.fidl 中定义

序数变体类型说明
response Registry_CreateObserver_Response
err RegistryCreateObserverError

Registry_WatchDeviceRemoved_Result 严格

fuchsia.audio.device/registry.fidl 中定义

序数变体类型说明
response Registry_WatchDeviceRemoved_Response
err RegistryWatchDeviceRemovedError

Registry_WatchDevicesAdded_Result严格

fuchsia.audio.device/registry.fidl 中定义

序数变体类型说明
response Registry_WatchDevicesAdded_Response
err RegistryWatchDevicesAddedError

RingBuffer_SetActiveChannels_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response RingBuffer_SetActiveChannels_Response
err RingBufferSetActiveChannelsError

RingBuffer_Start_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response RingBuffer_Start_Response
err RingBufferStartError

RingBuffer_Stop_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response RingBuffer_Stop_Response
err RingBufferStopError

RingBuffer_WatchDelayInfo_Result 严格

fuchsia.audio.device/control.fidl 中定义

序数变体类型说明
response RingBuffer_WatchDelayInfo_Response
err RingBufferWatchDelayInfoError

常量

名称类型说明
DEFAULT_DAI_INTERCONNECT_ELEMENT_ID 1 uint64

对于带有编解码器或 Dai 驱动程序的设备,只有一个 DAI_INTERCONNECT 实体。当某种方法要求我们按 ID 处理互连时,我们将使用 element_id 1。实现信号处理的编解码器和 Dai 驱动程序不应将此 ID 分配给其他元素。

DEFAULT_RING_BUFFER_ELEMENT_ID 0 uint64

对于带有 Dai 或 StreamConfig 驱动程序的设备,只有一个 RING_BUFFER 实体。当某个方法要求我们按 ID 处理 RingBuffer 时,我们将使用 element_id 0。实现信号处理的 Dai 和 StreamConfig 驱动程序不应将此 ID 分配给其他元素。

MAX_COUNT_CHANNELS fuchsia.hardware.audio/MAX_COUNT_CHANNELS_IN_RING_BUFFER uint32

一台设备能报告为支持的渠道数量上限。

MAX_COUNT_CHANNEL_SETS fuchsia.hardware.audio/MAX_COUNT_CHANNEL_SETS uint32

一台设备可以在单个 PcmFormatSet 中报告的 ChannelSet 数量上限。

MAX_COUNT_DAI_FORMATS fuchsia.hardware.audio/MAX_COUNT_DAI_FORMATS uint32
MAX_COUNT_DEVICES 256 uint32

系统中任意时刻音频设备的数量上限。

MAX_COUNT_FORMATS fuchsia.hardware.audio/MAX_COUNT_FORMATS uint32

一台设备可报告的受支持 PcmFormatSet 的数量上限。

MAX_COUNT_PROCESSING_ELEMENTS fuchsia.hardware.audio.signalprocessing/MAX_COUNT_PROCESSING_ELEMENTS uint32

单个设备支持的处理元素数量上限。

MAX_COUNT_RATES fuchsia.hardware.audio/MAX_COUNT_SUPPORTED_RATES uint32

设备可在 PcmFormatSet 中报告的帧速率上限。

MAX_COUNT_SAMPLE_TYPES 32 uint32

一个 PcmFormatSet 可以包含的不同样本格式的最大数量。

MAX_STRING_SIZE fuchsia.hardware.audio/MAX_UI_STRING_SIZE uint32

设备、制造商和产品名称的字符串长度上限。

UNIQUE_INSTANCE_ID_SIZE fuchsia.hardware.audio/UNIQUE_ID_SIZE uint32

设备的唯一 ID 的长度(以字节为单位)。

别名

名称说明
ClockDomain uint32

多个 fuchsia.audio.device 协议使用的常用别名、常量和类型。

ElementId uint64
TokenId uint64
TopologyId uint64