fuchsia.hardware.audio

新增:7

這個檔案定義 PacketStream 通訊協定,用於串流播放和擷取以封包為基礎的音訊 (例如編碼音訊)。

通訊協定

轉碼器

定義於 fuchsia.hardware.audio/codec.fidl

如需總覽,請參閱「[音訊轉碼器介面]」。

淘汰

不再支援,請改用音訊複合,其中包含一個 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 通訊協定。 系統可能會支援多個連線。如果系統不支援新的連線要求 (例如已建立連線數量的上限,例如一個),則會關閉 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

如要瞭解 Codec 通訊協定的總覽,請參閱「Codec 介面」。

淘汰

不再支援,請改用音訊複合,其中包含一個 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_idGetElements 傳回的 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_idGetElements 傳回的 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_idGetElements 傳回的 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 的 GetElementsGetTopologies 所傳回。

如果目前無法使用封包串流格式,則傳回 SHOULD_WAIT。用戶端可能會在稍後重試這項要求。如果 processing_element_idGetElements 傳回的 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 處理元素支援的環形緩衝區格式,如 fuchsia.hardware.audio.signalprocessing. GetElements 傳回的格式。如果當時無法使用環形緩衝區格式,則會傳回 SHOULD_WAIT,用戶端稍後可能會重試。如果 processing_element_idGetElements 傳回的 ID 不符,則傳回 INVALID_ARGS。如果 ID 所代表元素的 ElementType 不是 RING_BUFFER,則傳回 WRONG_TYPE。擷取多個 SupportedFormats2 可支援 SupportedFormats2 中參數的專屬組合。傳回給呼叫端的向量至少要包含一個項目。

要求

名稱類型
processing_element_id ElementId

回應

名稱類型
payload Composite_GetRingBufferFormats_Result

重設

重設硬體,包括所有 DAI 互連和訊號處理。 因此,CreateRingBufferCreatePacketStream 取得的所有管道都會關閉。

硬體完全重設後,Reset 會傳回。此時,用戶端需要重新設定所有 DAI 互連、選取信號處理拓撲,並重新設定所有處理元素,以及重建所有環形緩衝區和封包串流。

如果驅動程式庫無法順利重設硬體,就會傳回錯誤並關閉通訊協定管道,此時用戶端可以取得新的通訊協定管道並重試。

要求

<EMPTY>

回應

名稱類型
payload Composite_Reset_Result

SetDaiFormat

SetDaiFormat 由用戶端傳送,用於為 processing_element_id 指定的 DAI_INTERCONNECT 處理元素選取 DAI 格式。格式取決於驅動程式庫在 GetDaiFormats 中提供的資訊、用戶端支援的格式,以及任何其他需求。如果 processing_element_idGetElements 傳回的 ID 不符,則傳回 INVALID_ARGS。如果 ID 所代表元素的 ElementType 不是 DAI_INTERCONNECT,則傳回 WRONG_TYPE

要求

名稱類型
processing_element_id ElementId
format DaiFormat

回應

名稱類型
payload Composite_SetDaiFormat_Result

SignalProcessingConnect

連線至 SignalProcessing 通訊協定。 系統可能會支援多個連線。如果系統不支援新的連線要求 (例如已建立連線數量的上限,例如一個),則會關閉 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, 根據驅動程式庫在 GetDaiFormatsGetRingBufferFormats 中提供的資訊、 用戶端支援的項目,以及任何其他需求,選取 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 會傳回。如果驅動程式庫無法順利重設 HW,就會關閉 DAI 通訊協定管道,此時用戶端可能會取得新的 DAI 通訊協定管道並重試。

要求

<EMPTY>

回應

<EMPTY>

SignalProcessingConnect

連線至 SignalProcessing 通訊協定。 系統可能會支援多個連線。如果系統不支援新的連線要求 (例如已建立連線數量的上限,例如一個),則會關閉 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_sizevmo_count 為零,就會傳回 ZX_ERR_INVALID_ARGS。如果驅動程式庫無法分配要求的 VMO,則會傳回 ZX_ERR_NO_MEMORY。 如果 VMO 已分配或註冊,或串流已啟動,就會傳回 ZX_ERR_BAD_STATE。請先呼叫 DeallocateVmosUnregisterVmos 重新設定。

要求

名稱類型
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。請先呼叫 UnregisterVmosDeallocateVmos 重新設定。

要求

名稱類型
payload RegisterVmosConfig

回應

名稱類型
payload PacketStreamControl_RegisterVmos_Result

SetPacketStreamSink

為驅動程式庫提供資料接收器。 這項設定適用於驅動程式庫會產生資料的音訊 Input

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 使用獨立管道,因此無法嚴格保證 StopPacketStreamSink.PutPacket 之間的順序:

  • 如果是 Output,部分進行中的 PacketStreamSink.PutPacket 呼叫可能會在 Stop 傳回後順利完成。
  • 如果是 Input,部分進行中的 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。Driver 會呼叫 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_OWNEDDRIVER_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 個位元 (最多 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 讀取或寫入資料,但須遵守下方「環形緩衝區行為」一節所述的整體位置和緩衝行為。

如果先呼叫 Start 再呼叫 GetVmo,則必須使用 ZX_ERR_BAD_STATE 關閉管道。 如果在 RingBuffer 啟動時呼叫 Start,或在第一次呼叫完成前第二次呼叫 Start,則必須關閉管道,並傳回錯誤 ZX_ERR_BAD_STATE。如果 StartSetActiveChannels 之前呼叫,則預設會啟用所有管道。

要求

<EMPTY>

回應

名稱類型
start_time zx/Time

停止

停止環形緩衝區。

收到這項呼叫的回應後,系統就不會再傳送位置通知,直到再次呼叫 Start 為止。

如果先呼叫 Stop 再呼叫 GetVmo,則必須使用 ZX_ERR_BAD_STATE 關閉管道。

要求

<EMPTY>

回應

<EMPTY>

WatchClockRecoveryPositionInfo

透過暫止式取得,取得環形緩衝區的目前位置。

只有在呼叫 GetVmo 後,才能呼叫 WatchClockRecoveryPositionInfo,且必須指定 clock_recovery_notifications_per_ring

司機必須接聽客戶的第一通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 位元樣本,則驅動程式庫會回覆 2 個 SupportedFormats:<<32bits>,<48KHz>> 和 <<16bits>,<96KHz>>。為求簡單,這個範例會忽略取樣率和每個樣本的位元以外的參數。如果驅動程式庫支援 16 位元或 32 位元樣本,且取樣率為 48 或 96 KHz,驅動程式庫會回覆 1 SupportedFormats:<<16bits,32bits>,<48KHz,96KHz>>。

要求

<EMPTY>

回應

名稱類型
supported_formats vector<SupportedFormats>:64

SetGain

用戶端更新增益狀態。

要求

名稱類型
target_state GainState

SignalProcessingConnect

連線至 SignalProcessing 通訊協定。 系統可能會支援多個連線。如果系統不支援新的連線要求 (例如已建立連線數量的上限,例如一個),則會關閉 protocol 管道 (不是呼叫 SignalProcessingConnect 的管道),並顯示 ZX_ERR_ALREADY_BOUND 墓誌銘。如果完全不支援訊號處理,系統就會關閉 protocol 管道 (同樣地,不是呼叫 SignalProcessingConnect 的管道),並顯示 ZX_ERR_NOT_SUPPORTED 墓誌銘。這個方法命名為 SignalProcessingConnect 而不是 Connect,是因為這個通訊協定旨在組成,因此較詳細的名稱可區分並提高清楚度。

要求

名稱類型
protocol server_end:fuchsia.hardware.audio.signalprocessing/SignalProcessing

WatchGainState

透過暫止式取得取得增益狀態。驅動程式會回覆用戶端傳送的第一個 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 中以 frame_format 形式排列,並含有 bits_per_sample 位元的資料。詳情請參閱「數位音訊介面」。

欄位類型說明預設
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

影格內影格同步的高 sclks 數。 舉例來說,如果 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

每個時段支援的位元數。值必須以遞增方式列出。

無預設值
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 resource

定義於 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

駕駛人對時間的最佳估計值 (以 CLOCK_MONOTONIC 時間軸表示),即播放/擷取指標達到 position 所指出位置的時間。

turn_on_delay 影響不應納入「時間戳記」。不得納入 DelayInfo 中顯示的任何延遲。

無預設值
position uint32

驅動程式庫估算時間 timestamp 時,環形緩衝區中的播放/擷取指標位置 (以位元組為單位)。

無預設值

RingBuffer_GetVmo_Response resource

定義於 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 無預設值

ENUMS

DaiFrameFormatStandard strict

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

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

類型:uint32

定義於 fuchsia.hardware.audio/common.fidl

名稱說明
1

執行作業時,驅動程式發生不明錯誤。

2

作業未實作、支援或啟用。

3

引數無效。

4

作業主體類型不正確,無法執行作業。

5

目前無法執行這項作業,但如果呼叫端等待先決條件達成,作業可能就會成功。

6

驅動程式庫發生嚴重錯誤,連線已無法使用,用戶端應關閉連線。

新增:29

EncodingType 彈性

類型:uint32

定義於 fuchsia.hardware.audio/encoding.fidl

串流使用的編碼類型。

新增:HEAD

名稱說明
1
2

GetVmoError strict

類型:uint32

定義於 fuchsia.hardware.audio/ring_buffer.fidl

名稱說明
1

引數無效 (例如 min_frames 太大),因此無法設定環形緩衝區。

2

發生內部錯誤,因此無法設定環形緩衝區。

PlugDetectCapabilities strict

類型:uint32

定義於 fuchsia.hardware.audio/plug.fidl

名稱說明
0

駕駛人已接上電源 (會一直插著)。

1

驅動程式可以非同步通知插頭狀態變更。

SampleFormat strict

類型: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

Codec 格式資訊。

序數欄位類型說明
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

製造商名稱的 UI 字串。如果未列出,表示製造商未指定。 如果包含此字串,則不得為空白。

選用。

product string:256

產品名稱的 UI 字串。如果未加入,產品名稱會顯示為未指定。 如果包含此字串,則不得為空白。

選用。

unique_id UniqueId

編解碼器的專屬 ID。如未納入,這個編解碼器就沒有專屬 ID。 請參閱 unique_id.fidl,瞭解特定預先定義值和範圍的注意事項。

選用。

plug_detect_capabilities PlugDetectCapabilities

插座偵測功能。

必填。

CompositeProperties

定義於 fuchsia.hardware.audio/composite.fidl

序數欄位類型說明
manufacturer string:256

製造商名稱的 UI 字串。如果未設定,製造商不明。 如果包含此字串,則不得為空白。

選用。

product string:256

產品名稱的 UI 字串。如果未設定,產品名稱不明。 如果包含此字串,則不得為空白。

選用。

unique_id UniqueId

專屬 ID。如果未納入,這個裝置就沒有專屬 ID。 如要瞭解特定預先定義值和範圍的注意事項,請參閱 unique_id.fidl

選用。

clock_domain ClockDomain

這個硬體運作的時脈網域 ID。如果兩個硬體裝置具有相同的時脈網域,時脈速率就會完全相同且完美同步。雖然這兩個時鐘的速率相同,但時鐘位置可能會彼此偏移任意 (但固定) 的量。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

製造商名稱的 UI 字串。如果未列出,表示製造商未指定。 如果包含此字串,則不得為空白。

選用。

product_name string:256

產品名稱的 UI 字串。如果未加入,產品名稱會顯示為未指定。 如果包含此字串,則不得為空白。

選用。

unique_id UniqueId

DAI 的專屬 ID。如果未納入,這項 DAI 就沒有專屬 ID。 如要瞭解特定預先定義值和範圍的注意事項,請參閱 unique_id.fidl

選用。

clock_domain ClockDomain

這個硬體運作的時脈網域 ID。如果兩個硬體裝置具有相同的時脈網域,時脈速率就會完全相同且完美同步。雖然這兩個時鐘的速率相同,但時鐘位置可能會彼此偏移任意 (但固定) 的量。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 resource

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數欄位類型說明
stream client_end:PacketStreamSink

PacketStreamControl_GetPacketStreamSink_Response resource

定義於 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 resource

定義於 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 音訊的格式。每個影格都包含一或多個 (number_of_channels) 樣本,並連續儲存。在為每個樣本分配的 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 resource

定義於 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 位於相同的快取一致性網域,因此驅動程式庫不必清除/使環狀緩衝區失效。請注意,在這種情況下,驅動程式庫和用戶端仍須同步處理資料存取,例如在讀取前插入適當的取得柵欄,並在寫入後釋放柵欄,或 (更常見的做法) 遵守「環狀緩衝區行為」一節所述的 Producer/Consumer 模式。

必填。

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_delayexternal_delay 欄位傳達,與這個值正交。

必填。

新增:27

StreamProperties

定義於 fuchsia.hardware.audio/stream_config.fidl

序數欄位類型說明
unique_id UniqueId

專屬 ID。如果未納入,這個 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

製造商名稱的 UI 字串。如果未列出,表示製造商未指定。 如果包含此字串,則不得為空白。

選用。

product string:256

產品名稱的 UI 字串。如果未加入,產品名稱會顯示為未指定。 如果包含此字串,則不得為空白。

選用。

clock_domain ClockDomain

這個硬體運作的時脈網域 ID。如果兩個硬體裝置具有相同的時脈網域,時脈速率就會完全相同且完美同步。雖然這兩個時鐘的速率相同,但時鐘位置可能會彼此偏移任意 (但固定) 的量。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 支援 48 kHz,但 SBC 只支援 44.1 kHz),裝置必須在 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 資訊。用於 RegisterVmosAllocateVmos,將 VMO 控制代碼與專屬 ID 配對。

新增:HEAD

序數欄位類型說明
id VmoId

與 VMO 相對應的 ID。

必填。

vmo handle<vmo>

VMO 的控制代碼。

必填。

VmoTransfer resource

定義於 fuchsia.hardware.audio/packet_stream.fidl

這說明包含音訊資料的 VMO 區段。

新增:HEAD

序數欄位類型說明
vmo_id VmoId

先前註冊或分配的 VMO ID。

必填。

vmo_offset uint64

開始讀取或寫入 VMO 的位移。 這是相對於該 VMO 的開始時間。

必填。

payload_size uint64

從/向這個 VMO 區域讀取/寫入的位元組數。

必填。

工會

Codec_GetDaiFormats_Result strict

定義於 fuchsia.hardware.audio/codec.fidl

序數Variant類型說明
response Codec_GetDaiFormats_Response
err zx/Status

Codec_SetDaiFormat_Result strict

定義於 fuchsia.hardware.audio/codec.fidl

序數Variant類型說明
response Codec_SetDaiFormat_Response
err zx/Status

Composite_CreatePacketStream_Result strict

定義於 fuchsia.hardware.audio/composite.fidl

序數Variant類型說明
response Composite_CreatePacketStream_Response
err DriverError
framework_err internal

Composite_CreateRingBuffer_Result strict

定義於 fuchsia.hardware.audio/composite.fidl

序數Variant類型說明
response Composite_CreateRingBuffer_Response
err DriverError
framework_err internal

Composite_GetDaiFormats_Result strict

定義於 fuchsia.hardware.audio/composite.fidl

序數Variant類型說明
response Composite_GetDaiFormats_Response
err DriverError
framework_err internal

Composite_GetPacketStreamFormats_Result strict

定義於 fuchsia.hardware.audio/composite.fidl

序數Variant類型說明
response Composite_GetPacketStreamFormats_Response
err DriverError
framework_err internal

Composite_GetProperties_Result strict

定義於 fuchsia.hardware.audio/composite.fidl

序數Variant類型說明
response Composite_GetProperties_Response
framework_err internal

Composite_GetRingBufferFormats_Result strict

定義於 fuchsia.hardware.audio/composite.fidl

序數Variant類型說明
response Composite_GetRingBufferFormats_Response
err DriverError
framework_err internal

Composite_Reset_Result strict

定義於 fuchsia.hardware.audio/composite.fidl

序數Variant類型說明
response Composite_Reset_Response
err DriverError
framework_err internal

Composite_SetDaiFormat_Result strict

定義於 fuchsia.hardware.audio/composite.fidl

序數Variant類型說明
response Composite_SetDaiFormat_Response
err DriverError
framework_err internal

DaiFrameFormat strict

定義於 fuchsia.hardware.audio/dai_format.fidl

標準或自訂影格格式。

序數Variant類型說明
frame_format_standard DaiFrameFormatStandard

DAI 中所有樣本的格式類型,列於 DaiFrameFormatStandard 中。

frame_format_custom DaiFrameFormatCustom

DAI 中所有樣本的格式類型,在 DaiFrameFormatCustom 中指定。

Dai_GetDaiFormats_Result strict

定義於 fuchsia.hardware.audio/dai.fidl

序數Variant類型說明
response Dai_GetDaiFormats_Response
err zx/Status

Dai_GetRingBufferFormats_Result strict

定義於 fuchsia.hardware.audio/dai.fidl

序數Variant類型說明
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. 資料:酬載直接在訊息中提供。這個模式適用於小型傳輸或控制資訊,不適用於高處理量串流。

新增:HEAD
序數Variant類型說明
vmo_transfer VmoTransfer

資料會儲存在已註冊 VMO 的區域。PacketStreamProperties.supported_buffer_types 必須包含 CLIENT_OWNEDDRIVER_OWNED

inline_data vector<uint8>:8192

內嵌資料緩衝區。 必須在 PacketStreamProperties.supported_buffer_types 中加入 INLINE

格式 2 彈性

定義於 fuchsia.hardware.audio/format.fidl

新增:HEAD
序數Variant類型說明
pcm_format PcmFormat

線性 PCM (未壓縮) 樣本的格式。

encoding Encoding

編碼音訊的格式。

PacketStreamControl_AllocateVmos_Result strict resource

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamControl_AllocateVmos_Response
err zx/Status
framework_err internal

PacketStreamControl_DeallocateVmos_Result strict

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamControl_DeallocateVmos_Response
err zx/Status
framework_err internal

PacketStreamControl_GetPacketStreamSink_Result strict resource

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamControl_GetPacketStreamSink_Response
err zx/Status
framework_err internal

PacketStreamControl_GetProperties_Result strict

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamControl_GetProperties_Response
framework_err internal

PacketStreamControl_RegisterVmos_Result strict

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamControl_RegisterVmos_Response
err zx/Status
framework_err internal

PacketStreamControl_SetPacketStreamSink_Result strict

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamControl_SetPacketStreamSink_Response
err zx/Status
framework_err internal

PacketStreamControl_Start_Result strict

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamControl_Start_Response
err zx/Status
framework_err internal

PacketStreamControl_Stop_Result strict

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamControl_Stop_Response
err zx/Status
framework_err internal

PacketStreamControl_UnregisterVmos_Result strict

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamControl_UnregisterVmos_Response
err zx/Status
framework_err internal

PacketStreamSink_FlushPackets_Result strict

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamSink_FlushPackets_Response
err zx/Status
framework_err internal

PacketStreamSink_PutPacket_Result strict

定義於 fuchsia.hardware.audio/packet_stream.fidl

序數Variant類型說明
response PacketStreamSink_PutPacket_Response
err zx/Status
framework_err internal

RingBuffer_GetVmo_Result strict resource

定義於 fuchsia.hardware.audio/ring_buffer.fidl

序數Variant類型說明
response RingBuffer_GetVmo_Response
err GetVmoError

RingBuffer_SetActiveChannels_Result strict

定義於 fuchsia.hardware.audio/ring_buffer.fidl

序數Variant類型說明
response RingBuffer_SetActiveChannels_Response
err zx/Status

RingBuffer_WatchDelayInfo_Result strict

定義於 fuchsia.hardware.audio/ring_buffer.fidl

序數Variant類型說明
response RingBuffer_WatchDelayInfo_Response
framework_err internal

SupportedFormats2 彈性

定義於 fuchsia.hardware.audio/format.fidl

這部裝置支援的所有可能格式。

新增:HEAD
序數Variant類型說明
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

ALIASES

名稱說明
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 版本