這個檔案定義 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
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。
要求
| 名稱 | 類型 |
|---|---|
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 中參數的專屬組合。傳回給呼叫端的向量至少要包含一個項目。
要求
| 名稱 | 類型 |
|---|---|
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_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_INTERCONNECT 處理元素選取 DAI 格式。格式取決於驅動程式庫在 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 通訊協定。
系統可能會支援多個連線。如果系統不支援新的連線要求 (例如已建立連線數量的上限,例如一個),則會關閉 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 會傳回。如果驅動程式庫無法順利重設 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
用於建立及管理封包串流的控制通訊協定。
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:
- 應用程式將音訊資料寫入已註冊的 VMO。
- 應用程式會清除所寫入區域的快取 (如果
needs_cache_flush_or_invalidate為 true)。 - 應用程式會使用資料位置呼叫
PacketStreamSink.PutPacket。 - 驅動程式會取用資料。
如果多次呼叫這個方法,系統會關閉先前的 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
為驅動程式庫提供資料接收器。 這項設定適用於驅動程式庫會產生資料的音訊 Input。
Flow:
- 驅動程式會將音訊資料寫入已註冊的 VMO。
- 驅動程式會使用資料位置呼叫
PacketStreamSink.PutPacket。 - 應用程式會收到
PutPacket。 - 應用程式會撤銷區域的快取 (如果
needs_cache_flush_or_invalidate為 true)。 - 應用程式讀取資料。
如果多次呼叫這個方法,驅動程式庫會關閉先前的 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 之間的順序:
- 如果是 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
用於串流封包式音訊資料的通訊協定。 這個通訊協定會做為資料接收器。這個通訊協定的「伺服器」會取用封包,「用戶端」則會產生封包。
這個通訊協定可用於兩個方向:
- 輸出 (用戶端 -> 驅動程式):驅動程式會實作
PacketStreamSink。用戶端 (應用程式) 呼叫PutPacket。 - 輸入 (驅動程式 -> 用戶端):用戶端 (應用程式) 會實作
PacketStreamSink。Driver 會呼叫PutPacket。
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 個位元 (最多 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。如果 Start 在 SetActiveChannels 之前呼叫,則預設會啟用所有管道。
要求
<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。
要求
<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
|
聲道數。
如果 |
無預設值 |
channels_to_use_bitmask |
uint64
|
透過位元遮罩設定要啟用的通道。
最低有效位元對應至管道索引 0。不得設定最低有效 |
無預設值 |
sample_format |
DaiSampleFormat
|
所有樣本的樣本格式。 |
無預設值 |
frame_format |
DaiFrameFormat
|
所有樣本的影格格式。 |
無預設值 |
frame_rate |
uint32
|
所有樣本的影格率。 |
無預設值 |
bits_per_slot |
uint8
|
所有頻道的每個時段位元數。 |
無預設值 |
bits_per_sample |
uint8
|
每個管道的每樣本位元數。
必須小於 |
無預設值 |
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 |
uint8
|
樣本中的有效位元數,必須小於或等於 |
無預設值 |
frame_rate |
uint32
|
所有樣本的影格率。 |
無預設值 |
RingBufferPositionInfo
定義於 fuchsia.hardware.audio/ring_buffer.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
timestamp |
zx/Time
|
駕駛人對時間的最佳估計值 (以 CLOCK_MONOTONIC 時間軸表示),即播放/擷取指標達到
|
無預設值 |
position |
uint32
|
驅動程式庫估算時間 |
無預設值 |
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 這種沒有訊框同步的範例一樣的訊框格式。 |
I2S |
2 |
格式如 I2S 規格所述 (靠左對齊、2 個聲道、每個樣本 32 位元、左管道的影格同步保持低電位,右聲道的影格同步保持高電位,資料會在影格同步變更後的一個時脈週期開始,並在 sclk 的下降緣時脈輸出)。 |
STEREO_LEFT |
3 |
靠左對齊,2 個聲道。資料從影格同步開始,並在 sclk 的下降沿從低電位變更為高電位時,以時脈輸出。第一個管道的影格同步必須維持高位元 |
STEREO_RIGHT |
4 |
靠右對齊,2 個聲道。第一個管道的影格同步必須維持高位元 |
TDM1 |
5 |
靠左對齊,通道數量可變,資料從影格同步處理變更開始,從低到高時脈輸出,位於 sclk 的上升邊緣。影格同步必須維持高電壓,時間剛好為 1 個時脈週期。 |
TDM2 |
6 |
左對齊,通道數量可變,資料在訊框同步從低電平變為高電平後的一個時脈週期開始,並在 sclk 的上升沿輸出。影格同步必須在 1 個時脈週期內保持高電位。 |
TDM3 |
7 |
左對齊,管道數量可變,資料會在訊框同步從低到高變化後兩個時脈週期開始,並在 sclk 的上升沿觸發時脈輸出。影格同步必須在 1 個時脈週期內保持高電位。 |
DaiSampleFormat strict
類型:uint8
定義於 fuchsia.hardware.audio/dai_format.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
PDM |
1 |
脈衝密度調變範例。 |
PCM_SIGNED |
2 |
以主機位元組順序排列的帶正負號整數線性脈衝碼調變樣本。 |
PCM_UNSIGNED |
3 |
無符號整數線性脈衝碼調變樣本,位於主機位元組順序。 |
PCM_FLOAT |
4 |
浮點樣本,按照 IEEE-754 標準編碼。 |
DeviceType flexible
類型:uint32
定義於 fuchsia.hardware.audio/device_type.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
STREAM_CONFIG |
1 |
裝置支援 fuchsia.hardware.audio/StreamConfig 通訊協定。 |
DAI |
2 |
裝置支援 fuchsia.hardware.audio/Dai 通訊協定。 |
CODEC |
3 |
裝置支援 fuchsia.hardware.audio/Codec 通訊協定。 |
複合 |
4 |
裝置支援 fuchsia.hardware.audio/Composite 通訊協定。 |
DriverError flexible
類型:uint32
定義於 fuchsia.hardware.audio/common.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
INTERNAL_ERROR |
1 |
執行作業時,驅動程式發生不明錯誤。 |
NOT_SUPPORTED |
2 |
作業未實作、支援或啟用。 |
INVALID_ARGS |
3 |
引數無效。 |
WRONG_TYPE |
4 |
作業主體類型不正確,無法執行作業。 |
SHOULD_WAIT |
5 |
目前無法執行這項作業,但如果呼叫端等待先決條件達成,作業可能就會成功。 |
FATAL_ERROR |
6 |
驅動程式庫發生嚴重錯誤,連線已無法使用,用戶端應關閉連線。 新增:29
|
EncodingType 彈性
類型:uint32
定義於 fuchsia.hardware.audio/encoding.fidl
串流使用的編碼類型。
| 名稱 | 值 | 說明 |
|---|---|---|
AAC |
1 |
|
SBC |
2 |
GetVmoError strict
類型:uint32
定義於 fuchsia.hardware.audio/ring_buffer.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
INVALID_ARGS |
1 |
引數無效 (例如 min_frames 太大),因此無法設定環形緩衝區。 |
INTERNAL_ERROR |
2 |
發生內部錯誤,因此無法設定環形緩衝區。 |
PlugDetectCapabilities strict
類型:uint32
定義於 fuchsia.hardware.audio/plug.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
有線 |
0 |
駕駛人已接上電源 (會一直插著)。 |
CAN_ASYNC_NOTIFY |
1 |
驅動程式可以非同步通知插頭狀態變更。 |
SampleFormat strict
類型:uint8
定義於 fuchsia.hardware.audio/pcm_format.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
PCM_SIGNED |
1 |
以主機位元組順序排列的帶正負號整數線性脈衝碼調變樣本。 |
PCM_UNSIGNED |
2 |
無符號整數線性脈衝碼調變樣本,位於主機位元組順序。 |
PCM_FLOAT |
3 |
浮點樣本,按照 IEEE-754 標準編碼。 |
SingularUniqueId 彈性
類型:uint8
定義於 fuchsia.hardware.audio/unique_id.fidl
識別系統中的專屬裝置。 這類裝置的 UniqueId 包含列舉值,後面接著 (UNIQUE_ID_SIZE - 1) 個零。
| 名稱 | 值 | 說明 |
|---|---|---|
需求端平台 |
0 |
|
BUILTIN_SPEAKER |
1 |
|
BUILTIN_HEADPHONE_JACK |
2 |
|
BUILTIN_MICROPHONE |
3 |
|
BUILTIN_HEADSET_JACK |
4 |
TABLES
AllocateVmosConfig
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
min_vmo_size |
uint64
|
每個 VMO 的最低大小 (以位元組為單位)。 必填。 |
2 |
vmo_count |
uint32
|
要分配的 VMO 數量。 必填。 |
ChannelAttributes
定義於 fuchsia.hardware.audio/pcm_format.fidl
整體管道設定中的單一管道規格。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
min_frequency |
uint32
|
這個管道保證發出 (或擷取) 的最低頻率 (以 Hz 為單位)。
如果未包含 選用。 |
2 |
max_frequency |
uint32
|
這個管道保證發出 (或擷取) 的最大頻率,單位為 Hz。
如果未包含 選用。 |
ChannelSet
定義於 fuchsia.hardware.audio/pcm_format.fidl
管道設定的規格。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
attributes |
vector<ChannelAttributes>:64
|
說明這個管道組合的屬性。
這個向量的大小會定義此 必填。 |
CodecFormatInfo
定義於 fuchsia.hardware.audio/codec.fidl
Codec 格式資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
external_delay |
zx/Duration
|
驅動程式對所選格式管道中外部延遲的最佳估計值 (以奈秒為單位)。在多個實體 (例如裝置) 間精確同步顯示內容時,應將外部延遲納入考量。如果未納入,則 選用。 |
2 |
turn_on_delay |
zx/Duration
|
驅動程式對硬體實際開始播放/擷取作業所需時間 (以奈秒為單位) 的最佳估計值,是在發出 選用。 |
3 |
turn_off_delay |
zx/Duration
|
驅動程式對硬體實際停止播放/擷取所需時間 (以奈秒為單位) 的最佳估計值,是在發出 選用。 |
CodecProperties
定義於 fuchsia.hardware.audio/codec.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
is_input |
bool
|
驅動程式類型為輸入 (true) 或輸出 (false) 如未納入,驅動程式庫可同時用於輸入和輸出。 選用。 |
2 |
manufacturer |
string:256
|
製造商名稱的 UI 字串。如果未列出,表示製造商未指定。 如果包含此字串,則不得為空白。 選用。 |
3 |
product |
string:256
|
產品名稱的 UI 字串。如果未加入,產品名稱會顯示為未指定。 如果包含此字串,則不得為空白。 選用。 |
4 |
unique_id |
UniqueId
|
編解碼器的專屬 ID。如未納入,這個編解碼器就沒有專屬 ID。
請參閱 選用。 |
5 |
plug_detect_capabilities |
PlugDetectCapabilities
|
插座偵測功能。 必填。 |
CompositeProperties
定義於 fuchsia.hardware.audio/composite.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
2 |
manufacturer |
string:256
|
製造商名稱的 UI 字串。如果未設定,製造商不明。 如果包含此字串,則不得為空白。 選用。 |
3 |
product |
string:256
|
產品名稱的 UI 字串。如果未設定,產品名稱不明。 如果包含此字串,則不得為空白。 選用。 |
4 |
unique_id |
UniqueId
|
專屬 ID。如果未納入,這個裝置就沒有專屬 ID。
如要瞭解特定預先定義值和範圍的注意事項,請參閱 選用。 |
5 |
clock_domain |
ClockDomain
|
這個硬體運作的時脈網域 ID。如果兩個硬體裝置具有相同的時脈網域,時脈速率就會完全相同且完美同步。雖然這兩個時鐘的速率相同,但時鐘位置可能會彼此偏移任意 (但固定) 的量。clock_domain 通常來自系統範圍實體,例如平台匯流排或全域時脈樹狀結構。 有兩個特殊值:
如果網域不是 必填。 |
DaiProperties
定義於 fuchsia.hardware.audio/dai.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
is_input |
bool
|
驅動程式類型為輸入 (true) 或輸出 (false) 必填。 |
2 |
manufacturer |
string:256
|
製造商名稱的 UI 字串。如果未列出,表示製造商未指定。 如果包含此字串,則不得為空白。 選用。 |
3 |
product_name |
string:256
|
產品名稱的 UI 字串。如果未加入,產品名稱會顯示為未指定。 如果包含此字串,則不得為空白。 選用。 |
4 |
unique_id |
UniqueId
|
DAI 的專屬 ID。如果未納入,這項 DAI 就沒有專屬 ID。
如要瞭解特定預先定義值和範圍的注意事項,請參閱 選用。 |
5 |
clock_domain |
ClockDomain
|
這個硬體運作的時脈網域 ID。如果兩個硬體裝置具有相同的時脈網域,時脈速率就會完全相同且完美同步。雖然這兩個時鐘的速率相同,但時鐘位置可能會彼此偏移任意 (但固定) 的量。clock_domain 通常來自系統範圍實體,例如平台匯流排或全域時脈樹狀結構。 有兩個特殊值:
如果網域不是 必填。 |
DelayInfo
定義於 fuchsia.hardware.audio/ring_buffer.fidl
驅動程式庫回報的延誤資訊。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
internal_delay |
zx/Duration
|
驅動程式對硬體內部延遲的最佳估計值 (適用於所選格式)。 「內部」是指 DAI 互連和環形緩衝區之間的硬體 (例如 SoC 音訊子系統),而「外部」是指任何 DAI 互連遠端的硬體 (例如硬體編解碼器)。 在播放期間的特定影格,這是指驅動程式庫將影格從環形緩衝區複製出來後,到影格退出任何互連介面之間的延遲。在錄製期間的特定影格,這是指影格進入互連後,驅動程式庫將其移至環形緩衝區前的任何延遲。 用戶端判斷最低前置時間 (播放期間) 和最低擷取延遲時間 (擷取期間) 的需求時,必須將 這項延遲不得包含暫時緩衝區新增的固有延遲,因為這類緩衝區是將資料複製到循環緩衝區及從循環緩衝區複製資料時所需,且包含在 必填。 |
2 |
external_delay |
zx/Duration
|
驅動程式對硬體外部延遲的最佳估計值 (適用於所選格式)。 「外部」是指任何 DAI 互連網路遠端的硬體 (例如硬體編解碼器);「內部」是指 DAI 互連網路和環形緩衝區之間的硬體 (例如 SoC 音訊子系統)。 用戶端判斷最低前置時間 (播放期間) 和最低擷取延遲時間 (擷取期間) 的需求時,必須將 如果未提供, 與 選用。 |
編碼
定義於 fuchsia.hardware.audio/encoding.fidl
編碼音訊串流的格式規格。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
decoded_channel_count |
uint32
|
解碼後的串流聲道數。 必填。 |
2 |
decoded_frame_rate |
uint32
|
串流解碼後的影格率。這是解碼器的提示。 選用。 |
3 |
average_encoding_bitrate |
uint32
|
串流的平均位元率 (位元/秒)。 必填。 |
4 |
encoding_type |
EncodingType
|
串流的編碼類型。 必填。 |
格式
定義於 fuchsia.hardware.audio/format.fidl
已淘汰:請改用 Format2。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
pcm_format |
PcmFormat
|
GainState
定義於 fuchsia.hardware.audio/stream_config.fidl
用戶端要求或驅動程式庫回報的增益狀態。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
muted |
bool
|
目前的靜音狀態。如果未加入,狀態會設為未靜音。 選用。 |
2 |
agc_enabled |
bool
|
目前的自動增益控制 (AGC) 狀態。如果未加入,AGC 會停用。 選用。 |
3 |
gain_db |
float32
|
目前增益 (以分貝為單位)。 必填。 |
HealthState
定義於 fuchsia.hardware.audio/health.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
healthy |
bool
|
驅動程式目前健康狀態良好。 如果未加入這個欄位,系統就不會提供健康資訊。如果驅動程式沒有足夠的功能或資源自行復原,例如無法透過 GPIO 關閉硬體,或無法控制電源子系統,就能在這種情況下發出健康狀態信號。 選用。 |
PacketStreamControlSetPacketStreamSinkRequest resource
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
stream |
client_end:PacketStreamSink
|
PacketStreamControl_GetPacketStreamSink_Response resource
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
stream |
client_end:PacketStreamSink
|
PacketStreamProperties
定義於 fuchsia.hardware.audio/packet_stream.fidl
封包串流的屬性。封包串流建立後,這些值就不會變更。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
needs_cache_flush_or_invalidate |
bool
|
如果設為 true,表示封包串流會在不同的快取一致性網域中執行。用戶必須確保資料寫入作業會排清至主記憶體 (輸出期間),或在讀取前失效 (輸入期間)。 如果設為 false,伺服器和用戶端會位於相同的連貫性網域。您仍須進行同步處理 (例如柵欄),才能排序讀取和寫入作業。 必填。 |
2 |
supported_buffer_types |
BufferType
|
這個驅動程式庫支援的緩衝區方法。 必填。 |
PacketStreamSinkPutPacketRequest resource
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
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 項目的向量。
詳情請參閱「音訊驅動程式串流介面」。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
channel_sets |
vector<ChannelSet>:64
|
可能的 必填。 |
2 |
sample_formats |
vector<SampleFormat>:3
|
支援的可能 必填。 |
3 |
bytes_per_sample |
vector<uint8>:8
|
為每個樣本分配的可能位元組向量。值必須以遞增順序列出。 必填。 |
4 |
valid_bits_per_sample |
vector<uint8>:8
|
可能包含有效資料的位元數向量,位於 必填。 |
5 |
frame_rates |
vector<uint32>:64
|
支援的可能影格速率向量。值必須以遞增方式列出。 必填。 |
PlugState
定義於 fuchsia.hardware.audio/plug.fidl
驅動程式庫傳回的插頭狀態。
如果驅動程式庫回報的 plug_detect_capabilities 等於 HARDWIRED,則驅動程式庫應只在第一次呼叫 WatchPlugState 時回應,並將 plugged 設為 true,plug_state_time 設為時間「0」。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
plugged |
bool
|
目前已插入驅動程式。必填 |
2 |
plug_state_time |
zx/Time
|
為這個結構體其餘欄位中提供的資訊加上時間戳記。必填。 |
RegisterVmosConfig resource
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
vmo_infos |
VmoInfos
|
要向驅動程式庫註冊的 VMO 清單。 必填。 |
RingBufferProperties
定義於 fuchsia.hardware.audio/ring_buffer.fidl
環形緩衝區的屬性。環形緩衝區建立後,這些值就不會變更。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
3 |
needs_cache_flush_or_invalidate |
bool
|
設為 true 時,表示環形緩衝區在不同的快取一致性網域中執行,因此用戶必須確保資料寫入作業會完全排清至主記憶體 (在播放期間),或在任何讀取作業之前,環形緩衝區的檢視畫面必須失效 (在擷取期間)。這是因為 CPU 外部可能會有硬體讀取/寫入主記憶體,略過 CPU。 設為 false 時,表示環狀緩衝區與 CPU 位於相同的快取一致性網域,因此驅動程式庫不必清除/使環狀緩衝區失效。請注意,在這種情況下,驅動程式庫和用戶端仍須同步處理資料存取,例如在讀取前插入適當的取得柵欄,並在寫入後釋放柵欄,或 (更常見的做法) 遵守「環狀緩衝區行為」一節所述的 Producer/Consumer 模式。 必填。 |
4 |
turn_on_delay |
zx/Duration
|
驅動程式對硬體發出 (播放期間) 或接受 (擷取期間) 影格所需時間的最佳預估值,前提是管道已由 驅動程式預估,在 選用。 |
5 |
driver_transfer_bytes |
uint32
|
驅動程式庫在取用或產生環形緩衝區內容時使用的暫時緩衝區或 FIFO 大小 (以位元組為單位)。 「
必填。 新增:27
|
StreamProperties
定義於 fuchsia.hardware.audio/stream_config.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
unique_id |
UniqueId
|
專屬 ID。如果未納入,這個 StreamConfig 就沒有專屬 ID。
如要瞭解特定預先定義值和範圍的注意事項,請參閱 選用。 |
2 |
is_input |
bool
|
驅動程式類型為輸入 (true) 或輸出 (false) 必填。 |
3 |
can_mute |
bool
|
取得靜音能力。如果未包含,StreamConfig 就無法靜音。 選用。 |
4 |
can_agc |
bool
|
自動增益控制 (AGC) 能力。如果未加入,StreamConfig 就無法 AGC。 選用。 |
5 |
min_gain_db |
float32
|
以分貝為單位的最低增益。 必填。 |
6 |
max_gain_db |
float32
|
最大增益 (以分貝為單位)。 必填。 |
7 |
gain_step_db |
float32
|
以分貝為單位的增益步階,這個值不得為負數,但可為零,以傳達有效連續的值範圍。不得超過 必填。 |
8 |
plug_detect_capabilities |
PlugDetectCapabilities
|
插座偵測功能。 必填。 |
9 |
manufacturer |
string:256
|
製造商名稱的 UI 字串。如果未列出,表示製造商未指定。 如果包含此字串,則不得為空白。 選用。 |
10 |
product |
string:256
|
產品名稱的 UI 字串。如果未加入,產品名稱會顯示為未指定。 如果包含此字串,則不得為空白。 選用。 |
11 |
clock_domain |
ClockDomain
|
這個硬體運作的時脈網域 ID。如果兩個硬體裝置具有相同的時脈網域,時脈速率就會完全相同且完美同步。雖然這兩個時鐘的速率相同,但時鐘位置可能會彼此偏移任意 (但固定) 的量。clock_domain 通常來自系統範圍實體,例如平台匯流排或全域時脈樹狀結構。 有兩個特殊值:
如果網域不是 必填。 |
SupportedEncodings
定義於 fuchsia.hardware.audio/encoding.fidl
支援的編碼音訊格式。
下表定義一組有效的設定。所有欄位都是獨立的,這表示跨產品:任何列出的 channel_set 都支援任何列出的 frame_rate,以及任何列出的 encoded_type。
如果裝置支援多個編碼器,且這些編碼器的速率/管道限制不同 (例如 AAC 支援 48 kHz,但 SBC 只支援 44.1 kHz),裝置必須在 SupportedFormats2 向量中將這些編碼器回報為個別項目。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
decoded_channel_sets |
vector<ChannelSet>:64
|
可能的 這個向量中的每個項目都必須說明不重複的管道數。舉例來說,這個向量不能包含兩個不同的 必填。 |
2 |
decoded_frame_rates |
vector<uint32>:64
|
支援的可能影格速率向量。 如有提供,必須包含至少一個值。 值必須以遞增方式列出。 選用。 |
3 |
min_encoding_bitrate |
uint32
|
串流的最低編碼位元率 (位元/秒)。 如果兩者都存在,則不得超過「max_encoding_bitrate」。 選用。 |
4 |
max_encoding_bitrate |
uint32
|
串流的編碼位元率上限,以每秒位元數為單位。 如果同時提供這兩項值,則不得低於「min_encoding_bitrate」。 選用。 |
5 |
encoding_types |
vector<EncodingType>:64
|
支援上述設定的編碼器類型。至少要包含一個值。這個向量中的值不得重複。 必填。 |
SupportedFormats
定義於 fuchsia.hardware.audio/format.fidl
已淘汰:請改用 SupportedFormats2。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
pcm_supported_formats |
PcmSupportedFormats
|
VmoInfo 資源
定義於 fuchsia.hardware.audio/packet_stream.fidl
註冊 VMO 的 VMO 資訊。用於 RegisterVmos 和 AllocateVmos,將 VMO 控制代碼與專屬 ID 配對。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
VmoId
|
與 VMO 相對應的 ID。 必填。 |
2 |
vmo |
handle<vmo>
|
VMO 的控制代碼。 必填。 |
VmoTransfer resource
定義於 fuchsia.hardware.audio/packet_stream.fidl
這說明包含音訊資料的 VMO 區段。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
vmo_id |
VmoId
|
先前註冊或分配的 VMO ID。 必填。 |
2 |
vmo_offset |
uint64
|
開始讀取或寫入 VMO 的位移。 這是相對於該 VMO 的開始時間。 必填。 |
3 |
payload_size |
uint64
|
從/向這個 VMO 區域讀取/寫入的位元組數。 必填。 |
工會
Codec_GetDaiFormats_Result strict
定義於 fuchsia.hardware.audio/codec.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Codec_GetDaiFormats_Response
|
|
2 |
err |
zx/Status
|
Codec_SetDaiFormat_Result strict
定義於 fuchsia.hardware.audio/codec.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Codec_SetDaiFormat_Response
|
|
2 |
err |
zx/Status
|
Composite_CreatePacketStream_Result strict
定義於 fuchsia.hardware.audio/composite.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Composite_CreatePacketStream_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_CreateRingBuffer_Result strict
定義於 fuchsia.hardware.audio/composite.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Composite_CreateRingBuffer_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_GetDaiFormats_Result strict
定義於 fuchsia.hardware.audio/composite.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Composite_GetDaiFormats_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_GetPacketStreamFormats_Result strict
定義於 fuchsia.hardware.audio/composite.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Composite_GetPacketStreamFormats_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_GetProperties_Result strict
定義於 fuchsia.hardware.audio/composite.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Composite_GetProperties_Response
|
|
3 |
framework_err |
internal
|
Composite_GetRingBufferFormats_Result strict
定義於 fuchsia.hardware.audio/composite.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Composite_GetRingBufferFormats_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_Reset_Result strict
定義於 fuchsia.hardware.audio/composite.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Composite_Reset_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
Composite_SetDaiFormat_Result strict
定義於 fuchsia.hardware.audio/composite.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Composite_SetDaiFormat_Response
|
|
2 |
err |
DriverError
|
|
3 |
framework_err |
internal
|
DaiFrameFormat strict
定義於 fuchsia.hardware.audio/dai_format.fidl
標準或自訂影格格式。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
frame_format_standard |
DaiFrameFormatStandard
|
DAI 中所有樣本的格式類型,列於 |
2 |
frame_format_custom |
DaiFrameFormatCustom
|
DAI 中所有樣本的格式類型,在 |
Dai_GetDaiFormats_Result strict
定義於 fuchsia.hardware.audio/dai.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Dai_GetDaiFormats_Response
|
|
2 |
err |
zx/Status
|
Dai_GetRingBufferFormats_Result strict
定義於 fuchsia.hardware.audio/dai.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Dai_GetRingBufferFormats_Response
|
|
2 |
err |
zx/Status
|
DataTransfer 彈性 資源
定義於 fuchsia.hardware.audio/packet_stream.fidl
要轉移的資料。資料傳輸支援兩種方式,分別對應於 DataTransfer 聯集中的兩個成員:
-
vmo_transfer:驅動程式庫先前已知的 VMO 區域。這個 VMO 必須透過
PacketStreamControl.RegisterVmos(如果是用戶端分配) 或PacketStreamControl.AllocateVmos(如果是驅動程式庫分配) 建立。日後的要求會透過專屬vmo_id參照這個緩衝區。由於 VMO 會在要求之間重複使用,因此釘選/對應的一次性費用會攤銷。 -
資料:酬載直接在訊息中提供。這個模式適用於小型傳輸或控制資訊,不適用於高處理量串流。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
vmo_transfer |
VmoTransfer
|
資料會儲存在已註冊 VMO 的區域。 |
2 |
inline_data |
vector<uint8>:8192
|
內嵌資料緩衝區。
必須在 |
格式 2 彈性
定義於 fuchsia.hardware.audio/format.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
pcm_format |
PcmFormat
|
線性 PCM (未壓縮) 樣本的格式。 |
2 |
encoding |
Encoding
|
編碼音訊的格式。 |
PacketStreamControl_AllocateVmos_Result strict resource
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_AllocateVmos_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_DeallocateVmos_Result strict
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_DeallocateVmos_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_GetPacketStreamSink_Result strict resource
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_GetPacketStreamSink_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_GetProperties_Result strict
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_GetProperties_Response
|
|
3 |
framework_err |
internal
|
PacketStreamControl_RegisterVmos_Result strict
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_RegisterVmos_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_SetPacketStreamSink_Result strict
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_SetPacketStreamSink_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_Start_Result strict
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_Start_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_Stop_Result strict
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_Stop_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamControl_UnregisterVmos_Result strict
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamControl_UnregisterVmos_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamSink_FlushPackets_Result strict
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamSink_FlushPackets_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
PacketStreamSink_PutPacket_Result strict
定義於 fuchsia.hardware.audio/packet_stream.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
PacketStreamSink_PutPacket_Response
|
|
2 |
err |
zx/Status
|
|
3 |
framework_err |
internal
|
RingBuffer_GetVmo_Result strict resource
定義於 fuchsia.hardware.audio/ring_buffer.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
RingBuffer_GetVmo_Response
|
|
2 |
err |
GetVmoError
|
RingBuffer_SetActiveChannels_Result strict
定義於 fuchsia.hardware.audio/ring_buffer.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
RingBuffer_SetActiveChannels_Response
|
|
2 |
err |
zx/Status
|
RingBuffer_WatchDelayInfo_Result strict
定義於 fuchsia.hardware.audio/ring_buffer.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
RingBuffer_WatchDelayInfo_Response
|
|
3 |
framework_err |
internal
|
SupportedFormats2 彈性
定義於 fuchsia.hardware.audio/format.fidl
這部裝置支援的所有可能格式。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
pcm_supported_formats |
PcmSupportedFormats
|
支援的線性 PCM (未壓縮) 樣本格式,附帶屬性。 |
2 |
supported_encodings |
SupportedEncodings
|
支援非 LPCM 編碼音訊的格式 (例如 AAC、MP3)。 |
BITS
BufferType flexible
類型:uint64
定義於 fuchsia.hardware.audio/packet_stream.fidl
串流支援的緩衝區擁有權/轉移類型。驅動程式庫可支援多個值。
| 名稱 | 值 | 說明 |
|---|---|---|
CLIENT_OWNED |
1 | 用戶端會分配 VMO,並向驅動程式庫註冊。 |
DRIVER_OWNED |
2 | 驅動程式會分配 VMO,並將控制代碼傳遞給用戶端。 |
INLINE |
4 | 資料會內嵌在 FIDL 訊息中傳送。 這項功能可單獨使用,不必分配或註冊 VMO,也可以與其他緩衝區類型的封包混合使用。 |
常數
ALIASES
| 名稱 | 值 | 說明 |
|---|---|---|
| ClockDomain |
uint32 |
|
| ElementId |
uint64 |
|
| TopologyId |
uint64 |
|
| UniqueId |
array[UNIQUE_ID_SIZE] |
以 0x42、0x54 等 (或 ASCII 中的 |
| 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
|
版本 |