Fuchsia.hardware.audio

添加:7

此文件定义了 PacketStream 协议,该协议用于流式传输基于数据包(例如编码)的音频,以进行播放和捕获。

PROTOCOLS

编解码器

在 fuchsia.hardware.audio/codec.fidl 中定义

如需了解概览,请参阅[音频编解码器接口]。

弃用

不再支持,请改用不含环形缓冲区的 Audio Composite 和一个 DAI,请参阅音频驱动程序架构

已弃用

GetDaiFormats

检索编解码器支持的 DAI 格式,如果当时不可用,编解码器可能会回复错误状态,控制器可能会稍后重试。 检索多个 DaiSupportedFormats 可处理以下情况:可能支持 DaiSupportedFormats 中参数的独占组合。

请求

<EMPTY>

响应

名称类型
payload Codec_GetDaiFormats_Result

GetHealthState

检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。

请求

<EMPTY>

响应

名称类型
state HealthState

GetProperties

检索顶级静态属性。

请求

<EMPTY>

响应

名称类型
properties CodecProperties

重置

重置编解码器。 重置完成后,Reset 会返回。如果驱动程序无法成功重置编解码器,它将关闭编解码器协议通道,在这种情况下,客户端可以获取新的编解码器协议通道并重试。

请求

<EMPTY>

响应

<EMPTY>

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 时间线衡量。 如果驱动程序无法成功启动编解码器,它将关闭编解码器协议通道,在这种情况下,客户端可以获取新的编解码器协议通道并重试。

请求

<EMPTY>

响应

名称类型
start_time zx/Time

停止

停止编解码器操作。 在配置编解码器以停止时,Stop 会返回。此方法不会等待硬件实际停止播放/捕获(即不考虑 turn_off_delay 影响),返回的 stop_time 中也不会反映任何此类延迟。stop_time 表示驱动程序完成编解码器配置以停止的时间,以 CLOCK_MONOTONIC 时间线衡量。 如果驱动程序无法成功配置编解码器以停止,它将关闭编解码器协议通道,在这种情况下,客户端可以获取新的编解码器协议通道并重试。

请求

<EMPTY>

响应

名称类型
stop_time zx/Time

WatchPlugState

通过挂起的 get 获取插头检测状态。驱动程序将回复客户端发送的第一个 WatchPlugState。在插头状态从最近报告的状态发生变化之前,驱动程序不会响应后续的客户端 WatchPlugState 调用。

请求

<EMPTY>

响应

名称类型
plug_state PlugState

CodecConnector

在 fuchsia.hardware.audio/codec_connector.fidl 中定义

如需查看编解码器协议的概览,请参阅编解码器接口

弃用

不再支持,请改用不含环形缓冲区的 Audio Composite 和一个 DAI,请参阅音频驱动程序架构

已弃用

关联

连接到编解码器协议服务器。 这种对 Codec 协议的间接调用使我们能够支持独立的编解码器客户端连接。

请求

名称类型
codec_protocol server_end:Codec

复合材料

在 fuchsia.hardware.audio/composite.fidl 中定义

添加了:HEAD

CreatePacketStream

CreatePacketStream 由客户端发送,用于为 processing_element_id 指定的 PACKET_STREAM 处理元素选择数据包流格式。格式基于驱动程序在 GetPacketStreamFormats 中提供的信息、客户端支持的内容以及任何其他要求。返回的 packet_stream_control 通道用于访问和控制驱动程序提供的数据包流协议。

如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。如果相应 ID 所表示的元素的 ElementType 不是 PACKET_STREAM,则返回 WRONG_TYPE。 如果服务器目前无法为此元素/格式创建数据包流,但将来应该能够创建,则返回 SHOULD_WAIT。此请求可以重试。 如果驱动程序不支持数据包流,或者不支持指定的 format,则返回 NOT_SUPPORTED。

添加了:HEAD

请求

名称类型
processing_element_id ElementId
format Format2
packet_stream_control server_end:PacketStreamControl

响应

名称类型
payload Composite_CreatePacketStream_Result

CreateRingBuffer

CreateRingBuffer 由客户端发送,用于为 processing_element_id 指定的处理元素选择环形缓冲区格式 RING_BUFFER。该格式基于驱动程序在 GetRingBufferFormats 中提供的信息、客户端支持的信息以及任何其他要求。返回的 ring_buffer 通道用于访问和控制驱动程序提供的音频缓冲区。如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。 如果相应 ID 所表示的元素的 ElementType 不是 RING_BUFFER,则返回 WRONG_TYPE。 如果驱动程序不支持环形缓冲区,或者不支持指定的 format,则返回 NOT_SUPPORTED。

请求

名称类型
processing_element_id ElementId
format Format2
ring_buffer server_end:RingBuffer

响应

名称类型
payload Composite_CreateRingBuffer_Result

GetDaiFormats

检索此驱动程序支持的拓扑中 DAI_INTERCONNECT 处理元素支持的 DAI 格式,如 GetElements 从 fuchsia.hardware.audio.signalprocessing. 如果 DAI 格式在当时不可用,则返回 SHOULD_WAIT,客户端可能会稍后重试。 如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。 如果相应 ID 所表示的元素的 ElementType 不是 DAI_INTERCONNECT,则返回 WRONG_TYPE。 检索多个 DaiSupportedFormats 可用于支持 DaiSupportedFormats 中参数的独占组合的情况。返回给调用方的向量必须包含至少一个条目。

请求

名称类型
processing_element_id ElementId

响应

名称类型
payload Composite_GetDaiFormats_Result

GetHealthState

检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。

请求

<EMPTY>

响应

名称类型
state HealthState

GetPacketStreamFormats

检索相应驱动程序支持的拓扑中 PACKET_STREAM 处理元素支持的数据包流格式,如 fuchsia.hardware.audio.signalprocessing 中的 GetElements 和 GetTopologies 所返回的那样。

如果目前无法提供数据包流格式,则返回 SHOULD_WAIT。客户端可能会稍后重试此请求。 如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。如果相应 ID 所表示的元素的 ElementType 不是 PACKET_STREAM,则返回 WRONG_TYPE。 如果驱动程序不支持数据包流,则返回 NOT_SUPPORTED。 返回具有多个 SupportedFormats2 的向量可实现以下情况:支持 SupportedFormats2 中参数的专属组合。 返回给调用方的向量必须包含至少一个条目。

添加了:HEAD

请求

名称类型
processing_element_id ElementId

响应

名称类型
payload Composite_GetPacketStreamFormats_Result

GetProperties

检索顶级静态属性。

请求

<EMPTY>

响应

名称类型
payload Composite_GetProperties_Result

GetRingBufferFormats

检索相应驱动程序支持的拓扑中 RING_BUFFER 处理元素支持的环形缓冲区格式,如 GetElements 从 fuchsia.hardware.audio.signalprocessing 返回的。如果当时没有可用的环形缓冲区格式,则返回 SHOULD_WAIT,客户端可能会稍后重试。 如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。 如果相应 ID 所表示的元素的 ElementType 不是 RING_BUFFER,则返回 WRONG_TYPE。 检索多个 SupportedFormats2 可用于支持 SupportedFormats2 中参数的独占组合的情况。返回给调用方的向量必须包含至少一个条目。

请求

名称类型
processing_element_id ElementId

响应

名称类型
payload Composite_GetRingBufferFormats_Result

重置

重置硬件,包括所有 DAI 互连和信号处理。 因此,通过 CreateRingBuffer 或 CreatePacketStream 获取的所有渠道都将关闭。

当硬件完全重置时,Reset 会返回。此时,客户端需要重新配置所有 DAI 互连,选择信号处理拓扑并重新配置所有处理元素,以及重建所有环形缓冲区和数据包流。

如果驱动程序无法成功重置硬件,则会返回错误,然后关闭协议通道,在这种情况下,客户端可以获取新的协议通道并重试。

请求

<EMPTY>

响应

名称类型
payload Composite_Reset_Result

SetDaiFormat

SetDaiFormat 由客户端发送,用于为 processing_element_id 指定的处理元素选择 DAI 格式。DAI_INTERCONNECT格式基于驱动程序在 GetDaiFormats 中提供的信息、客户端支持的内容以及任何其他要求。 如果 processing_element_id 与 GetElements 返回的 ID 不匹配,则返回 INVALID_ARGS。 如果相应 ID 所表示元素的 ElementType 不是 DAI_INTERCONNECT,则返回 WRONG_TYPE。

请求

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

如需了解概览,请参阅音频复合设备。

关联

连接到 Composite 协议。 此方法允许组件在不受开发主机控制的情况下提供 FIDL。

请求

名称类型
composite_protocol server_end:Composite

Dai

在 fuchsia.hardware.audio/dai.fidl 中定义

如需了解概览,请参阅数字音频接口。

弃用

不再支持,请改用包含一个 DAI 和一个环形缓冲区的音频复合,请参阅音频驱动程序架构

已弃用

CreateRingBuffer

CreateRingBuffer 由客户端发送,用于根据驱动程序在 GetDaiFormats 和 GetRingBufferFormats 中提供的信息、客户端支持的格式以及任何其他要求来选择 DAI 格式和环形缓冲区格式。ring_buffer 渠道用于控制音频缓冲区。如果之前已建立并仍处于有效状态的环形缓冲区渠道,驱动程序必须关闭该(环形缓冲区)渠道,并尽一切努力使进程中任何正在进行的流式传输操作正常静止。

请求

名称类型
dai_format DaiFormat
ring_buffer_format Format
ring_buffer server_end:RingBuffer

GetDaiFormats

检索 DAI 支持的 DAI 格式,如果在检索时不可用,DAI 可能会回复错误状态,客户端可能会稍后重试。 检索多个 DaiSupportedFormats 可用于支持 SupportedFormats 中参数的独占组合的情况。

请求

<EMPTY>

响应

名称类型
payload Dai_GetDaiFormats_Result

GetHealthState

检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。

请求

<EMPTY>

响应

名称类型
state HealthState

GetProperties

检索顶级静态属性。

请求

<EMPTY>

响应

名称类型
properties DaiProperties

GetRingBufferFormats

检索 DAI 支持的环形缓冲区格式,如果在检索时不可用,DAI 可能会回复错误状态,客户端可能会在稍后重试。 检索多个 SupportedFormats 可用于支持 SupportedFormats 中参数的独占组合的情况。

请求

<EMPTY>

响应

名称类型
payload Dai_GetRingBufferFormats_Result

重置

重置 DAI 硬件。通过 CreateRingBuffer 获取的 ring_buffer 渠道可能会被驱动程序关闭,在这种情况下,客户端需要获取新的 ring_buffer。重置完成后,Reset 会返回。如果驱动程序无法成功重置硬件,它将关闭 DAI 协议通道,在这种情况下,客户端可以获取新的 DAI 协议通道并重试。

请求

<EMPTY>

响应

<EMPTY>

SignalProcessingConnect

连接到 SignalProcessing 协议。 如果支持多个连接,但不支持新的连接请求(即已创建的连接数达到上限,例如 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

检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。

请求

<EMPTY>

响应

名称类型
state HealthState

PacketStreamControl

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

用于建立和管理数据包流的控制协议。

添加了:HEAD

AllocateVmos

请求驱动程序为数据传输分配 VMO。 返回已分配的 VMO 及其分配的 ID。

返回的 VMO 句柄必须包含 ZX_RIGHT_TRANSFER、ZX_RIGHT_READ 和 ZX_RIGHT_MAP。 如果数据包流是输出流,则句柄还必须包含 ZX_RIGHT_WRITE。

如果 min_vmo_size 为零或 vmo_count 为零,则返回 ZX_ERR_INVALID_ARGS。如果驱动程序无法分配所请求的 VMO,则返回 ZX_ERR_NO_MEMORY。 如果 VMO 已分配或注册,或者流已启动,则返回 ZX_ERR_BAD_STATE。先调用 DeallocateVmos 或 UnregisterVmos 进行重新配置。

请求

名称类型
payload AllocateVmosConfig

响应

名称类型
payload PacketStreamControl_AllocateVmos_Result

DeallocateVmos

释放之前通过 AllocateVmos 分配的所有 VMO。当 PacketStreamControl 频道关闭时,系统也会自动执行此操作。

如果当前未分配 VMO,或者流未停止,则返回 ZX_ERR_BAD_STATE。

请求

<EMPTY>

响应

名称类型
payload PacketStreamControl_DeallocateVmos_Result

GetPacketStreamSink

连接到驱动程序实现的数据接收器。 用于驱动程序消耗数据的音频输出。

Flow:

  1. 应用将音频数据写入已注册的 VMO。
  2. 应用刷新写入区域的缓存(如果 needs_cache_flush_or_invalidate 为 true)。
  3. 应用使用数据的位置调用 PacketStreamSink.PutPacket。
  4. 驱动程序使用数据。

如果多次调用此方法,则会关闭之前的 PacketStreamSink 渠道,并舍弃该渠道上的所有待处理请求。新渠道会取代旧渠道。

如果流是输入流,或者驱动程序不支持此方法,则返回 ZX_ERR_NOT_SUPPORTED。

请求

<EMPTY>

响应

名称类型
payload PacketStreamControl_GetPacketStreamSink_Result

GetProperties

顶级静态属性的访问器。

请求

<EMPTY>

响应

名称类型
payload PacketStreamControl_GetProperties_Result

RegisterVmos

向驱动程序注册客户端分配的 VMO。

注册的 VMO 句柄必须包含 ZX_RIGHT_TRANSFER、ZX_RIGHT_READ 和 ZX_RIGHT_MAP。 如果数据包流是输入流,则句柄还必须包含 ZX_RIGHT_WRITE。

如果 vmo_infos 为空、任何 VMO 句柄无效或发现重复的 vmo_id,则返回 ZX_ERR_INVALID_ARGS。 如果任何 VMO 不具备所需权限,则返回 ZX_ERR_ACCESS_DENIED。如果 VMO 已注册或已分配,或者流已启动,则返回 ZX_ERR_BAD_STATE。先调用 UnregisterVmos 或 DeallocateVmos 进行重新配置。

请求

名称类型
payload RegisterVmosConfig

响应

名称类型
payload PacketStreamControl_RegisterVmos_Result

SetPacketStreamSink

为驱动程序提供数据接收器。 这用于驱动程序生成数据的音频输入。

Flow:

  1. 驱动程序将音频数据写入已注册的 VMO。
  2. 驱动程序使用数据的位置调用 PacketStreamSink.PutPacket。
  3. 应用接收 PutPacket。
  4. 应用使相应区域的缓存失效(如果 needs_cache_flush_or_invalidate 为 true)。
  5. 应用读取数据。

如果多次调用此方法,驱动程序会关闭之前的 PacketStreamSink 渠道。新渠道会取代旧渠道。

如果流是输出流,或者驱动程序不支持此方法,则返回 ZX_ERR_NOT_SUPPORTED。

请求

名称类型
payload PacketStreamControlSetPacketStreamSinkRequest

响应

名称类型
payload PacketStreamControl_SetPacketStreamSink_Result

开始

启动数据包流。

在以下情况下返回 ZX_ERR_BAD_STATE:

  • 尚未分配(如果指定了 DRIVER_OWNED)和/或注册(如果指定了 CLIENT_OWNED)缓冲区。如果支持 INLINE,则此属性不适用。
  • 直播已开始。

请求

<EMPTY>

响应

名称类型
payload PacketStreamControl_Start_Result

停止

停止数据包流。

收到回答后,系统会停止流式传输。

行为取决于流方向:

  • 输出:驱动程序停止使用数据包。所有待处理的 PacketStreamSink.PutPacket 请求都将保持待处理状态,直到再次调用 Start。客户端可以在 Stop 之后调用 PacketStreamSink.FlushPackets 来舍弃这些待处理的数据包。
  • 输入:驱动程序停止生成数据包。在再次调用 Start 之前,驱动程序不会再进行任何 PacketStreamSink.PutPacket 调用。

请注意,由于 PacketStreamSink 使用单独的渠道,因此无法严格保证 Stop 和 PacketStreamSink.PutPacket 之间的顺序:

  • 对于输出,在 Stop 返回后,一些正在进行的 PacketStreamSink.PutPacket 调用可能会成功完成。
  • 对于输入,某些正在进行的 PacketStreamSink.PutPacket 调用可能会在 Stop 返回后到达客户端。

如果数据流未启动,则返回 ZX_ERR_BAD_STATE。

请求

<EMPTY>

响应

名称类型
payload PacketStreamControl_Stop_Result

UnregisterVmos

取消注册之前通过 RegisterVmos 注册的所有 VMO。当PacketStreamControl频道关闭时,系统也会自动执行此操作。

如果 VMO 当前未注册,或流未停止,则返回 ZX_ERR_BAD_STATE。

请求

<EMPTY>

响应

名称类型
payload PacketStreamControl_UnregisterVmos_Result

PacketStreamSink

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

用于流式传输基于数据包的音频数据的协议。 此协议充当数据接收器。此协议的“服务器”会使用数据包,而“客户端”会生成数据包。

此协议可用于两个方向:

  1. 输出(客户端 -> 驱动程序):驱动程序实现 PacketStreamSink。客户端(应用)调用 PutPacket。
  2. 输入(驱动程序 -> 客户端):客户端(应用)实现 PacketStreamSink。驱动程序调用 PutPacket。
添加了:HEAD

FlushPackets

刷新当前所有待处理的数据包,但不处理这些数据包。 此调用会一直等待,直到所有待处理的数据包完成或取消。

注意:在取消数据包之前,系统可能会对其进行部分处理(例如,如果数据包包含多个音频帧,或者数据与编码帧边界不一致)。

请求

<EMPTY>

响应

名称类型
payload PacketStreamSink_FlushPackets_Result

PutPacket

提交要由服务器处理的数据包。

客户端可以通过重复调用 PutPacket 来将多个数据包排入队列。 系统会按提交顺序处理数据包。此调用会一直处于阻塞状态,直到有效负载得到处理。当此调用返回时,缓冲区区域保证可供重复使用。

如果流未启动或未配置,则返回 ZX_ERR_BAD_STATE。 如果调用了 FlushPackets,则返回 ZX_ERR_CANCELED。如果数据包无效,则返回 ZX_ERR_INVALID_ARGS。其中包括:

  • 缺少载荷。
  • 使用了 inline_data,但 supported_buffer_types 不包含 INLINE。
  • 使用了 vmo_transfer,但 supported_buffer_types 不包含 CLIENT_OWNED 或 DRIVER_OWNED。
  • vmo_id 未识别,或 vmo_offset + payload_size 超过 VMO 大小。

注意:服务器不需要检测 VMO 区域是否正被之前的待处理数据包使用。客户端负责管理缓冲区使用情况。

请求

名称类型
payload PacketStreamSinkPutPacketRequest

响应

名称类型
payload PacketStreamSink_PutPacket_Result

RingBuffer

在 fuchsia.hardware.audio/ring_buffer.fidl 中定义

环形缓冲区用于在各方(通常在不同进程中)之间传送音频,从而实现并发、异步的数据访问,而无需使用锁。这种模式之所以有效,是因为双方都了解哪些缓冲区可以安全访问,以及这些区域如何随时间变化。

如需详细了解生产者和消费者在环形缓冲区启动之前以及在环形缓冲区处于活动状态时的责任,请参阅环形缓冲区行为。

GetProperties

顶级静态属性的访问器。

请求

<EMPTY>

响应

名称类型
properties RingBufferProperties

GetVmo

请求一个共享缓冲区,用于在客户端和驱动程序之间移动批量音频数据。

客户端请求 min_frames 作为其所需的部分环形缓冲区的大小。 驱动程序会在 num_frames 中返回已分配的环形缓冲区空间的实际大小。

num_frames 必须至少为 min_frames 加上 driver_transfer_bytes(以帧为单位),以便环形缓冲区内容可以传入和传出,否则必须使用 GetVmoError.INVALID_ARGS 使调用失败。

由于任何内部要求(例如对齐),驱动程序可能会将环形缓冲区大小增加到 min_frames 加上 driver_transfer_bytes(以帧为单位)以上。

客户端可以将整个返回的环形缓冲区视为可安全访问,但当前位置紧邻的 driver_transfer_bytes 除外,有关更多详情,请参阅 RingBufferProperties 中的 driver_transfer_bytes 参数规范。

返回的 VMO 句柄必须包含 ZX_RIGHT_TRANSFER、ZX_RIGHT_READ 和 ZX_RIGHT_MAP。 如果环形缓冲区是“传出”缓冲区(将音频数据从客户端传送到设备),则句柄还必须包含 ZX_RIGHT_WRITE。

如果 clock_recovery_notifications_per_ring 不为零,驱动程序将以最多 clock_recovery_notifications_per_ring 的频率向 WatchClockRecoveryPositionInfo 客户端请求发送回复。这些通知旨在用于时钟恢复。

请求

名称类型
min_frames uint32
clock_recovery_notifications_per_ring uint32

响应

名称类型
payload RingBuffer_GetVmo_Result

SetActiveChannels

通过位掩码设置哪些渠道处于活跃状态。

渠道总数是 Format 中的 number_of_channels,具体而言是 PcmFormat 中的 number_of_channels,即此位掩码最多可设置 number_of_channels 位(最多 64 位)。最低有效位对应于渠道索引 0。位掩码中未设置(位为 0)的渠道处于非活跃状态。默认情况下,所有渠道均处于有效状态。因此,创建 RingBuffer 会为所有渠道启用关联的硬件。

非活跃通道会向驱动程序表明,它可以关闭与非活跃通道关联的硬件。后续的 SetActiveChannels 将非活动频道设置为活动频道可能会导致 turn_on_delay 实际重启频道的播放/拍摄。

停用一个、多个或所有渠道不会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 读取或写入数据,但需遵守下文“环形缓冲区行为”中所述的总体位置和缓冲行为。

如果在 GetVmo 之前调用了 Start,则必须使用 ZX_ERR_BAD_STATE 关闭通道。如果在 RingBuffer 已启动时调用 Start,或者在第一次调用完成之前第二次调用 Start,则必须关闭通道并返回错误 ZX_ERR_BAD_STATE。 如果在 SetActiveChannels 之前调用了 Start,则默认情况下所有渠道都处于有效状态。

请求

<EMPTY>

响应

名称类型
start_time zx/Time

停止

停止环形缓冲区。

收到此调用的响应后,在再次调用 Start 之前,系统不会再发送任何位置通知。

如果在 GetVmo 之前调用了 Stop,则必须使用 ZX_ERR_BAD_STATE 关闭通道。

请求

<EMPTY>

响应

<EMPTY>

WatchClockRecoveryPositionInfo

通过挂起获取来获取环形缓冲区的当前位置。

只有在调用了 GetVmo(其中指定了 clock_recovery_notifications_per_ring)之后,才能调用 WatchClockRecoveryPositionInfo。

驱动程序必须响应客户端的首次 WatchClockRecoveryPositionInfo 调用,但在位置信息与最近提供给该客户端的信息相比发生变化之前,不会响应后续的客户端调用。

驱动程序必须在回复 Start 命令后才能响应 WatchClockRecoveryPositionInfo。

在 Start 返回的 start_time 处,位置始终为 0。然后,它会以速率、采样格式(以及时钟域,如果设备与CLOCK_MONOTONIC不在同一时钟域中)指定的速率进行处理。

如果 clock_recovery_notifications_per_ring 不为零,驱动程序将以最多 clock_recovery_notifications_per_ring 的频率回复其估计位置,以用于时钟恢复。

RingBufferPositionInfo 返回值必须包含单调递增的时间戳。

如果此客户端已存在待处理的 WatchClockRecoveryPositionInfo,驱动程序将关闭协议通道并显示 ZX_ERR_BAD_STATE 错误。

请求

<EMPTY>

响应

名称类型
position_info RingBufferPositionInfo

WatchDelayInfo

通过挂起式 GET 获取有关延迟的信息。

驱动程序会立即回复客户发送的第一条 WatchDelayInfo。 在延迟信息发生变化(与最近报告的延迟信息不同)之前,驱动程序不会响应后续的客户端 WatchDelayInfo 调用。

如果在第一次调用完成之前第二次调用 WatchDelayInfo,则必须关闭通道并返回错误 ZX_ERR_BAD_STATE。

新增:27

请求

<EMPTY>

响应

名称类型
payload RingBuffer_WatchDelayInfo_Result

StreamConfig

在 fuchsia.hardware.audio/stream_config.fidl 中定义

如需了解概览,请参阅音频驱动程序流式传输接口

弃用

不再支持,请改用带一个环形缓冲区的音频复合,请参阅音频驱动程序架构

已弃用

CreateRingBuffer

CreateRingBuffer 由客户端发送,用于根据驱动程序在 GetSupportedFormats 中提供的信息(客户端支持的信息)以及任何其他要求来选择流格式。ring_buffer 渠道用于控制音频缓冲区。如果之前已建立环形缓冲区渠道且该渠道仍处于活跃状态,驱动程序必须关闭该(环形缓冲区)渠道,并尽一切努力使进程中任何正在进行的流式传输操作正常停止。

请求

名称类型
format Format
ring_buffer server_end:RingBuffer

GetHealthState

检索顶级健康状态。 如果驱动程序未及时响应,则可能表明该驱动程序运行不正常。

请求

<EMPTY>

响应

名称类型
state HealthState

GetProperties

检索顶级静态属性。

请求

<EMPTY>

响应

名称类型
properties StreamProperties

GetSupportedFormats

获取给定驱动程序支持的格式。如果驱动程序支持的组合无法全部用一个 SupportedFormats 来描述,则驱动程序会在返回的向量中返回多个 SupportedFormats。例如,如果一个 SupportedFormats 允许 48KHz 的 32 位采样和 96KHz 的 16 位采样,但不允许 96KHz 的 32 位采样,则驱动程序会回复两个 SupportedFormats:<<32 位>,<48KHz>> 和 <<16 位>,<96KHz>>。为简单起见,此示例忽略了除采样率和每样本位数之外的参数。如果驱动程序支持 16 位或 32 位采样,且支持 48 或 96KHz 采样率,则驱动程序会回复 1 SupportedFormats:<<16 位、32 位>,<48KHz、96KHz>>。

请求

<EMPTY>

响应

名称类型
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 关闭协议通道。

请求

<EMPTY>

响应

名称类型
gain_state GainState

WatchPlugState

通过挂起的 get 获取插头检测状态。驱动程序将回复客户端发送的第一个 WatchPlugState。在插头状态从最近报告的状态发生变化之前,驱动程序不会响应后续的客户端 WatchPlugState 调用。如果在第一次调用完成之前第二次调用 WatchPlugState,则必须使用错误 ZX_ERR_BAD_STATE 关闭协议通道。

请求

<EMPTY>

响应

名称类型
plug_state PlugState

StreamConfigConnector

在 fuchsia.hardware.audio/stream_config_connector.fidl 中定义

如需了解概览,请参阅音频驱动程序流式传输接口。

弃用

不再支持,请改用带一个环形缓冲区的音频复合,请参阅音频驱动程序架构

已弃用

关联

连接到 StreamConfig 协议。 此方法允许组件在不受开发主机控制的情况下提供 FIDL。

请求

名称类型
protocol server_end:StreamConfig

STRUCTS

Codec_GetDaiFormats_Response

在 fuchsia.hardware.audio/codec.fidl 中定义

字段类型说明默认
formats vector<DaiSupportedFormats>:64 无默认值

Codec_SetDaiFormat_Response

在 fuchsia.hardware.audio/codec.fidl 中定义

字段类型说明默认
state CodecFormatInfo 无默认值

Composite_CreatePacketStream_Response

在 fuchsia.hardware.audio/composite.fidl 中定义

<EMPTY>

Composite_CreateRingBuffer_Response

在 fuchsia.hardware.audio/composite.fidl 中定义

<EMPTY>

Composite_GetDaiFormats_Response

在 fuchsia.hardware.audio/composite.fidl 中定义

字段类型说明默认
dai_formats vector<DaiSupportedFormats>:64 无默认值

Composite_GetPacketStreamFormats_Response

在 fuchsia.hardware.audio/composite.fidl 中定义

字段类型说明默认
packet_stream_formats vector<SupportedFormats2>:64 无默认值

Composite_GetProperties_Response

在 fuchsia.hardware.audio/composite.fidl 中定义

字段类型说明默认
properties CompositeProperties 无默认值

Composite_GetRingBufferFormats_Response

在 fuchsia.hardware.audio/composite.fidl 中定义

字段类型说明默认
ring_buffer_formats vector<SupportedFormats2>:64 无默认值

Composite_Reset_Response

在 fuchsia.hardware.audio/composite.fidl 中定义

<EMPTY>

Composite_SetDaiFormat_Response

在 fuchsia.hardware.audio/composite.fidl 中定义

<EMPTY>

DaiFormat

在 fuchsia.hardware.audio/dai_format.fidl 中定义

DAI 格式。帧由 number_of_channels 个样本组成,这些样本在 bits_per_slot 中包含 bits_per_sample 位数据,并以 frame_format 形式排列。如需了解详情,请参阅数字音频接口。

字段类型说明默认
number_of_channels uint32

频道数。 如果 frame_format 为 DaiFrameFormatStandard::I2S、STEREO_LEFT 或 STEREO_RIGHT,则必须为 2。

无默认值
channels_to_use_bitmask uint64

通过位掩码设置哪些渠道处于有效状态。 最低有效位对应于渠道指数 0。不得设置最低有效 number_of_channels 位以外的位。

无默认值
sample_format DaiSampleFormat

所有样本的样本格式。

无默认值
frame_format DaiFrameFormat

所有样本的帧格式。

无默认值
frame_rate uint32

所有样本的帧速率。

无默认值
bits_per_slot uint8

所有渠道的每时段比特数。

无默认值
bits_per_sample uint8

每个渠道的每样本位数。 必须小于 bits_per_slot,才能容纳所有样本。

无默认值

DaiFrameFormatCustom

在 fuchsia.hardware.audio/dai_format.fidl 中定义

自定义帧格式。

字段类型说明默认
left_justified bool

广告资源块内样本的对齐方式。

无默认值
sclk_on_raising bool

在上升或下降的 sclk 上对数据样本和帧同步输出进行时钟控制。 如果为 true,则 sclk 在数据和帧同步的上升沿上升,即在 sclk 的下降沿(sclk 周期的中间)对数据进行采样。因此,如果为 false,则将在 sclk 的上升沿对数据进行采样。

无默认值
frame_sync_sclks_offset int8

帧同步更改开始与音频样本之间的 sclks 数量。例如,对于 I2S,设置为 1;对于立体声左对齐,设置为 0。

无默认值
frame_sync_size uint8

一个帧内帧同步的 sclk 数较高。 例如,对于 I2S,如果 32 位插槽设置为 32,对于 TDM,通常设置为 1。

无默认值

DaiSupportedFormats

在 fuchsia.hardware.audio/dai_format.fidl 中定义

DAI 支持的格式。帧由 number_of_channels 个样本组成,这些样本在 bits_per_slot 位中包含 bits_per_sample 位数据,并以 frame_formats 形式排列。 支持每个向量中列出的所有值。如果驱动程序支持的组合无法全部用一个 DaiSupportedFormats 来描述,GetDaiFormats 会在返回的向量中返回多个 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

每个 slot 支持的位数。值必须按升序排列。

无默认值
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 无默认值

PacketStreamControl_AllocateVmos_Response 资源

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

字段类型说明默认
vmos VmoInfos 无默认值

PacketStreamControl_DeallocateVmos_Response

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

<EMPTY>

PacketStreamControl_GetProperties_Response

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

字段类型说明默认
properties PacketStreamProperties 无默认值

PacketStreamControl_RegisterVmos_Response

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

<EMPTY>

PacketStreamControl_SetPacketStreamSink_Response

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

<EMPTY>

PacketStreamControl_Start_Response

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

<EMPTY>

PacketStreamControl_Stop_Response

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

<EMPTY>

PacketStreamControl_UnregisterVmos_Response

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

<EMPTY>

PacketStreamSink_FlushPackets_Response

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

<EMPTY>

PcmFormat

在 fuchsia.hardware.audio/pcm_format.fidl 中定义

支持 PCM 音频的格式。帧由 number_of_channels 个样本组成,这些样本在 bytes_per_sample 字节内具有 valid_bits_per_sample 位的最高有效位(左对齐)数据。

如需了解详情,请参阅音频驱动程序流式传输接口。

字段类型说明默认
number_of_channels uint8

频道数量。

无默认值
sample_format SampleFormat

所有样本的格式。

无默认值
bytes_per_sample uint8

分配用于保存样本的字节数,必须大于或等于 valid_bits_per_sample 中的有效样本大小。

无默认值
valid_bits_per_sample uint8

样本中的有效位数,必须小于或等于 bytes_per_sample * 8。 如果小于 bytes_per_sample * 8,有效位(包含音频的位)将左对齐,接收器必须忽略任何额外的位。

无默认值
frame_rate uint32

所有样本的帧速率。

无默认值

RingBufferPositionInfo

在 fuchsia.hardware.audio/ring_buffer.fidl 中定义

字段类型说明默认
timestamp zx/Time

驱动程序对播放/捕获指针到达 position 所指示位置时的时间(在 CLOCK_MONOTONIC 时间轴中)的最佳估计。

turn_on_delay 影响不应纳入“时间戳”。不应纳入 DelayInfo 中指明的任何延迟。

无默认值
position uint32

驱动程序估计的在时间 timestamp 时环形缓冲区中的播放/捕获指针位置(以字节为单位)。

无默认值

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 格式的样本。

2

格式如 I2S 规范中所述(左对齐、2 个声道、每个样本 32 位、帧同步在左声道时保持低电平,在右声道时保持高电平、数据在帧同步变化后一个时钟周期开始,在 sclk 的下降沿时输出)。

3

左对齐,2 个渠道。数据从帧同步变化(从低到高)开始,在 sclk 的下降沿时钟输出。对于第一个通道,帧同步必须保持高电平 bits_per_sample 位;对于第二个通道,帧同步必须保持低电平 bits_per_sample 位。

4

右对齐,2 个渠道。对于第一个通道,帧同步必须保持高电平 bits_per_sample 位;对于第二个通道,帧同步必须保持低电平 bits_per_sample 位。

5

左对齐,通道数量可变,数据从帧同步信号从低变为高时开始,在 sclk 的上升沿时输出。帧同步必须保持高电平状态,持续时间正好为 1 个时钟周期。

6

左对齐,通道数量可变,数据在帧同步从低变为高后的一个时钟周期开始,在 sclk 的上升沿时钟输出。帧同步必须保持高电平正好 1 个时钟周期。

7

左对齐,渠道数量可变,数据在帧同步从低变为高后的两个时钟周期开始,在 sclk 的上升沿时钟输出。帧同步必须保持高电平正好 1 个时钟周期。

DaiSampleFormat strict

类型:uint8

在 fuchsia.hardware.audio/dai_format.fidl 中定义

名称值说明
1

脉冲密度调制示例。

2

有符号整数线性脉冲编码调制样本,采用主机字节序。

3

无符号整数线性脉冲编码调制样本,采用主机字节序。

4

浮点样本,按照 IEEE-754 标准进行编码。

DeviceType 灵活

类型:uint32

在 fuchsia.hardware.audio/device_type.fidl 中定义

名称值说明
1

设备支持 fuchsia.hardware.audio/StreamConfig 协议。

2

设备支持 fuchsia.hardware.audio/Dai 协议。

3

设备支持 fuchsia.hardware.audio/Codec 协议。

4

设备支持 fuchsia.hardware.audio/Composite 协议。

DriverError 灵活

类型:uint32

在 fuchsia.hardware.audio/common.fidl 中定义

名称值说明
1

驱动程序在执行操作时遇到了其他未指明的错误。

2

相应操作未实现、不受支持或未启用。

3

实参无效。

4

操作对象类型错误,无法执行相应操作。

5

目前无法执行该操作,但如果调用方等待前提条件得到满足,则可能会成功。

6

驱动程序中发生了严重错误。相应连接不再可用,客户端应将其关闭。

添加:29

EncodingType flexible

类型:uint32

在 fuchsia.hardware.audio/encoding.fidl 中定义

用于流的编码类型。

添加了:HEAD

名称值说明
1
2

GetVmoError 严格

类型:uint32

在 fuchsia.hardware.audio/ring_buffer.fidl 中定义

名称值说明
1

由于参数无效(例如 min_frames 过大),环形缓冲区设置失败。

2

由于内部错误,环形缓冲区设置失败。

PlugDetectCapabilities strict

类型:uint32

在 fuchsia.hardware.audio/plug.fidl 中定义

名称值说明
0

驱动程序已硬连线(将始终插接)。

1

驱动程序能够异步通知插头状态变化。

SampleFormat 严格

类型:uint8

在 fuchsia.hardware.audio/pcm_format.fidl 中定义

名称值说明
1

有符号整数线性脉冲编码调制样本,采用主机字节序。

2

无符号整数线性脉冲编码调制样本,采用主机字节序。

3

浮点样本,按照 IEEE-754 标准进行编码。

SingularUniqueId 灵活

类型:uint8

在 fuchsia.hardware.audio/unique_id.fidl 中定义

标识系统中的唯一设备。 这些设备的 UniqueId 由枚举值后跟 (UNIQUE_ID_SIZE - 1) 个零组成。

添加了:HEAD

名称值说明
0
1
2
3
4

TABLES

AllocateVmosConfig

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

添加了:HEAD

序数字段类型说明
min_vmo_size uint64

每个 VMO 所需的最小大小(以字节为单位)。

必填。

vmo_count uint32

要分配的 VMO 数量。

必填。

ChannelAttributes

在 fuchsia.hardware.audio/pcm_format.fidl 中定义

整个渠道配置中单个渠道的规范。

序数字段类型说明
min_frequency uint32

此渠道保证发出(或捕获)的最低频次(以 Hz 为单位)。 如果未包含 min_frequency,则假定此渠道覆盖了相应设备的整个低频范围。

可选。

max_frequency uint32

此渠道保证发出的(或捕获的)最大频率(以 Hz 为单位)。如果未包含 max_frequency,则假定此渠道覆盖相应设备的整个高频范围。

可选。

ChannelSet

在 fuchsia.hardware.audio/pcm_format.fidl 中定义

渠道配置的规范。

序数字段类型说明
attributes vector<ChannelAttributes>:64

描述相应频道集的属性。 此向量的大小定义了相应 ChannelSet 支持的渠道数量。attributes 向量的每个元素都定义了单个渠道的属性。

必填。

CodecFormatInfo

在 fuchsia.hardware.audio/codec.fidl 中定义

编解码器格式信息。

序数字段类型说明
external_delay zx/Duration

驱动程序针对所选格式对流水线中存在的外部延迟(以纳秒为单位)的最佳估计值。在跨多个实体(例如设备)精确同步演示时,应考虑外部延迟。如果不包含,则 external_delay 未知。

可选。

turn_on_delay zx/Duration

驱动程序对硬件在发出 Start 命令后实际开始播放/捕获所需的时间(以纳秒为单位)的最佳估计值。 硬件可能需要一段时间才能进入完全运行模式,例如由于电源状态发生变化。如果无法接受初始音频样本未播放或未捕获,则必须考虑此延迟。 如果不包含,则 turn_on_delay 未知。

可选。

turn_off_delay zx/Duration

驱动程序对硬件在发出 Stop 命令后实际停止播放/捕获所需的时间(以纳秒为单位)的最佳估计值。 硬件可能需要一段时间才能进入完全停止模式,例如由于电源状态发生变化。如果不能接受在“停止”命令后播放/捕获样本,则必须考虑此延迟。 如果未包含,则关闭延迟时间未知。

可选。

CodecProperties

在 fuchsia.hardware.audio/codec.fidl 中定义

序数字段类型说明
is_input bool

驱动程序类型是输入 (true) 还是输出 (false)。如果未包含,则驱动程序可同时用于输入和输出。

可选。

manufacturer string:256

制造商名称的界面字符串。如果未包含,则表示制造商未指定。 如果包含此字符串,则该字符串不得为空。

可选。

product string:256

产品名称的界面字符串。如果未包含,则表示未指定商品名称。 如果包含此字符串,则该字符串不得为空。

可选。

unique_id UniqueId

相应编解码器的唯一标识符。如果未包含,则表示相应编解码器没有唯一 ID。 如需了解有关特定预定义值和范围的注意事项,请参阅 unique_id.fidl。

可选。

plug_detect_capabilities PlugDetectCapabilities

插头检测功能。

必填。

CompositeProperties

在 fuchsia.hardware.audio/composite.fidl 中定义

序数字段类型说明
manufacturer string:256

制造商名称的界面字符串。如果未设置,则表示制造商未知。 如果包含此字符串,则该字符串不得为空。

可选。

product string:256

产品名称的界面字符串。如果未设置,则商品名称未知。 如果包含此字符串,则该字符串不得为空。

可选。

unique_id UniqueId

唯一标识符。如果未包含,则此设备没有唯一 ID。 如需了解有关特定预定义值和范围的注意事项,请参阅 unique_id.fidl。

可选。

clock_domain ClockDomain

相应硬件运行的时钟网域的标识符。如果两个硬件设备具有相同的时钟域,则它们的时钟速率相同且完全同步。虽然这两个时钟的速率相同,但时钟位置可能会相互偏移任意(但固定)量。clock_domain 通常来自系统级实体,例如平台总线或全局时钟树。

有两个特殊值:

  • CLOCK_DOMAIN_MONOTONIC 表示硬件以与系统单调时钟相同的速率运行。

  • CLOCK_DOMAIN_EXTERNAL 表示硬件以未知速率运行,并且未与任何已知时钟同步,甚至未与网域 CLOCK_DOMAIN_EXTERNAL 中的其他时钟同步。

如果网域不是 CLOCK_DOMAIN_MONOTONIC,客户端必须使用位置通知更新来恢复硬件的时钟。

必填。

DaiProperties

在 fuchsia.hardware.audio/dai.fidl 中定义

序数字段类型说明
is_input bool

驱动程序类型是输入 (true) 还是输出 (false)

必填。

manufacturer string:256

制造商名称的界面字符串。如果未包含,则表示制造商未指定。 如果包含此字符串,则该字符串不得为空。

可选。

product_name string:256

产品名称的界面字符串。如果未包含,则表示未指定商品名称。 如果包含此字符串,则该字符串不得为空。

可选。

unique_id UniqueId

DAI 的唯一标识符。如果未包含,则表示此 DAI 没有唯一 ID。 如需了解有关特定预定义值和范围的注意事项,请参阅 unique_id.fidl。

可选。

clock_domain ClockDomain

相应硬件运行的时钟网域的标识符。如果两个硬件设备具有相同的时钟域,则它们的时钟速率相同且完全同步。虽然这两个时钟的速率相同,但时钟位置可能会相互偏移任意(但固定)量。clock_domain 通常来自系统级实体,例如平台总线或全局时钟树。

有两个特殊值:

  • CLOCK_DOMAIN_MONOTONIC 表示硬件以与系统单调时钟相同的速率运行。

  • CLOCK_DOMAIN_EXTERNAL 表示硬件以未知速率运行,并且未与任何已知时钟同步,甚至未与网域 CLOCK_DOMAIN_EXTERNAL 中的其他时钟同步。

如果网域不是 CLOCK_DOMAIN_MONOTONIC,客户端必须使用位置通知更新来恢复硬件的时钟。

必填。

DelayInfo

在 fuchsia.hardware.audio/ring_buffer.fidl 中定义

由驱动程序返回的延迟信息。

新增:27

序数字段类型说明
internal_delay zx/Duration

驱动程序对所抽象的硬件内部延迟的最佳估计值(针对所选格式)。

“内部”是指 DAI 互连和环形缓冲区之间的硬件(例如 SoC 音频子系统),而“外部”是指任何 DAI 互连远端的硬件(例如硬件编解码器)。

对于播放期间的给定帧,这是指驱动程序将其从环形缓冲区复制出来后,在退出任何互连之前发生的任何延迟。 在录制期间,对于给定的帧,这是指该帧进入互连后、驱动程序将其移入环形缓冲区之前的任何延迟。

客户端在确定最低提前时间(在播放期间)和最低捕获延迟时间(在捕获期间)的要求时,必须考虑 internal_delay。

此延迟不得包括进出环形缓冲区的数据复制所需的临时缓冲所增加的固有延迟,该延迟包含在 RingBufferProperties 字段 driver_transfer_bytes 中。

必填。

external_delay zx/Duration

驱动程序对硬件(它抽象的)外部延迟的最佳估计值(针对所选格式)。

“外部”是指任何 DAI 互连远端的硬件(例如硬件编解码器),而“内部”是指 DAI 互连和环形缓冲区之间的硬件(例如 SoC 音频子系统)。

客户端在确定最低提前时间(在播放期间)和最低捕获延迟时间(在捕获期间)的要求时,必须考虑 external_delay。

如果未包含,则 external_delay 未知。如果未知,客户端可以自行处理(将其视为零或某个大数,自动检测等)。

与 internal_delay 类似,此延迟不得包含进出环形缓冲区的数据复制所需的临时缓冲所添加的固有延迟,该延迟包含在 RingBufferProperties 字段 driver_transfer_bytes 中。

可选。

编码

在 fuchsia.hardware.audio/encoding.fidl 中定义

编码音频串流的格式规范。

添加了:HEAD

序数字段类型说明
decoded_channel_count uint32

解码后的视频流的声道数。

必填。

decoded_frame_rate uint32

解码后的视频流的帧速率。这是解码器的提示。

可选。

average_encoding_bitrate uint32

视频流的平均比特率(以每秒传输的位数表示)。

必填。

encoding_type EncodingType

相应直播的编码类型。

必填。

格式

在 fuchsia.hardware.audio/format.fidl 中定义

已弃用:请改用 Format2。

序数字段类型说明
pcm_format PcmFormat

GainState

在 fuchsia.hardware.audio/stream_config.fidl 中定义

客户端请求或驱动程序返回的增益状态。

序数字段类型说明
muted bool

当前静音状态。如果未包含,则状态为未静音。

可选。

agc_enabled bool

当前自动增益控制 (AGC) 状态。如果不包含,则停用 AGC。

可选。

gain_db float32

当前增益(以分贝为单位)。

必填。

HealthState

在 fuchsia.hardware.audio/health.fidl 中定义

序数字段类型说明
healthy bool

驱动程序目前运行状况良好。 如果未包含此字段,则不会提供任何健康信息。 这样一来,驱动程序便可在自身没有足够的功能或资源来恢复的情况下(例如无法通过 GPIO 或对电源子系统进行控制来关闭硬件电源),发出健康状态信号。

可选。

PacketStreamControlSetPacketStreamSinkRequest 资源

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数字段类型说明
stream client_end:PacketStreamSink

PacketStreamControl_GetPacketStreamSink_Response 资源

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数字段类型说明
stream client_end:PacketStreamSink

PacketStreamProperties

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

数据包流的属性。数据包流创建后,这些值不会发生变化。

添加了:HEAD

序数字段类型说明
needs_cache_flush_or_invalidate bool

如果设置为 true,则表示数据包流在不同的缓存一致性网域中运行。客户端必须确保在输出期间将数据写入刷新到主内存,或在输入期间使数据无效。

如果设置为 false,则服务器和客户端位于同一一致性网域中。仍需要同步(例如栅栏)来对读取和写入操作进行排序。

必填。

supported_buffer_types BufferType

相应驱动程序支持的缓冲区方法。

必填。

PacketStreamSinkPutPacketRequest 资源

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数字段类型说明
payload DataTransfer

相应数据包的载荷位置。

必填。

PacketStreamSink_PutPacket_Response

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数字段类型说明

PcmSupportedFormats

在 fuchsia.hardware.audio/pcm_format.fidl 中定义

支持 PCM 音频的格式。每个帧都包含一个或多个(通道数)个连续存储的样本。在为每个样本分配的 bytes_per_sample 中,valid_bits_per_sample 位数据存储在最高有效位(左对齐)部分。

系统支持每个向量中列出的所有值。这意味着交叉产品:一个向量中的任何列出项都支持与另一个向量中的任何列出项组合使用。 如果驱动程序支持的并非所有组合都可以用一个 PcmSupportedFormats 表来描述,GetSupportedFormats 必须返回包含多个 SupportedFormats 条目的向量。

如需了解详情,请参阅音频驱动程序流式传输接口。

序数字段类型说明
channel_sets vector<ChannelSet>:64

可能支持的 ChannelSets 的向量。 ChannelSet 用于指定声道配置(包括声道数)以及一些可选属性。每个唯一渠道数只能有一个 ChannelSet。因此,channel_sets 中的任何两个条目都不能包含长度相同的 attributes 向量。

必填。

sample_formats vector<SampleFormat>:3

支持的可能 SampleFormat 的向量。 此向量中的值必须是唯一的。

必填。

bytes_per_sample vector<uint8>:8

为每个样本分配的可能字节数的向量。值必须按升序排列。valid_bits_per_sample 中列出的所有值都必须至少适合最大的 bytes_per_sample 值。

必填。

valid_bits_per_sample vector<uint8>:8

向量,包含由 bytes_per_sample 定义的样本容器内可能包含有效数据的位数。值必须按升序排列。列出的所有值都必须适合最大的 bytes_per_sample 值。有效数据位必须位于样本容器的最有效位(左对齐),任何额外的位都将被忽略。

必填。

frame_rates vector<uint32>:64

支持的可能帧速率的向量。值必须按升序排列。

必填。

PlugState

在 fuchsia.hardware.audio/plug.fidl 中定义

驱动程序返回的插头状态。 如果驱动程序报告的 plug_detect_capabilities 等于 HARDWIRED,则驱动程序应仅在首次调用 WatchPlugState 时做出响应,并将 plugged 设置为 true,将 plug_state_time 设置为时间“0”。

序数字段类型说明
plugged bool

驱动程序目前已插入。必需

plug_state_time zx/Time

为相应结构体其余字段中提供的信息添加时间戳。必填。

RegisterVmosConfig 资源

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

添加了:HEAD

序数字段类型说明
vmo_infos VmoInfos

要向驱动程序注册的 VMO 的列表。

必填。

RingBufferProperties

在 fuchsia.hardware.audio/ring_buffer.fidl 中定义

环形缓冲区的属性。环形缓冲区创建后,这些值不会发生变化。

序数字段类型说明
needs_cache_flush_or_invalidate bool

如果设置为 true,则表示环形缓冲区在不同的缓存一致性网域中运行,因此客户端必须确保其数据写入在播放期间完全刷新到主内存,或者在捕获期间在任何读取之前使环形缓冲区的视图失效。这是因为可能存在绕过 CPU 读取/写入主内存的 CPU 外部硬件。

设置为 false 时,表示环形缓冲区在与 CPU 相同的缓存一致性网域中运行,因此驱动程序不需要刷新/使环形缓冲区失效。请注意,在这种情况下,驱动程序和客户端仍必须同步其数据访问,例如在读取之前插入适当的获取栅栏,在写入之后插入释放栅栏,或者(更常见的是)遵循环形缓冲区行为中所述的生产者/消费者模式。

必填。

turn_on_delay zx/Duration

驱动程序对硬件在通道由 SetActiveChannels 激活后,发出(在播放期间)或接受(在捕获期间)帧所需时间的最佳估计。

驱动程序估计,在 SetActiveChannels(channel)->(set_time) 启用某个渠道后,其数据将在大约 set_time + turn_on_delay 时恢复流动。硬件可能需要一段时间才能完全正常运行(例如,由于电源状态变化或蓝牙驱动程序的多个硬件实体之间的通信延迟)。如果无法接受丢弃实际音频帧,而是在此时间间隔内播放/捕获静音,客户端必须考虑此延迟。 如果未包含,则 turn_on_delay 未知。

可选。

driver_transfer_bytes uint32

驱动程序在使用或生成环形缓冲区内容时所用的临时缓冲区或 FIFO 的大小(以字节为单位)。

环形缓冲区行为中详细介绍了 driver_transfer_bytes 字段。

driver_transfer_bytes 不得包含由驱动程序抽象化的硬件或软件处理造成的延迟影响。这些延迟时间通过 DelayInfo 中的 internal_delay 和 external_delay 字段进行通信,与此值正交。

必填。

新增:27

StreamProperties

在 fuchsia.hardware.audio/stream_config.fidl 中定义

序数字段类型说明
unique_id UniqueId

唯一标识符。如果未包含,则此 StreamConfig 没有唯一 ID。 如需了解有关特定预定义值和范围的注意事项,请参阅 unique_id.fidl。

可选。

is_input bool

驱动程序类型是输入 (true) 还是输出 (false)

必填。

can_mute bool

获得静音功能。如果不包含,StreamConfig 将无法静音。

可选。

can_agc bool

自动增益控制 (AGC) 功能。如果不包含,StreamConfig 就无法进行 AGC。

可选。

min_gain_db float32

以分贝为单位的最小增益。

必填。

max_gain_db float32

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

必填。

gain_step_db float32

增益步长(以分贝为单位),此值不得为负值,但可以为零,以表示有效连续的值范围。不得超过 max_gain_db - min_gain_db。

必填。

plug_detect_capabilities PlugDetectCapabilities

插头检测功能。

必填。

manufacturer string:256

制造商名称的界面字符串。如果未包含,则表示制造商未指定。 如果包含此字符串,则该字符串不得为空。

可选。

product string:256

产品名称的界面字符串。如果未包含,则表示未指定商品名称。 如果包含此字符串,则该字符串不得为空。

可选。

clock_domain ClockDomain

相应硬件运行的时钟网域的标识符。如果两个硬件设备具有相同的时钟域,则它们的时钟速率相同且完全同步。虽然这两个时钟的速率相同,但时钟位置可能会相互偏移任意(但固定)量。clock_domain 通常来自系统级实体,例如平台总线或全局时钟树。

有两个特殊值:

  • CLOCK_DOMAIN_MONOTONIC 表示硬件以与系统单调时钟相同的速率运行。

  • CLOCK_DOMAIN_EXTERNAL 表示硬件以未知速率运行,并且未与任何已知时钟同步,甚至未与网域 CLOCK_DOMAIN_EXTERNAL 中的其他时钟同步。

如果网域不是 CLOCK_DOMAIN_MONOTONIC,客户端必须使用位置通知更新来恢复硬件的时钟。

必填。

SupportedEncodings

在 fuchsia.hardware.audio/encoding.fidl 中定义

支持的编码音频格式。

此表定义了一组有效的配置。所有字段都是独立的,这意味着它们之间存在叉积关系:任何列出的 channel_set 都支持任何列出的 frame_rate 和任何列出的 encoded_type。

如果设备支持具有不同速率/声道限制的多个编码器(例如,AAC 支持 48kHz,但 SBC 仅支持 44.1kHz),则设备必须在 SupportedFormats2 向量中将它们报告为单独的条目。

添加了:HEAD

序数字段类型说明
decoded_channel_sets vector<ChannelSet>:64

可能支持的 ChannelSets 的向量。 ChannelSet 用于指定渠道配置(包括渠道数量)以及一些可选属性。

此向量中的每个条目都必须描述一个唯一的渠道数量。例如,此向量不能包含两个不同的 ChannelSet 条目,这两个条目都适用于 2 声道配置。值必须按渠道数量升序排列。

必填。

decoded_frame_rates vector<uint32>:64

支持的可能帧速率的向量。 如果存在,则必须包含至少一个值。 值必须按升序排列。

可选。

min_encoding_bitrate uint32

视频流的最低编码比特率(以每秒传输的位数表示)。 如果同时存在这两个参数,则不得超过“max_encoding_bitrate”。

可选。

max_encoding_bitrate uint32

相应视频流的最大编码比特率(以每秒传输的位数表示)。 如果两者都存在,则不能小于“min_encoding_bitrate”。

可选。

encoding_types vector<EncodingType>:64

支持上述配置的编码器类型。 必须包含至少一个值。此向量中的值必须是唯一的。

必填。

SupportedFormats

在 fuchsia.hardware.audio/format.fidl 中定义

已弃用:请改用 SupportedFormats2。

序数字段类型说明
pcm_supported_formats PcmSupportedFormats

VmoInfo 资源

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

用于注册 VMO 的 VMO 信息。用于在 RegisterVmos 和 AllocateVmos 中将 VMO 句柄与唯一 ID 配对。

添加了:HEAD

序数字段类型说明
id VmoId

与 VMO 对应的 ID。

必填。

vmo handle<vmo>

VMO 的句柄。

必填。

VmoTransfer 资源

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

此元素描述包含音频数据的 VMO 部分。

添加了:HEAD

序数字段类型说明
vmo_id VmoId

之前注册或分配的 VMO 的 ID。

必填。

vmo_offset uint64

VMO 中的偏移量,用于开始读取或写入。 这是相对于相应 VMO 的开始时间而言的。

必填。

payload_size uint64

要从此 VMO 区域读取/写入的字节数。

必填。

UNIONS

Codec_GetDaiFormats_Result strict

在 fuchsia.hardware.audio/codec.fidl 中定义

序数变体类型说明
response Codec_GetDaiFormats_Response
err zx/Status

Codec_SetDaiFormat_Result 严格

在 fuchsia.hardware.audio/codec.fidl 中定义

序数变体类型说明
response Codec_SetDaiFormat_Response
err zx/Status

Composite_CreatePacketStream_Result 严格

在 fuchsia.hardware.audio/composite.fidl 中定义

序数变体类型说明
response Composite_CreatePacketStream_Response
err DriverError
framework_err internal

Composite_CreateRingBuffer_Result 严格

在 fuchsia.hardware.audio/composite.fidl 中定义

序数变体类型说明
response Composite_CreateRingBuffer_Response
err DriverError
framework_err internal

Composite_GetDaiFormats_Result strict

在 fuchsia.hardware.audio/composite.fidl 中定义

序数变体类型说明
response Composite_GetDaiFormats_Response
err DriverError
framework_err internal

Composite_GetPacketStreamFormats_Result 严格

在 fuchsia.hardware.audio/composite.fidl 中定义

序数变体类型说明
response Composite_GetPacketStreamFormats_Response
err DriverError
framework_err internal

Composite_GetProperties_Result strict

在 fuchsia.hardware.audio/composite.fidl 中定义

序数变体类型说明
response Composite_GetProperties_Response
framework_err internal

Composite_GetRingBufferFormats_Result 严格

在 fuchsia.hardware.audio/composite.fidl 中定义

序数变体类型说明
response Composite_GetRingBufferFormats_Response
err DriverError
framework_err internal

Composite_Reset_Result 严格

在 fuchsia.hardware.audio/composite.fidl 中定义

序数变体类型说明
response Composite_Reset_Response
err DriverError
framework_err internal

Composite_SetDaiFormat_Result 严格

在 fuchsia.hardware.audio/composite.fidl 中定义

序数变体类型说明
response Composite_SetDaiFormat_Response
err DriverError
framework_err internal

DaiFrameFormat strict

在 fuchsia.hardware.audio/dai_format.fidl 中定义

标准或自定义帧格式。

序数变体类型说明
frame_format_standard DaiFrameFormatStandard

DAI 中所有样本的格式类型,列于 DaiFrameFormatStandard 中。

frame_format_custom DaiFrameFormatCustom

DAI 中所有样本的格式类型,在 DaiFrameFormatCustom 中指定。

Dai_GetDaiFormats_Result strict

在 fuchsia.hardware.audio/dai.fidl 中定义

序数变体类型说明
response Dai_GetDaiFormats_Response
err zx/Status

Dai_GetRingBufferFormats_Result strict

在 fuchsia.hardware.audio/dai.fidl 中定义

序数变体类型说明
response Dai_GetRingBufferFormats_Response
err zx/Status

DataTransfer 灵活 资源

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

要转移的数据。支持两种数据传送方式,分别对应于 DataTransfer 联合体的两个成员:

  1. vmo_transfer:驱动程序之前已知的 VMO 中的区域。此 VMO 必须已通过 PacketStreamControl.RegisterVmos(如果由客户端分配)或 PacketStreamControl.AllocateVmos(如果由驱动程序分配)建立。未来的请求会通过唯一的 vmo_id 引用此缓冲区。由于 VMO 可在多个请求中重复使用,因此固定/映射的一次性费用会分摊。

  2. data:载荷直接在消息中提供。此模式适用于小规模传输或控制信息,而不适用于高吞吐量流式传输。

添加了:HEAD
序数变体类型说明
vmo_transfer VmoTransfer

数据存储在已注册 VMO 的区域中。要求 PacketStreamProperties.supported_buffer_types 包含 CLIENT_OWNED 或 DRIVER_OWNED。

inline_data vector<uint8>:8192

嵌入式数据缓冲区。 需要 PacketStreamProperties.supported_buffer_types 包含 INLINE。

格式 2 灵活

在 fuchsia.hardware.audio/format.fidl 中定义

添加了:HEAD
序数变体类型说明
pcm_format PcmFormat

线性 PCM(未压缩)样本的格式。

encoding Encoding

编码音频的格式。

PacketStreamControl_AllocateVmos_Result 严格 资源

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamControl_AllocateVmos_Response
err zx/Status
framework_err internal

PacketStreamControl_DeallocateVmos_Result strict

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamControl_DeallocateVmos_Response
err zx/Status
framework_err internal

PacketStreamControl_GetPacketStreamSink_Result strict resource

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamControl_GetPacketStreamSink_Response
err zx/Status
framework_err internal

PacketStreamControl_GetProperties_Result strict

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamControl_GetProperties_Response
framework_err internal

PacketStreamControl_RegisterVmos_Result strict

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamControl_RegisterVmos_Response
err zx/Status
framework_err internal

PacketStreamControl_SetPacketStreamSink_Result 严格

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamControl_SetPacketStreamSink_Response
err zx/Status
framework_err internal

PacketStreamControl_Start_Result 严格

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamControl_Start_Response
err zx/Status
framework_err internal

PacketStreamControl_Stop_Result 严格

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamControl_Stop_Response
err zx/Status
framework_err internal

PacketStreamControl_UnregisterVmos_Result 严格

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamControl_UnregisterVmos_Response
err zx/Status
framework_err internal

PacketStreamSink_FlushPackets_Result 严格

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamSink_FlushPackets_Response
err zx/Status
framework_err internal

PacketStreamSink_PutPacket_Result 严格

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

序数变体类型说明
response PacketStreamSink_PutPacket_Response
err zx/Status
framework_err internal

RingBuffer_GetVmo_Result 严格 资源

在 fuchsia.hardware.audio/ring_buffer.fidl 中定义

序数变体类型说明
response RingBuffer_GetVmo_Response
err GetVmoError

RingBuffer_SetActiveChannels_Result strict

在 fuchsia.hardware.audio/ring_buffer.fidl 中定义

序数变体类型说明
response RingBuffer_SetActiveChannels_Response
err zx/Status

RingBuffer_WatchDelayInfo_Result strict

在 fuchsia.hardware.audio/ring_buffer.fidl 中定义

序数变体类型说明
response RingBuffer_WatchDelayInfo_Response
framework_err internal

SupportedFormats2 灵活

在 fuchsia.hardware.audio/format.fidl 中定义

相应设备支持的所有可能格式。

添加了:HEAD
序数变体类型说明
pcm_supported_formats PcmSupportedFormats

支持的线性 PCM(未压缩)采样格式,带有属性。

supported_encodings SupportedEncodings

非 LPCM 编码音频(例如 AAC、MP3)支持的格式。

BITS

BufferType flexible

类型:uint64

在 fuchsia.hardware.audio/packet_stream.fidl 中定义

相应流支持的缓冲区所有权/转移类型。 驱动程序可以支持多个值。

添加了:HEAD

名称值说明
1

客户端分配 VMO 并将其注册到驱动程序。

2

驱动程序分配 VMO 并将句柄传递给客户端。

4

数据以内嵌方式在 FIDL 消息中发送。 它可以单独使用(独立),无需分配或注册 VMO,也可以与包含其他缓冲区类型的数据包混合使用。

常量

名称值类型说明
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_ENCODED_CHANNEL_SETS 64 uint32
添加了:HEAD
MAX_COUNT_ENCODED_SUPPORTED_RATES 64 uint32
添加了:HEAD
MAX_COUNT_ENCODED_TYPES 64 uint32
添加了:HEAD
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_INLINE_TRANSFER_SIZE 8192 uint64
添加了:HEAD
MAX_UI_STRING_SIZE 256 uint32
UNIQUE_ID_SIZE 16 uint32
VMO_VECTOR_MAX 256 uint32

可注册或分配的 VMO 数量上限。

添加了:HEAD

别名

名称值说明
ClockDomain uint32
ElementId uint64
TopologyId uint64
UniqueId array[UNIQUE_ID_SIZE]

以 0x42、0x54 等(或 ASCII 中的 BT)开头的 UniqueId 数组预留给实现蓝牙技术的驱动程序。 以 0x55、0x53、0x42 等(或 ASCII 中的 USB)开头的 UniqueId 数组预留给实现 USB 技术的驱动程序。 请注意,虽然上述值会映射到可读的 ASCII 字符,但数组值可以涵盖整个 uint8 范围 (0-255)。

VmoId uint64
添加了:HEAD
VmoInfos vector[VMO_VECTOR_MAX]
添加了:HEAD

服务

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 渠道

StreamConfigConnectorInputService

在 fuchsia.hardware.audio/stream_config_connector.fidl 中定义

名称类型传输
stream_config_connector fuchsia.hardware.audio/StreamConfigConnector 渠道

StreamConfigConnectorOutputService

在 fuchsia.hardware.audio/stream_config_connector.fidl 中定义

名称类型传输
stream_config_connector fuchsia.hardware.audio/StreamConfigConnector 渠道

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 渠道