fuchsia.audio.device

添加时间:HEAD

PROTOCOLS

控制

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

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

CodecStart

启动编解码器硬件。如果成功,此代码将在编解码器启动后返回,并且 start_time 表示硬件的启动时间。请注意,编解码器的 DaiFormat 必须(通过成功的 SetDaiFormat 调用)设置,然后才能调用此方法。

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

请求

<空>

响应

名称类型
payload Control_CodecStart_Result

CodecStop

停止编解码器硬件。如果成功,则当编解码器停止运行并且 stop_time 表示硬件停止的时间。请注意,编解码器的 DaiFormat 必须(通过成功的 SetDaiFormat 调用)设置,然后才能调用此方法。

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

请求

<空>

响应

名称类型
payload Control_CodecStop_Result

CreateRingBuffer

创建用于向/从此设备传递音频的环形缓冲区。如果设备 复合,则目标 RING_BUFFER ENDPOINT 必须由 element_id 标识。

应只针对复合设备和 StreamConfig 设备进行调用。

请求

名称类型
payload ControlCreateRingBufferRequest

响应

名称类型
payload Control_CreateRingBuffer_Result

GetElements

返回支持的处理元素的矢量。 必须返回一个或多个处理元素,或者 ZX_ERR_NOT_SUPPORTED。 如果 GetTopologies 返回一个或多个拓扑,则 GetElements 必须返回一个或 更多元素。

请求

<空>

响应

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

GetTopologies

返回受支持拓扑的矢量。 必须返回一个或多个拓扑或 ZX_ERR_NOT_SUPPORTED。 如果返回多个拓扑,则客户端可以从 包含 SetTopology 的列表。 如果只返回一个拓扑,则拓扑定义仅用作信息,因为 使用 SetTopology 是无法更改的唯一拓扑。 如果 GetElements 返回一个或多个元素,则 GetTopologies 必须返回 更多拓扑。

请求

<空>

响应

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

重置

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

此方法将在硬件重置完成后返回。 调用此方法后,设备仍会受到控制,但所有环形缓冲区都必须 已重新创建并重启。 对于具有 DAI_INTERCONNECTs 的设备(例如编解码器和一些 Composites),SetDaiFormat 和 必须(按此顺序)再次调用 CodecStart,才能使互连恢复为活跃状态 运行模式 如果适用,还必须调用 SetTopologySetElementState

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

请求

<空>

响应

名称类型
payload Control_Reset_Result

SetDaiFormat

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

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

请求

名称类型
payload ControlSetDaiFormatRequest

响应

名称类型
payload Control_SetDaiFormat_Result

SetElementState

使用 GetElements 返回的唯一 ElementId 来控制处理元素。 请注意,SettableElementStateElementState 的子集,因为返回的某些字段 来自 WatchElementState 的数据(例如 latency)只能由客户端观察到(未设置)。

如果 processing_element_id 与返回的 ID 不匹配,则返回 ZX_ERR_INVALID_ARGS 或者“SettableTypeSpecificElementState”的类型不符合GetElementsElementType 此 ID 的 GetElements。 如果 state 值无效(即任何值),驱动程序可能会返回 ZX_ERR_INVALID_ARGS 的值违反了此协议中指定的规则,例如尝试改变 进行此处理时,EQUALIZER 个处理元素的 EqualizerBandState frequency 元素未在其 supported_controls 中通告 CAN_CONTROL_FREQUENCY

可以在非 SignalProcessing 协议之前或之后调用 SetElementState 调用。如果在非 SignalProcessing 协议调用之后调用,则 SetElementState 不一定需要重新协商驱动程序状态,因为 通过调用构成 SignalProcessing 的协议来联系,例如Dai。 例如,SetElementState 更改 AGL 处理元素的参数 可能不需要重新协商 Dai 状态,因为更改增益参数通常 不会更改支持的音频格式集。 相比之下,如果 SetElementState 更改了 CONNECTION_POINT 的参数 元素,那么更改可能需要重新进行协商,因为这可能会使 上一个 GetDaiFormats Dai 协议调用中返回的受支持格式。

决定何时需要进行重新协商是驾驶员的职责。如果重新协商 则 SetElementState 必须返回 ZX_ERR_BAD_STATE,并且客户端必须 关闭协议通道,以便重新开始协商。 然后,客户端必须进行返回的 SetElementState 调用 ZX_ERR_BAD_STATE,然后再调用任何非 SignalProcessing 协议。

请求

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

响应

名称类型
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 是可选的,没有任何影响。

可以在非 SignalProcessing 协议调用之前或之后调用 SetTopology。 如果在非 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 客户端发送的内容驱动程序不会响应后续客户端 WatchElementState 对给定 processing_element_id 的调用,直到 Element 表的任何字段发生更改 与该processing_element_id的最近报告的数据相比。

驱动程序将关闭协议通道并显示 ZX_ERR_BAD_STATE 错误 当此客户端已有待处理的 WatchElementState 时,系统会再次调用该方法 和 processing_element_id。

请求

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

响应

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

WatchTopology

通过挂起获取来获取当前拓扑。 驱动程序将立即回复每个客户端发送的第一个 WatchTopology。通过 驱动程序不会响应来自该客户端的后续 WatchTopology 调用,直到 信号处理拓扑发生变化,这是由于 SetTopology 调用而发生的。 驱动程序将关闭协议通道并显示 ZX_ERR_BAD_STATE 错误 当此客户端已有待处理的 WatchTopology 时,系统会再次调用该方法。

添加时间:HEAD

请求

<空>

响应

名称类型
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。 如果 GetTopologies 返回一个或多个拓扑,则 GetElements 必须返回一个或 更多元素。

请求

<空>

响应

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

GetReferenceClock

检索设备的参考时钟。

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

应只针对复合或 StreamConfig 设备进行调用。

请求

<空>

响应

名称类型
payload Observer_GetReferenceClock_Result

GetTopologies

返回受支持拓扑的矢量。 必须返回一个或多个拓扑或 ZX_ERR_NOT_SUPPORTED。 如果返回多个拓扑,则客户端可以从 包含 SetTopology 的列表。 如果只返回一个拓扑,则拓扑定义仅用作信息,因为 使用 SetTopology 是无法更改的唯一拓扑。 如果 GetElements 返回一个或多个元素,则 GetTopologies 必须返回 更多拓扑。

请求

<空>

响应

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

WatchElementState

通过挂起 get 获取处理元素状态。 对于指定的 processing_element_id,驱动程序将回复第一个 WatchElementState 客户端发送的内容驱动程序不会响应后续客户端 WatchElementState 对给定 processing_element_id 的调用,直到 Element 表的任何字段发生更改 与该processing_element_id的最近报告的数据相比。

驱动程序将关闭协议通道并显示 ZX_ERR_BAD_STATE 错误 当此客户端已有待处理的 WatchElementState 时,系统会再次调用该方法 和 processing_element_id。

请求

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

响应

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

WatchGainState

请求通知设备增益状态的任何变化。

注意:此操作仅会在更改 设备的 Info 表(具体而言,就是 GainCapabilities)。使用 WatchElementState 的增益处理公开为 SignalProcessingGetTopologiesGetElements)。

应仅针对 StreamConfig 设备调用。

请求

<空>

响应

名称类型
payload Observer_WatchGainState_Result

WatchPlugState

请求通知设备插头状态有任何变化。时间 它会立即返回。

应仅针对编解码器或 StreamConfig 设备调用。

请求

<空>

响应

名称类型
payload Observer_WatchPlugState_Result

WatchTopology

通过挂起获取来获取当前拓扑。 驱动程序将立即回复每个客户端发送的第一个 WatchTopology。通过 驱动程序不会响应来自该客户端的后续 WatchTopology 调用,直到 信号处理拓扑发生变化,这是由于 SetTopology 调用而发生的。 驱动程序将关闭协议通道并显示 ZX_ERR_BAD_STATE 错误 当此客户端已有待处理的 WatchTopology 时,系统会再次调用该方法。

添加时间:HEAD

请求

<空>

响应

名称类型
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

注册在(有效,已添加)设备被移除时收到通知。 由于该方法仅通知一次移除,因此在完成时, 应该立即重新提出投诉,以防出现其他移除情况。 对此方法的调用将会暂停,直到移除之前 包含在之前的 WatchDevicesAdded 响应中。

请求

<空>

响应

名称类型
payload Registry_WatchDeviceRemoved_Result

WatchDevicesAdded

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

请求

<空>

响应

名称类型
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 调用。之后的调用将 仅当延迟时间信息与之前相比发生了变化时,才能完成 传达的价值。

请求

<空>

响应

名称类型
payload RingBuffer_WatchDelayInfo_Result

精英

ControlCodecStartError flexible

类型: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/Reset 返回的错误数。

名称说明
1

此设备出现错误,无法继续控制。

2

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

3

上一个 Reset 调用尚未完成。

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 调用尚未完成。

LuxeDetectCapabilities 柔性

类型:uint32

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

设备的热插拔功能。

名称说明
0

设备始终处于插入状态。插头状态无法更改。

1

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

InsertState 柔性环境

类型: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 flexible

类型: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 中定义

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

Ordinal字段类型说明
min_frequency uint32

此信道保证发射/捕获的最低频率(以 Hz 为单位)。 如果没有,此声道会延伸至设备范围的底部。

可选。

max_frequency uint32

此信道保证发射/捕获的最大频率(以 Hz 为单位)。 如果不包含,此声道会扩展至设备范围的顶部。

可选。

ChannelSet

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

设备的一个可能的频道配置。

Ordinal字段类型说明
attributes vector<ChannelAttributes>[64]

此矢量中的每一项都描述了属性(例如频率范围) 频道的实际表现该矢量的长度决定了 此 ChannelSet 支持的频道。必须包含至少一个条目。

必填。

ControlCreateRingBufferRequest 资源

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

Ordinal字段类型说明
element_id ElementId

RING_BUFFER 类型的 ENDPOINT 的元素 ID。

对于复合材料,该属性是必填项;对于 StreamConfig,将忽略该字段。

options RingBufferOptions

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

必填。

ring_buffer_server server_end<RingBuffer>

要创建的 RingBuffer 的 server_end。

必填。

ControlCreatorCreateRequest 资源

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

Ordinal字段类型说明
token_id TokenId

要控制的设备的令牌 ID。

必填。

control_server server_end<Control>

要创建的 Control 的 server_end。

必填。

ControlCreator_Create_Response

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

Ordinal字段类型说明

ControlSetDaiFormatRequest

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

Ordinal字段类型说明
element_id ElementId

DAI_INTERCONNECT 类型的 ENDPOINT 的元素 ID。

对于复合材料,该属性是必填项;对于编解码器,将忽略该值。

dai_format fuchsia.hardware.audio/DaiFormat

ControlSetGainRequest

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

Ordinal字段类型说明
target_state GainState

要设置的增益状态。

必填。

Control_CodecStart_Response

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

Ordinal字段类型说明
start_time zx/Time

Control_CodecStop_Response

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

Ordinal字段类型说明
stop_time zx/Time

Control_CreateRingBuffer_Response 资源

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

Ordinal字段类型说明
properties RingBufferProperties

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

ring_buffer fuchsia.audio/RingBuffer

表示音频流和响铃内存本身的对象。 注意:必须先使环形缓冲区 VMO 内存范围缓存失效 并且在每次写入后被清空缓存。

Control_Reset_Response

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

Ordinal字段类型说明

Control_SetDaiFormat_Response

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

Ordinal字段类型说明
state fuchsia.hardware.audio/CodecFormatInfo

Control_SetGain_Response

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

Ordinal字段类型说明

DelayInfo

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

Ordinal字段类型说明
internal_delay zx/Duration

对驱动程序为其抽象化的硬件内部延迟的最优估算值 所选格式此时长必须是非负数。

必填。

external_delay zx/Duration

互连之外的管道延迟量( DMA“读取”输出设备的位置,或 DMA“写入”之前 输入设备的实际位置)。此时长(如果存在)必须是非负数。

可选。

ElementDaiFormatSet

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

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

Ordinal字段类型说明
element_id ElementId

所描述元素的 ID。此字段必须与端点 (DAI_INTERCONNECT) 匹配 条目。Info如果要描述的是 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 格式。

Ordinal字段类型说明
element_id ElementId

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

必填。

format_sets vector<PcmFormatSet>[64]

此元素支持的 ring_buffer_format_set 条目。

必需。必须包含至少一个条目。

GainCapabilities

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

设备的总体增益功能。

Ordinal字段类型说明
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 中定义

设备的当前状态,即增益状态。

Ordinal字段类型说明
gain_db float32

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

必填。

muted bool

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

可选。

agc_enabled bool

自动增益控制。如果不存在,则为停用。

可选。

信息

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

当检测到设备(或通过 Provider/AddDevice 添加设备)时, 查询其属性和功能。完成此枚举过程后, 完成后,系统会向关注设备到货情况的客户发出公告 经由Registry/WatchDevicesAdded

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

Ordinal字段类型说明
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 是必需的;对于编解码器而言,可选参数;。

ring_buffer_format_sets vector<ElementRingBufferFormatSet>[64]

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

StreamConfig 是必需的;对于复合材料,此属性为可选属性;不适用于编解码器。

dai_format_sets vector<ElementDaiFormatSet>[64]

设备可支持的所有 DAI 格式在所有组合中的并集 设备配置设置部分 如果设备提供一个或多个 Dai ENDPOINT 元素,则此字段必须包含且其 对于每个相关 ENDPOINT 元素,矢量必须正好包含一个条目。 如果设备显示 NO Dai ENDPOINT 元素,则必须省略此字段(完全不存在, 而不是填充空矢量)。 必须包含至少一个元素(如果存在)。

编解码器必需;对于复合材料,此属性为可选属性;不包含。

gain_caps GainCapabilities

设备的增益/静音功能。

StreamConfig 是必需的;对于编解码器和复合元数据,此字段不存在。

plug_detect_caps PlugDetectCapabilities

设备的热插拔功能。

对于编解码器和 StreamConfig,则为必需项;。

clock_domain ClockDomain

设备的时钟硬件所在时钟域的标识符 同一时钟域中的设备保持完美 已同步。它们可能会相对于其他一些时钟域偏移,但是 该域中的所有时钟将完美“组合在一起”。虽然 它们的时钟有相同的频率,那么它们的位置可能会有 任意、固定金额。

时钟域有两个特殊值:

  • CLOCK_DOMAIN_MONOTONIC 表示硬件由系统驱动 并始终与该时间线同步

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

对于 Composite 和 StreamConfig 是必需的;不适用于编解码器。

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

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

对于复合材料,该属性是必填项;对于编解码器和 StreamConfig,则为可选。

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

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

对于复合材料,该属性是必填项;对于编解码器和 StreamConfig,则为可选。

Observer_GetReferenceClock_Response 资源

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

Ordinal字段类型说明
reference_clock handle<clock>

设备的参考时钟。

Observer_WatchGainState_Response

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

Ordinal字段类型说明
state GainState

设备的最新增益状态。

Observer_WatchPlugState_Response

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

Ordinal字段类型说明
state PlugState

设备当前的插头状态。

plug_time zx/Time

最近一次插接状态更改的时间(在 CLOCK_MONOTONIC 中)。

PcmFormatSet

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

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

Ordinal字段类型说明
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 中定义

Ordinal字段类型说明
device_name string[256]

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

必填。

device_type DeviceType

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

必填。

driver_client DriverClient

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

必填。

弃用

不再支持编解码器、Dai 和 StreamConfig,请改用 音频复合音频 ,请参阅 音频驱动程序架构

已弃用:HEAD

Provider_AddDevice_Response

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

Ordinal字段类型说明

RegistryCreateObserverRequest 资源

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

Ordinal字段类型说明
token_id TokenId

要观察的设备的令牌。

必填。

observer_server server_end<Observer>

将创建的 Observer 的服务器端。

必填。

Registry_CreateObserver_Response

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

Ordinal字段类型说明

Registry_WatchDeviceRemoved_Response

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

Ordinal字段类型说明
token_id TokenId

最近最少移除的设备令牌。

Registry_WatchDevicesAdded_Response

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

Ordinal字段类型说明
devices vector<Info>[256]

WatchDevicesAdded 上次调用后添加的设备。调用时间 此方法第一次会返回所有可用的音频设备 (如果没有音频设备,即使是空矢量)。后续 在其他设备可用之前通话将会中断。

RingBufferOptions

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

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

Ordinal字段类型说明
format fuchsia.audio/Format

环的格式(样本格式、通道化、帧速率) 缓冲区。

必填。

ring_buffer_min_bytes uint32

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

必填。

RingBufferProperties

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

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

Ordinal字段类型说明
valid_bits_per_sample uint8

有效的位数(从最高有效位数开始) 。该数字可能比实际 样本大小(如果输入环形缓冲区由 18 位 ADC 馈送) 示例。应忽略任何额外的精度位。

必填。

turn_on_delay zx/Duration

被停用的渠道全面投入使用前的最长延迟时间, 在调用 SetActiveChannels 之后。这是最糟糕的 重新启用所有渠道。该值必须是非负数。

必填。

RingBufferSetActiveChannelsRequest

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

Ordinal字段类型说明
channel_bitmask uint64

要启用的渠道(所有其他渠道都应停用)。否 位应高于环中指定的 channel_count 缓冲区格式(例如,对于四通道视频流,则为 channel_bitmask 必须在 [0x00, 0x0F] 范围内)。

必填。

RingBufferStartRequest

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

Ordinal字段类型说明

RingBufferStopRequest

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

Ordinal字段类型说明

RingBuffer_SetActiveChannels_Response

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

Ordinal字段类型说明
set_time zx/Time

配置硬件时的 CLOCK_MONOTONIC 时间。注意: 但不包括 turn_on_delay 对音频流的影响。

必填。

RingBuffer_Start_Response

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

Ordinal字段类型说明
start_time zx/Time

数据流开始时的 CLOCK_MONOTONIC 时间。

必填。

RingBuffer_Stop_Response

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

Ordinal字段类型说明

RingBuffer_WatchDelayInfo_Response

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

Ordinal字段类型说明
delay_info DelayInfo

必填。

联合体

ControlCreator_Create_Result 严格

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

Ordinal变体类型说明
response ControlCreator_Create_Response
err ControlCreatorError

Control_CodecStart_Result 严格

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

Ordinal变体类型说明
response Control_CodecStart_Response
err ControlCodecStartError

Control_CodecStop_Result 严格

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

Ordinal变体类型说明
response Control_CodecStop_Response
err ControlCodecStopError

Control_CreateRingBuffer_Result 严格的资源

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

Ordinal变体类型说明
response Control_CreateRingBuffer_Response
err ControlCreateRingBufferError

Control_Reset_Result 严格

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

Ordinal变体类型说明
response Control_Reset_Response
err ControlResetError

Control_SetDaiFormat_Result 严格

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

Ordinal变体类型说明
response Control_SetDaiFormat_Response
err ControlSetDaiFormatError

Control_SetGain_Result 严格

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

Ordinal变体类型说明
response Control_SetGain_Response
err ControlSetGainError

DriverClient 柔性 资源

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

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

弃用

不再支持编解码器、Dai 和 StreamConfig,请改用 音频复合音频,请参见 音频驱动程序架构

已弃用:HEAD
Ordinal变体类型说明
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 中定义

Ordinal变体类型说明
response Observer_GetReferenceClock_Response
err ObserverGetReferenceClockError

Observer_WatchGainState_Result 严格

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

Ordinal变体类型说明
response Observer_WatchGainState_Response
err ObserverWatchGainStateError

Observer_WatchPlugState_Result 严格

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

Ordinal变体类型说明
response Observer_WatchPlugState_Response
err ObserverWatchPlugStateError

Provider_AddDevice_Result 严格

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

Ordinal变体类型说明
response Provider_AddDevice_Response
err ProviderAddDeviceError

Registry_CreateObserver_Result 严格

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

Ordinal变体类型说明
response Registry_CreateObserver_Response
err RegistryCreateObserverError

Registry_WatchDeviceRemoved_Result 严格

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

Ordinal变体类型说明
response Registry_WatchDeviceRemoved_Response
err RegistryWatchDeviceRemovedError

Registry_WatchDevicesAdded_Result严格

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

Ordinal变体类型说明
response Registry_WatchDevicesAdded_Response
err RegistryWatchDevicesAddedError

RingBuffer_SetActiveChannels_Result strict

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

Ordinal变体类型说明
response RingBuffer_SetActiveChannels_Response
err RingBufferSetActiveChannelsError

RingBuffer_Start_Result strict

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

Ordinal变体类型说明
response RingBuffer_Start_Response
err RingBufferStartError

RingBuffer_Stop_Result

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

Ordinal变体类型说明
response RingBuffer_Stop_Response
err RingBufferStopError

RingBuffer_WatchDelayInfo_Result 严格

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

Ordinal变体类型说明
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