fuchsia.audio.device

新增時間:HEAD

PROTOCOLS

控管

fuchsia.audio.device/control.fidl 中定義的

Control 例項可用來變更音訊的設定或狀態 裝置。也會建立環形緩衝區,用來在 用戶端和裝置。每個 Control 都與初始化的音訊相關聯 裝置;每項裝置都會與 0 或一部裝置相關 Control

CodecStart

啟動轉碼器硬體。如果成功,此方法會在轉碼器啟動後傳回, start_time 表示硬體啟動的時間。請注意,轉碼器的 DaiFormat 必須在成功呼叫 SetDaiFormat 前設定,才能呼叫這個方法。

應僅針對轉碼器裝置呼叫。

要求

<空白>

回應

名稱類型
payload Control_CodecStart_Result

CodecStop

停止轉碼器硬體。如果成功,系統會在轉碼器停止後傳回此項目,並 stop_time 表示硬體停止的時間。請注意,轉碼器的 DaiFormat 必須在成功呼叫 SetDaiFormat 前設定,才能呼叫這個方法。

應僅針對轉碼器裝置呼叫。

要求

<空白>

回應

名稱類型
payload Control_CodecStop_Result

CreateRingBuffer

建立用來將音訊傳入/傳出這部裝置的環形緩衝區。如果裝置 複合,那麼指定的 RING_BUFFER ENDPOINT 就必須以 element_id 識別。

僅針對 Composite 和 StreamConfig 裝置呼叫。

要求

名稱類型
payload ControlCreateRingBufferRequest

回應

名稱類型
payload Control_CreateRingBuffer_Result

GetElements

傳回支援的處理元素的向量。 必須傳回一或多個處理元素,或 ZX_ERR_NOT_SUPPORTED。 如果 GetTopologies 傳回一或多個拓撲,則 GetElements 必須傳回一或多個拓撲

要求

<空白>

回應

名稱類型
payload fuchsia.hardware.audio.signalprocessing/Reader_GetElements_Result

GetTopologies

傳回支援的拓撲的向量。 必須傳回一或多個拓撲,或 ZX_ERR_NOT_SUPPORTED。 如果傳回多個拓撲,則用戶端可以選擇從 產生含有 SetTopology 的清單 如果只傳回一個拓撲,則拓撲定義只會提供相關資訊,因為 唯一的拓撲無法透過 SetTopology 變更。 如果 GetElements 傳回一或多個元素,則 GetTopologies 必須傳回一或多個元素。 建立更多拓撲

要求

<空白>

回應

名稱類型
payload fuchsia.hardware.audio.signalprocessing/Reader_GetTopologies_Result

重設

重設硬體,停止硬體、釋放任何環形緩衝區,以及清除任何 設定的 DaiFormats 或 RingBufferFormats。

硬體重設完成後,此方法就會傳回結果。 呼叫此方法後,裝置仍會受到控制,但所有環形緩衝區都必須 重新建立並重新啟動 針對使用 DAI_INTERCONNECTs 的裝置 (例如轉碼器和部分複合元件)、SetDaiFormat 和 您必須再次呼叫 CodecStart 才能恢復使用中的互連網路 作業模式 在適用情況下,也必須呼叫 SetTopologySetElementState

只需針對轉碼器和複合裝置呼叫。

要求

<空白>

回應

名稱類型
payload Control_Reset_Result

SetDaiFormat

設定連至這個 Codec 端點的數位互連網路線格式。 這個方法會傳回與設定格式相關的資訊,包括延遲值。 如果裝置為 Composite,就必須識別指定的 DAI_INTERCONNECT ENDPOINT 上傳者:element_id

只需針對轉碼器和複合裝置呼叫。

要求

名稱類型
payload ControlSetDaiFormatRequest

回應

名稱類型
payload Control_SetDaiFormat_Result

SetElementState

使用由 GetElements 傳回的專屬 ElementId 控制處理元素。 請注意,SettableElementStateElementState 的子集,因為部分欄位會傳回 來自 WatchElementState 的 (例如 latency) 只能由用戶端觀測 (未設定)。

如果 processing_element_id 與傳回的 ID 不符,則傳回 ZX_ERR_INVALID_ARGS 依據 GetElementsSettableTypeSpecificElementState 類型未 符合 ElementType 的 此為 GetElements 的值。 如果 state 值無效 (即ZX_ERR_INVALID_ARGS 的值違反此通訊協定中指定的規則,例如:嘗試變更 EQUALIZER在進行處理時,處理元素的 EqualizerBandState frequency 元素並未在 supported_controls 中宣傳 CAN_CONTROL_FREQUENCY

您可在非 SignalProcessing 通訊協定之前或之後呼叫 SetElementState 呼叫。如果在非 SignalProcessing 通訊協定呼叫之後呼叫,則 SetElementState 不一定需要重新協商驅動程式庫狀態, 與組成 SignalProcessing 的通訊協定呼叫相符,例如:Dai。 舉例來說,SetElementState 會變更 AGL 處理元素的參數 可能不需要重新協商 Dai 狀態,因為變更增益參數通常會變更 不會變更支援的音訊格式組合。 相反地,如果 SetElementState 變更 CONNECTION_POINT 的參數 元素,變更可能需要重新協商,因為這可能會撤銷 前一個 GetDaiFormats Dai 通訊協定呼叫中傳回的支援格式。

驅動程式庫的工作是判斷何時需要重新協商。如果重新協商是 必要,則 SetElementState 必須傳回 ZX_ERR_BAD_STATE,而用戶端必須 並關閉通訊協定管道,這樣系統就會開始進行通訊協定協商。 接著,用戶端必須發出傳回的 SetElementState 呼叫 ZX_ERR_BAD_STATE,然後才呼叫任何非 SignalProcessing 通訊協定。

要求

名稱類型
processing_element_id fuchsia.hardware.audio.signalprocessing/ElementId
state fuchsia.hardware.audio.signalprocessing/SettableElementState

回應

名稱類型
payload fuchsia.hardware.audio.signalprocessing/SignalProcessing_SetElementState_Result

SetGain

變更裝置的整體增益狀態。

只應針對 StreamConfig 裝置呼叫。

要求

名稱類型
payload ControlSetGainRequest

回應

名稱類型
payload Control_SetGain_Result

SetTopology

設定要在 GetTopologies 傳回的向量使用 ID 的情況下使用拓撲。 目前的拓撲由 WatchTopology 回應提供。如要變更拓撲 已啟用,則用戶端使用 SetTopology。 如果指定的 topology_id 不在 GetTopologies 傳回的 topologies 中, 這場通話會傳回 ZX_ERR_INVALID_ARGS。 如果 GetTopologies 只傳回一個 Topology,則 SetTopology 為選用性質,沒有任何作用。

在非 SignalProcessing 通訊協定呼叫之前或之後,您可以呼叫 SetTopology。 如果在非 SignalProcessing 通訊協定呼叫之後呼叫,SetTopology 可能會傳回 ZX_ERR_BAD_STATE 表示必須先重新協商,才能繼續操作 驅動程式庫狀態如需進一步討論,請參閱 SetElementState

要求

名稱類型
topology_id fuchsia.hardware.audio.signalprocessing/TopologyId

回應

名稱類型
payload fuchsia.hardware.audio.signalprocessing/SignalProcessing_SetTopology_Result

WatchElementState

透過懸掛的取得取得處理元素狀態。 根據指定的 processing_element_id,驅動程式庫會回覆第一個 WatchElementState 呼叫驅動程式不會回應後續的用戶端 WatchElementState 對指定 processing_element_id 的呼叫,直到 Element 資料表的任何欄位變更為止 來自「processing_element_id」的最新報導

若有 ZX_ERR_BAD_STATE 錯誤,驅動程式就會關閉通訊協定管道 如果這個用戶端已有待處理的 WatchElementState,系統就會再次呼叫方法 和 Process_element_id 的處理程序。

要求

名稱類型
processing_element_id fuchsia.hardware.audio.signalprocessing/ElementId

回應

名稱類型
state fuchsia.hardware.audio.signalprocessing/ElementState

WatchTopology

透過迅速上手的方式取得目前的拓撲。 驅動程式會立即回覆每個用戶端傳送的第一個 WatchTopology。 除非WatchTopology 信號處理拓撲變更,是因 SetTopology 呼叫而發生。 若有 ZX_ERR_BAD_STATE 錯誤,驅動程式就會關閉通訊協定管道 當此用戶端已有待處理的 WatchTopology 時,則會再次呼叫方法。

新增時間:HEAD

要求

<空白>

回應

名稱類型
topology_id fuchsia.hardware.audio.signalprocessing/TopologyId

ControlCreator

fuchsia.audio.device/control.fidl 中定義的

ControlCreator 介面會建立 Control 執行個體。每個 Control 繫結 單一裝置一部裝置一次只能與一個 Control 繫結。

建立

為指定裝置建立 Control

要求

名稱類型
payload ControlCreatorCreateRequest

回應

名稱類型
payload ControlCreator_Create_Result

觀眾

定義於 fuchsia.audio.device/registry.fidl

Observer 執行個體可用於學習 讀取音訊裝置,並即時瞭解裝置狀態的變化。每項 Observer 與初始化的音訊裝置相關聯。音訊裝置 可能被多個 Observer 例項觀察到。

GetElements

傳回支援的處理元素的向量。 必須傳回一或多個處理元素,或 ZX_ERR_NOT_SUPPORTED。 如果 GetTopologies 傳回一或多個拓撲,則 GetElements 必須傳回一或多個拓撲

要求

<空白>

回應

名稱類型
payload fuchsia.hardware.audio.signalprocessing/Reader_GetElements_Result

GetReferenceClock

擷取裝置的參考時鐘。

這個時鐘位於裝置 Info 資料表中指定的網域。

僅針對 Composite 或 StreamConfig 裝置呼叫。

要求

<空白>

回應

名稱類型
payload Observer_GetReferenceClock_Result

GetTopologies

傳回支援的拓撲的向量。 必須傳回一或多個拓撲,或 ZX_ERR_NOT_SUPPORTED。 如果傳回多個拓撲,則用戶端可以選擇從 產生含有 SetTopology 的清單 如果只傳回一個拓撲,則拓撲定義只會提供相關資訊,因為 唯一的拓撲無法透過 SetTopology 變更。 如果 GetElements 傳回一或多個元素,則 GetTopologies 必須傳回一或多個元素。 建立更多拓撲

要求

<空白>

回應

名稱類型
payload fuchsia.hardware.audio.signalprocessing/Reader_GetTopologies_Result

WatchElementState

透過懸掛的取得取得處理元素狀態。 根據指定的 processing_element_id,驅動程式庫會回覆第一個 WatchElementState 呼叫驅動程式不會回應後續的用戶端 WatchElementState 對指定 processing_element_id 的呼叫,直到 Element 資料表的任何欄位變更為止 來自「processing_element_id」的最新報導

若有 ZX_ERR_BAD_STATE 錯誤,驅動程式就會關閉通訊協定管道 如果這個用戶端已有待處理的 WatchElementState,系統就會再次呼叫方法 和 Process_element_id 的處理程序。

要求

名稱類型
processing_element_id fuchsia.hardware.audio.signalprocessing/ElementId

回應

名稱類型
state fuchsia.hardware.audio.signalprocessing/ElementState

WatchGainState

要求在裝置升級狀態有所變更時接收通知。

注意:這只會對 裝置的 Info 表格 (特別是 GainCapabilities)。使用 WatchElementState 用於增益處理,以 SignalProcessing 的形式公開 (GetTopologiesGetElements)。

只應針對 StreamConfig 裝置呼叫。

要求

<空白>

回應

名稱類型
payload Observer_WatchGainState_Result

WatchPlugState

要求在裝置的插座狀態變更時收到通知。時間 首次呼叫後,此函式會立即傳回

只有 Codec 或 StreamConfig 裝置才需要呼叫。

要求

<空白>

回應

名稱類型
payload Observer_WatchPlugState_Result

WatchTopology

透過迅速上手的方式取得目前的拓撲。 驅動程式會立即回覆每個用戶端傳送的第一個 WatchTopology。 除非WatchTopology 信號處理拓撲變更,是因 SetTopology 呼叫而發生。 若有 ZX_ERR_BAD_STATE 錯誤,驅動程式就會關閉通訊協定管道 當此用戶端已有待處理的 WatchTopology 時,則會再次呼叫方法。

新增時間:HEAD

要求

<空白>

回應

名稱類型
topology_id fuchsia.hardware.audio.signalprocessing/TopologyId

供應商

fuchsia.audio.device/provider.fidl 中定義的

使用 Provider 介面手動新增未使用 devf 的裝置 以注意力機制為基礎(偵測到使用開發人員版本的裝置會自動新增偵測結果)。

AddDevice

要求

名稱類型
payload ProviderAddDeviceRequest

回應

名稱類型
payload Provider_AddDevice_Result

註冊類型

定義於 fuchsia.audio.device/registry.fidl

Registry 執行個體會在裝置送達/出發時通知用戶端,以及 建立觀察器 (請參閱 Observer),以通知更詳細的狀態變更。

CreateObserver

要求指定裝置的 Observer

要求

名稱類型
payload RegistryCreateObserverRequest

回應

名稱類型
payload Registry_CreateObserver_Result

WatchDeviceRemoved

註冊以便在裝置移除 (使用中、已新增) 時接收通知。 因為這個方法只會針對移除一次的通知 萬一出現其他移除要求,請立即重新報警。 系統會持續執行呼叫,直到將以下裝置移除: 包含在先前的 WatchDevicesAdded 回應中。

要求

<空白>

回應

名稱類型
payload Registry_WatchDeviceRemoved_Result

WatchDevicesAdded

註冊即可新增一或多個裝置通知。 devices 向量一律包含至少一個 Info 項目。

要求

<空白>

回應

名稱類型
payload Registry_WatchDevicesAdded_Result

RingBuffer

fuchsia.audio.device/control.fidl 中定義的

RingBuffer 執行個體可控制相關聯音訊串流的資料流程。

SetActiveChannels

要求關閉/啟動特定個別頻道 裝置支援這項功能。這項功能的用途是節省閒置電力,

聲道可由位元遮罩指定;最低有效位元對應 頻道 0。每個未設定的位元代表 已停用。SetActiveChannels 不會變更環形緩衝區的方式 尤其是根據位置回應 Start/Stop

裝置不必遵循 SetActiveChannels。舉例來說 不必將輸入串流的閒置頻道歸零。 針對輸出串流的環形緩衝區,將資料寫入閒置頻道,可能會發生 仍會播放。

如未呼叫,則所有管道皆預設為有效。

要求

名稱類型
payload RingBufferSetActiveChannelsRequest

回應

名稱類型
payload RingBuffer_SetActiveChannels_Result

開始

從環形緩衝區的第一個影格開始啟動環形緩衝區。

要求

名稱類型
payload RingBufferStartRequest

回應

名稱類型
payload RingBuffer_Start_Result

停止

停止環形緩衝區。

要求

名稱類型
payload RingBufferStopRequest

回應

名稱類型
payload RingBuffer_Stop_Result

WatchDelayInfo

透過懸掛式取得要求延遲資訊。RingBuffer 會回應 並立即呼叫第一個 WatchDelayInfo 呼叫。後續呼叫將會 只有在延遲時間資訊與之前的值不同時 通訊價值

要求

<空白>

回應

名稱類型
payload RingBuffer_WatchDelayInfo_Result

ENUMS

ControlCodecStartError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

Control/CodecStart 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,因此無法再控制。

2

這個裝置類型不支援所呼叫的方法。

3

先前的 CodecStart 通話尚未完成。

4

撥打這通電話前未呼叫 SetDaiFormat

5

裝置已在進行此通話時啟動。

6

驅動程式傳回其他錯誤。系統可能會重試這場通話。

ControlCodecStopError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

Control/CodecStop 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,因此無法再控制。

2

這個裝置類型不支援所呼叫的方法。

3

先前的 CodecStop 通話尚未完成。

4

撥打這通電話前未呼叫 SetDaiFormat

5

此裝置已在進行此通話時停止。

6

驅動程式傳回其他錯誤。系統可能會重試這場通話。

ControlCreateRingBufferError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

Control/CreateRingBuffer 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,因此無法再控制。

2

這個裝置類型不支援所呼叫的方法。

3

先前的 CreateRingBuffer 通話尚未完成。

4

缺少必要的 element_id,或未參照 RING_BUFFER 元素。

5

缺少必要的 options

6

缺少必要的 options.format

7

缺少必要的 options.ring_buffer_min_bytes

8

缺少必要的 ring_buffer_server

9

這個Control已有有效的 RingBuffer 執行個體。

10

裝置不支援指定格式。

11

裝置無法使用指定的選項建立環形緩衝區。

12

驅動程式傳回其他錯誤。系統可能會重試這場通話。

ControlCreatorError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

ControlCreator/Create 傳回的錯誤。

名稱說明
1

缺少必要的 token_id

2

缺少必要的 control_server

3

找不到配備 token_id 的裝置。這個權杖可能是從未存在 或token_id的裝置已遭移除

4

顯示「token_id」的裝置發生錯誤,無法控制。

5

與「token_id」相關聯的「Control」已存在。這部裝置是 而是要由使用者主動控管

ControlResetError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

Control/Reset 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,因此無法再控制。

2

這個裝置類型不支援所呼叫的方法。

3

先前的 Reset 通話尚未完成。

ControlSetDaiFormatError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

Control/SetDaiFormat 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,因此無法再控制。

2

這個裝置類型不支援所呼叫的方法。

3

先前的 SetDaiFormat 通話尚未完成。

4

缺少必要的 element_id,或未參照 DAI_INTERCONNECT 元素。

5

必要的「dai_format」遺失或無效。

6

裝置不支援指定的 dai_format。

7

驅動程式傳回其他錯誤。系統可能會重試這場通話。

ControlSetGainError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

Control/SetGain 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,因此無法再控制。

2

這個裝置類型不支援所呼叫的方法。

3

缺少必要的 target_state

4

缺少必要的 target_state.gain_db

5

指定的增益值超出裝置的允許範圍。

6

裝置要求「MUTE」,但裝置沒有「MUTE」的控制選項。

7

要求啟用 AGC,但裝置沒有 AGC。

DeviceType 彈性

類型:uint32

fuchsia.audio.device/device.fidl 中定義的

驅動程式庫使用的通訊協定,以及其定向性 (如 StreamConfig)。

名稱說明
1

裝置使用 fuchsia.hardware.audio/Codec 通訊協定。

2

裝置使用 fuchsia.hardware.audio/Composite 通訊協定。

3

裝置使用 fuchsia.hardware.audio/Dai 通訊協定。

4

裝置使用 fuchsia.hardware.audio/StreamConfig,且是音訊串流的來源。

5

裝置會使用 fuchsia.hardware.audio/StreamConfig,且是音訊串流的目的地。

ObserverGetReferenceClockError 彈性

類型:uint32

定義於 fuchsia.audio.device/registry.fidl

Observer/GetReferenceClock 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,無法再觀察。

2

這個裝置類型不支援所呼叫的方法。

3

無法傳回裝置的參考時鐘。

ObserverWatchGainStateError 彈性

類型:uint32

定義於 fuchsia.audio.device/registry.fidl

Observer/WatchGainState 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,無法再觀察。

2

這個裝置類型不支援所呼叫的方法。

3

先前的 WatchGainState 通話尚未完成。

ObserverWatchPlugStateError 彈性

類型:uint32

定義於 fuchsia.audio.device/registry.fidl

Observer/WatchPlugState 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,無法再觀察。

2

這個裝置類型不支援所呼叫的方法。

3

先前的 WatchPlugState 通話尚未完成。

PlugDetectabilities 彈性

類型:uint32

定義於 fuchsia.audio.device/registry.fidl

裝置的熱插頭功能。

名稱說明
0

裝置一律會接上電源。插頭狀態無法變更。

1

裝置可拔除/插頭,並且能以非同步方式通知變更。

PlugState 彈性

類型:uint32

定義於 fuchsia.audio.device/registry.fidl

裝置目前的插電狀態。

名稱說明
1

已連線,且可用於音訊串流。

2

未連線;不支援音訊串流

ProviderAddDeviceError 彈性

類型:uint32

fuchsia.audio.device/provider.fidl 中定義的

Provider 通訊協定傳回的錯誤。

名稱說明
1

必要的 device_name 格式錯誤、空白或遺漏。

2

缺少必要的 device_type

3

必要的「driver_client」無效或遺失。

4

driver_client 中的通訊協定與 device_type 不相容,或者尚未受到支援。

RegistryCreateObserverError 彈性

類型:uint32

定義於 fuchsia.audio.device/registry.fidl

Registry/CreateObserver 傳回的錯誤。

名稱說明
1

缺少必要的 token_id

2

缺少必要的 observer_server

3

找不到配備 token_id 的裝置。這個權杖可能是從未存在 或token_id的裝置已遭移除

4

token_id」裝置發生錯誤,無法再觀測。

RegistryWatchDeviceRemovedError 彈性

類型:uint32

定義於 fuchsia.audio.device/registry.fidl

Registry/WatchDeviceRemoved 傳回的錯誤。

名稱說明
1

先前的 WatchDeviceRemoved 通話尚未完成。

RegistryWatchDeviceAddedError 彈性

類型:uint32

定義於 fuchsia.audio.device/registry.fidl

Registry/WatchDevicesAdded 傳回的錯誤。

名稱說明
1

先前的 WatchDevicesAdded 通話尚未完成。

RingBufferSetActiveChannelsError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

RingBuffer/SetActiveChannels 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,因此無法再控制。

2

先前的 SetActiveChannels 通話尚未完成。

3

這部裝置不支援SetActiveChannels。個別管道 或一律無法停用 (所有管道都會處於有效狀態)。

4

缺少必要的 channel_bitmask

5

傳遞的 channel_bitmask 會指定不在 目前為這個環形緩衝區設定的管道範圍。

RingBufferStartError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

RingBuffer/Start 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,因此無法再控制。

2

先前的 Start 通話尚未完成。

3

已在已啟動的環形緩衝區呼叫 Start

RingBufferStopError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

RingBuffer/Stop 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,因此無法再控制。

2

先前的 Stop 通話尚未完成。

3

已在已停止的環形緩衝區呼叫 Stop

RingBufferWatchDelayInfoError 彈性

類型:uint32

fuchsia.audio.device/control.fidl 中定義的

RingBuffer/WatchDelayInfo 傳回的錯誤。

名稱說明
1

這部裝置發生錯誤,無法再觀察。

2

先前的 WatchDelayInfo 通話尚未完成。

資料表

ChannelAttributes

fuchsia.audio.device/device.fidl 中定義的

單一管道的屬性 (例如頻率範圍)。

Ordinal欄位類型說明
min_frequency uint32

此管道保證發出/擷取的頻率下限 (以 Hz 為單位)。 如未指定,這個管道會擴大至裝置範圍底部。

選用。

max_frequency uint32

這個管道保證發出/擷取的頻率上限 (以 Hz 為單位)。 如未顯示,這個管道就會擴展到裝置範圍頂端。

選用。

ChannelSet

fuchsia.audio.device/device.fidl 中定義的

裝置的一種可能管道設定。

Ordinal欄位類型說明
attributes vector<ChannelAttributes>[64]

這個向量中的每個項目都會說明屬性 (例如頻率範圍) 該管道的連結這個向量的長度會定義 所支援的管道。至少須包含一個項目。

必填。

ControlCreateRingBufferRequest 資源

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
element_id ElementId

RING_BUFFER 類型的 ENDPOINT 元素 ID。

複合的必要欄位會忽略 StreamConfig。

options RingBufferOptions

關於建立實際環形緩衝區的其他規定。

必填。

ring_buffer_server server_end<RingBuffer>

要建立的 RingBuffer 的 server_end。

必填。

ControlCreatorCreateRequest 資源

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
token_id TokenId

要控制裝置的權杖 ID。

必填。

control_server server_end<Control>

要建立的 Control 的 server_end。

必填。

ControlCreator_Create_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明

ControlSetDaiFormatRequest

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
element_id ElementId

DAI_INTERCONNECT 類型的 ENDPOINT 元素 ID。

複合的必要欄位解碼器會遭到忽略。

dai_format fuchsia.hardware.audio/DaiFormat

ControlSetGainRequest

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
target_state GainState

要設定的取得狀態。

必填。

Control_CodecStart_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
start_time zx/Time

Control_CodecStop_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
stop_time zx/Time

Control_CreateRingBuffer_Response 資源

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
properties RingBufferProperties

環形緩衝區和進行中音訊串流的相關屬性 (如已建立)。

ring_buffer fuchsia.audio/RingBuffer

代表音訊串流和響鈴記憶體的物件。 注意:環形緩衝區 VMO 記憶體範圍必須在快取無效之前 每次寫入後快取清除

Control_Reset_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明

Control_SetDaiFormat_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
state fuchsia.hardware.audio/CodecFormatInfo

Control_SetGain_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明

DelayInfo

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
internal_delay zx/Duration

駕駛人對於本身的硬體延遲最準確的預估時間 選擇的格式時間長度不得為負數。

必填。

external_delay zx/Duration

超出互連網路的管道延遲時間 (其次為 DMA「讀取」輸出裝置的位置,或在 DMA「寫入」之前 。如有的話,這個時間長度不得為負數。

選用。

ElementDaiFormatSet

fuchsia.audio.device/device.fidl 中定義的

這個表格代表這個端點可支援的 Dai 格式。

Ordinal欄位類型說明
element_id ElementId

所說明元素的 ID。必須與 ENDPOINT (DAI_INTERCONNECT) 相符 項目。Info如果說明的是 轉碼器或 Dai 裝置支援的 DAI 格式,則此值應為 DEFAULT_DAI_INTERCONNECT_ELEMENT_ID (1)。

必填。

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

此元素支援的 dai_format_set 項目。

此為必要項目。至少須包含一個項目。

ElementRingBufferFormatSet

fuchsia.audio.device/device.fidl 中定義的

這個表格代表這個端點可能支援的 RingBuffer 格式。

Ordinal欄位類型說明
element_id ElementId

所說明元素的 ID。這必須符合 ENDPOINT (RING_BUFFER) 項目 。Info如果說明的是 Ai 或 StreamConfig 裝置支援的 RingBuffer 格式,這個值應該是 DEFAULT_RING_BUFFER_ELEMENT_ID (0)。

必填。

format_sets vector<PcmFormatSet>[64]

這個元素支援的 ring_buffer_format_set 項目。

此為必要項目。至少須包含一個項目。

GainCapabilities

定義於 fuchsia.audio.device/registry.fidl

裝置的整體提升能力。

Ordinal欄位類型說明
min_gain_db float32

裝置的最小增益值 (分貝)。

必填。

max_gain_db float32

裝置的最大增益值 (分貝)。

必填。

gain_step_db float32

每個增益步驟的精確度,以分貝為單位。

必填。

can_mute bool

如果為 true,裝置會包含專屬的 MUTE 控制項。如果為 false 或 此時就不會出現

選用。

can_agc bool

自動增益控制。如果沒有,表示這個硬體不支援 AGC。

選用。

GainState

fuchsia.audio.device/device.fidl 中定義的

裝置目前的增益狀態。

Ordinal欄位類型說明
gain_db float32

所有裝置的增益,以分貝為單位。

必填。

muted bool

所有頻道靜音狀態。如未指明,系統會取消靜音所有頻道。

選用。

agc_enabled bool

自動增益控制。如果沒有,則會停用。

選用。

資訊

定義於 fuchsia.audio.device/registry.fidl

當偵測到裝置 (或透過 Provider/AddDevice 新增) 時, 的特性和功能。完成這個列舉程序後 作業完成之後,應用程式就會向正在收看裝置的用戶端宣布 透過 Registry/WatchDevicesAdded

系統會為新增的每部音訊裝置傳回 Info 資料表。

Ordinal欄位類型說明
token_id TokenId

保證不會重複用於這個啟動工作階段的裝置 ID,但 可能會因為重新啟動而改變。

適用於所有裝置類型。

device_type DeviceType

驅動程式庫使用的通訊協定,以及其定向性 (如 StreamConfig)。

適用於所有裝置類型。

device_name string[256]

裝置從 devf 或 Provider/AddDevice 呼叫端取得的高階名稱。 此字串不可空白。

適用於所有裝置類型。

manufacturer string[256]

裝置製造商的名稱。 如有,則此字串不能空白。

對所有裝置類型而言,這是選用項目。

product string[256]

裝置的高階產品名稱。 如有,則此字串不能空白。

對所有裝置類型而言,這是選用項目。

unique_instance_id uint8[16]

由驅動程式庫提供的 16 個字元 ID,可供使用 (如果有的話) 以區分同一部裝置的多個執行個體這個值不得 變更不會因系統重新啟動而變更

對所有裝置類型而言,這是選用項目。

is_input bool

裝置是音訊的來源 (is_input TRUE) 或目的地 (is_input FALSE)。

StreamConfig 的必要設定;用於轉碼器;不為複合指定

ring_buffer_format_sets vector<ElementRingBufferFormatSet>[64]

裝置支援的所有格式組合,適用於各種裝置組合 配置設定 如果裝置公開了一或多個 RingBuffer ENDPOINT 元素,就必須使用這個欄位 且其向量必須包含每個相關的 ENDPOINT 元素一個項目。 如果裝置公開沒有 RingBuffer ENDPOINT 元素,就必須省略這個欄位 (完全省略) 而非填入空白向量)。 存在此屬性時,必須至少包含一個元素。

StreamConfig 的必要設定;複合為選用項目;複合材料則找不到。

dai_format_sets vector<ElementDaiFormatSet>[64]

裝置支援的所有 DAI 格式的聯集 (適用於各種組合) 調整裝置設定 如果裝置公開一或多個 Dai ENDPOINT 元素,就必須顯示這個欄位及其 向量必須包含每個相關的 ENDPOINT 元素一個項目。 如果裝置公開無 Dai ENDPOINT 元素,就必須省略這個欄位 ( 而不是填入空白向量)。 存在此屬性時,必須至少包含一個元素。

轉碼器的必要項目;複合為選用項目;複合材料如果是 StreamConfig,則不存在。

gain_caps GainCapabilities

取得/靜音功能。

StreamConfig 的必要設定;若是轉碼器和複合。

plug_detect_caps PlugDetectCapabilities

裝置的熱插頭功能。

對 Codec 和 StreamConfig 而言為必要;不為複合指定

clock_domain ClockDomain

裝置時鐘硬體的時鐘網域 ID 運作。位於同一時鐘網域的裝置保持完美無缺 同步處理。它們可能相對於其他時鐘網域偏移,但 網域中的所有時鐘功能會「同時」。雖然 他們的時鐘頻率相同,它們的位置可能會偏移一個 任意、固定金額

時鐘網域有兩個特殊值:

  • CLOCK_DOMAIN_MONOTONIC 表示硬體是由系統驅動 Motonic 時鐘,而且永遠都會與該時間軸同步。

  • CLOCK_DOMAIN_EXTERNAL 表示硬體並未與任何 其他已知時鐘 (包括 CLOCK_DOMAIN_EXTERNAL 中的任何其他時鐘)。

複合和 StreamConfig 的必要項目;則找不到。

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

支援的信號處理元素的向量。 存在此屬性時,必須至少包含一個元素。

複合的必要欄位是 Codec 和 StreamConfig 的選用欄位。

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

支援的信號處理拓撲向量。 存在此屬性時,必須至少包含一個元素。

複合的必要欄位是 Codec 和 StreamConfig 的選用欄位。

Observer_GetReferenceClock_Response 資源

定義於 fuchsia.audio.device/registry.fidl

Ordinal欄位類型說明
reference_clock handle<clock>

裝置的參考時鐘。

Observer_WatchGainState_Response

定義於 fuchsia.audio.device/registry.fidl

Ordinal欄位類型說明
state GainState

裝置的最新增益狀態。

Observer_WatchPlugState_Response

定義於 fuchsia.audio.device/registry.fidl

Ordinal欄位類型說明
state PlugState

裝置目前的插座狀態。

plug_time zx/Time

插頭狀態最近一次變更的時間 (以 CLOCK_MONOTONIC)。

PcmFormatSet

fuchsia.audio.device/device.fidl 中定義的

這份表格包含代表三種裝置尺寸的向量 像是管道化、範例格式、畫面更新率裝置 支援這些向量中的項目組合。

Ordinal欄位類型說明
channel_sets vector<ChannelSet>[64]

裝置支援的管道組合數量。必須包含 至少一個 ChannelSet 項目。

必填。

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

裝置支援的樣本格式數量。這必須 至少包含一個 AudioSampleFormat 項目。

必填。

frame_rates vector<uint32>[64]

裝置支援的畫面更新率數量。其中必須包含 至少要輸入一個畫面更新率

必填。

ProviderAddDeviceRequest 資源

fuchsia.audio.device/provider.fidl 中定義的

Ordinal欄位類型說明
device_name string[256]

裝置的概略名稱。不得為空白字串。

必填。

device_type DeviceType

指出裝置使用的通訊協定,以及 (如果是 StreamConfig) 屬於輸入 (音訊來源) 或輸出 (音訊的目的地)。

必填。

driver_client DriverClient

通訊協定管道的 client_end (Codec、Composite、Dai 或 StreamConfig) 這項服務將用來設定/觀察裝置。 目前 AddDevice 只接受 codec_clientcomposite_clientstream_config_client這裡。

必填。

淘汰

系統不再支援 Codec、Dai 和 StreamConfig,請改用 音訊複合 ,請參閱 音訊驅動程式架構

已淘汰:HEAD

Provider_AddDevice_Response

fuchsia.audio.device/provider.fidl 中定義的

Ordinal欄位類型說明

RegistryCreateObserverRequest 資源

定義於 fuchsia.audio.device/registry.fidl

Ordinal欄位類型說明
token_id TokenId

待觀察裝置的權杖。

必填。

observer_server server_end<Observer>

即將建立的 Observer 伺服器端。

必填。

Registry_CreateObserver_Response

定義於 fuchsia.audio.device/registry.fidl

Ordinal欄位類型說明

Registry_WatchDeviceRemoved_Response

定義於 fuchsia.audio.device/registry.fidl

Ordinal欄位類型說明
token_id TokenId

最近移除的裝置權杖。

Registry_WatchDevicesAdded_Response

定義於 fuchsia.audio.device/registry.fidl

Ordinal欄位類型說明
devices vector<Info>[256]

自上次呼叫 WatchDevicesAdded後新增的裝置。呼叫時 此方法會先傳回所有可用的音訊裝置 (如果沒有音訊裝置,則連為空向量)。隨後 通話都會平穩,直到有更多裝置可用為止。

RingBufferOptions

fuchsia.audio.device/control.fidl 中定義的

建立環形緩衝區時,呼叫端指定的參數。

Ordinal欄位類型說明
format fuchsia.audio/Format

環形的格式 (範例格式、通道、畫面更新率) 緩衝區。

必填。

ring_buffer_min_bytes uint32

環形緩衝區所需的最小位元組數。 緩衝區可能較大,視編碼、驅動程式庫、裝置或 OS 而定。

必填。

RingBufferProperties

fuchsia.audio.device/control.fidl 中定義的

環形緩衝區或相關音訊串流的相關資訊。

Ordinal欄位類型說明
valid_bits_per_sample uint8

有效的位元數 (開頭為最重要的位元數)。 個別樣本中的各個項目這可能會比實際 樣本大小 (適用於由 18 位元 ADC 提供的輸入環形緩衝區) 例如並忽略任何其他位元的精確度。

必填。

turn_on_delay zx/Duration

直到停用的頻道完全恢復運作為止的最長延遲時間 呼叫 SetActiveChannels 後。這是在最糟糕的情況下 重新啟用所有頻道。值不得為負數。

必填。

RingBufferSetActiveChannelsRequest

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
channel_bitmask uint64

要啟用的頻道 (所有其他頻道都應該停用)。否 位元應設定在環形中指定的 channel_count 之上 緩衝區格式 (例如適用於四管道串流,channel_bitmask 必須介於 [0x00, 0x0F] 的範圍)。

必填。

RingBufferStartRequest

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明

RingBufferStopRequest

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明

RingBuffer_SetActiveChannels_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
set_time zx/Time

硬體設定時的 CLOCK_MONOTONIC 時間。注意: 這不包括 turn_on_delay 對串流的影響。

必填。

RingBuffer_Start_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
start_time zx/Time

開始串流時的 CLOCK_MONOTONIC 時間。

必填。

RingBuffer_Stop_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明

RingBuffer_WatchDelayInfo_Response

fuchsia.audio.device/control.fidl 中定義的

Ordinal欄位類型說明
delay_info DelayInfo

必填。

聯合國

ControlCreator_Create_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response ControlCreator_Create_Response
err ControlCreatorError

Control_CodecStart_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response Control_CodecStart_Response
err ControlCodecStartError

Control_CodecStop_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response Control_CodecStop_Response
err ControlCodecStopError

Control_CreateRingBuffer_Result 嚴格 資源

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response Control_CreateRingBuffer_Response
err ControlCreateRingBufferError

Control_Reset_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response Control_Reset_Response
err ControlResetError

Control_SetDaiFormat_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response Control_SetDaiFormat_Response
err ControlSetDaiFormatError

Control_SetGain_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response Control_SetGain_Response
err ControlSetGainError

DriverClient 彈性 資源

fuchsia.audio.device/device.fidl 中定義的

用於設定及觀察裝置的通訊協定管道。

淘汰

系統不再支援 Codec、Dai 和 StreamConfig,請改用 音訊複合,請參閱 音訊驅動程式架構

已淘汰:HEAD
OrdinalVariant類型說明
codec fuchsia.hardware.audio/Codec

會填入使用 fuchsia_hardware_audio.Codec 介面的驅動程式。

composite fuchsia.hardware.audio/Composite

會填入使用 fuchsia_hardware_audio.Composite 介面的驅動程式。

dai fuchsia.hardware.audio/Dai

會填入使用 fuchsia_hardware_audio.Dai 介面的驅動程式。

stream_config fuchsia.hardware.audio/StreamConfig

會填入使用 fuchsia_hardware_audio.StreamConfig 介面的驅動程式。

Observer_GetReferenceClock_Result 嚴格 資源

定義於 fuchsia.audio.device/registry.fidl

OrdinalVariant類型說明
response Observer_GetReferenceClock_Response
err ObserverGetReferenceClockError

Observer_WatchGainState_Result 嚴格

定義於 fuchsia.audio.device/registry.fidl

OrdinalVariant類型說明
response Observer_WatchGainState_Response
err ObserverWatchGainStateError

Observer_WatchPlugState_Result 嚴格

定義於 fuchsia.audio.device/registry.fidl

OrdinalVariant類型說明
response Observer_WatchPlugState_Response
err ObserverWatchPlugStateError

Provider_AddDevice_Result 嚴格

fuchsia.audio.device/provider.fidl 中定義的

OrdinalVariant類型說明
response Provider_AddDevice_Response
err ProviderAddDeviceError

Registry_CreateObserver_Result 嚴格

定義於 fuchsia.audio.device/registry.fidl

OrdinalVariant類型說明
response Registry_CreateObserver_Response
err RegistryCreateObserverError

Registry_WatchDeviceRemoved_Result 嚴格

定義於 fuchsia.audio.device/registry.fidl

OrdinalVariant類型說明
response Registry_WatchDeviceRemoved_Response
err RegistryWatchDeviceRemovedError

Registry_WatchDevicesAdded_Result 嚴格

定義於 fuchsia.audio.device/registry.fidl

OrdinalVariant類型說明
response Registry_WatchDevicesAdded_Response
err RegistryWatchDevicesAddedError

RingBuffer_SetActiveChannels_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response RingBuffer_SetActiveChannels_Response
err RingBufferSetActiveChannelsError

RingBuffer_Start_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response RingBuffer_Start_Response
err RingBufferStartError

RingBuffer_Stop_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response RingBuffer_Stop_Response
err RingBufferStopError

RingBuffer_WatchDelayInfo_Result 嚴格

fuchsia.audio.device/control.fidl 中定義的

OrdinalVariant類型說明
response RingBuffer_WatchDelayInfo_Response
err RingBufferWatchDelayInfoError

觀測站

名稱類型說明
DEFAULT_DAI_INTERCONNECT_ELEMENT_ID 1 uint64

對於具有轉碼器或 Dai 驅動程式的裝置,只有一個 DAI_INTERCONNECT 實體。如果某個方法 需要我們透過 ID 處理互連網路,可使用 element_id 1。編碼器和 Dai 驅動程式 信號處理作業不應將這個 ID 指派給其他元素。

DEFAULT_RING_BUFFER_ELEMENT_ID 0 uint64

對於具有 Dai 或 StreamConfig 驅動程式的裝置,只有一個 RING_BUFFER 實體。如果 方法需要我們根據 ID 處理 RingBuffer,而使用 element_id 0。Dai 和 StreamConfig 實作信號處理的驅動程式不應將這個 ID 指派給其他元素。

MAX_COUNT_CHANNELS fuchsia.hardware.audio/MAX_COUNT_CHANNELS_IN_RING_BUFFER uint32

裝置可回報支援的頻道數量上限。

MAX_COUNT_CHANNEL_SETS fuchsia.hardware.audio/MAX_COUNT_CHANNEL_SETS uint32

裝置在單一 PcmFormatSet 中可回報的 ChannelSet 數量上限。

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

系統中任何音訊裝置的數量上限。

MAX_COUNT_FORMATS fuchsia.hardware.audio/MAX_COUNT_FORMATS uint32

裝置可回報的PcmFormatSet次數上限。

MAX_COUNT_PROCESSING_ELEMENTS fuchsia.hardware.audio.signalprocessing/MAX_COUNT_PROCESSING_ELEMENTS uint32

單一裝置支援的處理元素數量上限。

MAX_COUNT_RATES fuchsia.hardware.audio/MAX_COUNT_SUPPORTED_RATES uint32

裝置可在 PcmFormatSet 中回報的影格速率上限。

MAX_COUNT_SAMPLE_TYPES 32 uint32

單一 PcmFormatSet 可包含的不重複樣本格式數量上限。

MAX_STRING_SIZE fuchsia.hardware.audio/MAX_UI_STRING_SIZE uint32

裝置、製造商和產品名稱的字串長度上限。

UNIQUE_INSTANCE_ID_SIZE fuchsia.hardware.audio/UNIQUE_ID_SIZE uint32

裝置專屬 ID 的長度,以位元組為單位。

別名

名稱說明
ClockDomain uint32

用於多種 fuchsia.audio.device 通訊協定的常見別名、consts 和類型。

ElementId uint64
TokenId uint64
TopologyId uint64