fuchsia.audio.device

已新增:HEAD

通訊協定

控制選項

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

Control 執行個體可用來變更音訊裝置的設定或狀態。此外,它也會建立環形緩衝區,用來在用戶端和裝置之間傳送音訊資料。每個 Control 都與一個初始化的音訊裝置相關聯;反之,每個裝置隨時會與零或一個 Control 相關聯。

CodecStart

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

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

要求

<EMPTY>

回應

名稱類型
payload Control_CodecStart_Result

CodecStop

停止 Codec 硬體。如果成功,這個方法會在 Codec 停止後傳回,而 stop_time 表示硬體停止的時間。請注意,在呼叫此方法之前,轉碼器的 DaiFormat 必須先設定 (透過成功的 SetDaiFormat 呼叫) 設定。

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

要求

<EMPTY>

回應

名稱類型
payload Control_CodecStop_Result

CreateRingBuffer

建立環形緩衝區,用來與這部裝置互傳音訊。如果裝置為複合型裝置,則必須由 element_id 識別指定的 RING_BUFFER ENDPOINT。

這應該僅針對 Composite 和 StreamConfig 裝置呼叫。

要求

名稱類型
payload ControlCreateRingBufferRequest

回應

名稱類型
payload Control_CreateRingBuffer_Result

GetElements

傳回支援處理元素的向量。必須傳回一或多個處理元素,或 ZX_ERR_NOT_SUPPORTED

要求

<EMPTY>

回應

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

GetTopologies

傳回支援拓撲的向量。必須傳回一或多個拓撲,或 ZX_ERR_NOT_SUPPORTED。如果傳回多個拓撲,用戶端可能會使用 SetTopology 從清單中選擇任何拓撲。如果只傳回一個拓撲,則由於拓撲定義不能透過 SetTopology 變更,因此拓撲定義只是資訊。如果 GetElements 傳回一或多個元素,GetTopologies 必須傳回一或多個拓撲。

要求

<EMPTY>

回應

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

重設

重設硬體 -- 停止硬體、釋出所有環形緩衝區,並清除已設定的所有 DaaiFormat 或 RingBufferFormat。

硬體重設完成時,這個方法就會傳回。呼叫此方法後,系統仍會控制裝置,但必須重新建立並重新啟動所有環形緩衝區。對於使用 DAI_INTERCONNECT 的裝置 (例如轉碼器和部分複合連接項目),必須再次呼叫 SetDaiFormatCodecStart,才能將互連網路恢復啟用運作模式。在適用情況下,必須呼叫 SetTopologySetElementState

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

要求

<EMPTY>

回應

名稱類型
payload Control_Reset_Result

SetDaiFormat

為連接至這個轉碼器端點的數位互連網路設定線路格式。這個方法會傳回設定格式的相關資訊,包括延遲值。如果裝置為 Composite,則必須由 element_id 識別指定的 DAI_INTERCONNECT ENDPOINT。

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

要求

名稱類型
payload ControlSetDaiFormatRequest

回應

名稱類型
payload Control_SetDaiFormat_Result

SetElementState

使用 GetElements 傳回的專屬 ID 控制處理元素。如果 processing_element_idGetElements 傳回的 ID 不相符,或 TypeSpecificElementState 類型與 GetElements 為此 ID 傳回的處理元素 ElementType 不相符,則會傳回 ZX_ERR_INVALID_ARGS。如果 state 值無效 (也就是任何值違反此通訊協定中指定的規則),驅動程式可能會傳回 ZX_ERR_INVALID_ARGS。例如,當此處理元素未在其 supported_controls 中宣傳 CAN_CONTROL_FREQUENCY 時,嘗試變更 EQUALIZER 處理元素的 EqualizerBandState frequency

SignalProcessing 通訊協定呼叫前後可能會呼叫 SetElementState。如果在非 SignalProcessing 通訊協定呼叫之後呼叫,SetElementState 不一定需要重新交涉驅動程式庫狀態,因為要呼叫會組合 SignalProcessing 的通訊協定呼叫 (例如 Dai)。舉例來說,SetElementState變更處理元素的參數時,AGL您不一定要重新協商 Dai 狀態,因為變更取得參數通常不會變更系統支援的音訊格式組合。 相反地,如果 SetElementState 變更 CONNECTION_POINT 元素的參數,則可能需要重新協商,因為變更可能會使先前的 GetDaiFormats Dai 通訊協定呼叫中傳回的支援格式組合失效。

驅動程式庫則負責判斷是否需要重新協商。如果需要重新協商,SetElementState 必須傳回 ZX_ERR_BAD_STATE,且用戶端必須關閉通訊協定管道,以便重新開始通訊協定交涉。接著,用戶端必須在任何非 SignalProcessing 通訊協定呼叫之前,發出傳回 ZX_ERR_BAD_STATESetElementState 呼叫。

要求

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

回應

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

SetGain

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

只需針對 StreamConfig 裝置呼叫即可。

要求

名稱類型
payload ControlSetGainRequest

回應

名稱類型
payload Control_SetGain_Result

SetTopology

將使用 ID 設為要使用的拓撲,以指定 GetTopologies 傳回的向量。目前的拓撲會透過 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。除非 Element 資料表的任何欄位與 processing_element_id 最新回報的內容不同,否則驅動程式不會回應對 processing_element_id 的後續用戶端 WatchElementState 呼叫。如果再次呼叫此方法和處理_element_id 的待處理 WatchElementState,則驅動程式會關閉錯誤為 ZX_ERR_BAD_STATE 的通訊協定管道。

要求

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

回應

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

WatchTopology

透過等待中取得目前的拓撲。駕駛人會立即回覆每個用戶端傳送的第一則 WatchTopology。在信號處理拓撲變更 (因為 SetTopology 呼叫而發生) 之前,驅動程式不會回應來自該用戶端的後續 WatchTopology 呼叫。如果在這個用戶端已有待處理的 WatchTopology 時再次呼叫這個方法,驅動程式會關閉錯誤為 ZX_ERR_BAD_STATE 的通訊協定管道。

已新增:HEAD

要求

<EMPTY>

回應

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

ControlCreator

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

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

建立

為指定裝置建立 Control

要求

名稱類型
payload ControlCreatorCreateRequest

回應

名稱類型
payload ControlCreator_Create_Result

Observer

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

Observer 執行個體可用於學習音訊裝置的功能和狀態,並在狀態變更時掌握相關資訊。每個 Observer 都與一個初始化的音訊裝置相關聯。單一音訊裝置可能會由多個 Observer 執行個體觀察。

GetElements

傳回支援處理元素的向量。必須傳回一或多個處理元素,或 ZX_ERR_NOT_SUPPORTED

要求

<EMPTY>

回應

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

GetReferenceClock

擷取裝置的參考時鐘。

該時鐘會位於裝置 Info 表格指定的網域中。

只需針對 Composite 或 StreamConfig 裝置呼叫即可。

要求

<EMPTY>

回應

名稱類型
payload Observer_GetReferenceClock_Result

GetTopologies

傳回支援拓撲的向量。必須傳回一或多個拓撲,或 ZX_ERR_NOT_SUPPORTED。如果傳回多個拓撲,用戶端可能會使用 SetTopology 從清單中選擇任何拓撲。如果只傳回一個拓撲,則由於拓撲定義不能透過 SetTopology 變更,因此拓撲定義只是資訊。如果 GetElements 傳回一或多個元素,GetTopologies 必須傳回一或多個拓撲。

要求

<EMPTY>

回應

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

WatchElementState

透過懸掛的取得作業取得處理元素狀態。對於指定的 processing_element_id,驅動程式庫會回覆用戶端傳送的第一個 WatchElementState。除非 Element 資料表的任何欄位與 processing_element_id 最新回報的內容不同,否則驅動程式不會回應對 processing_element_id 的後續用戶端 WatchElementState 呼叫。如果再次呼叫此方法和處理_element_id 的待處理 WatchElementState,則驅動程式會關閉錯誤為 ZX_ERR_BAD_STATE 的通訊協定管道。

要求

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

回應

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

WatchGainState

要求通知裝置增益狀態的任何變更。

注意:這只會通知裝置 Info 表格 (具體說明 GainCapabilities) 中描述的控制項異動。使用 WatchElementState 取得顯示為 SignalProcessing (GetTopologiesGetElements) 的處理程序。

只需針對 StreamConfig 裝置呼叫即可。

要求

<EMPTY>

回應

名稱類型
payload Observer_WatchGainState_Result

WatchPlugState

要求通知裝置插頭狀態的任何變更。首次呼叫時,系統會立即傳回。

只需針對 Codec 或 StreamConfig 裝置呼叫即可。

要求

<EMPTY>

回應

名稱類型
payload Observer_WatchPlugState_Result

WatchTopology

透過等待中取得目前的拓撲。駕駛人會立即回覆每個用戶端傳送的第一則 WatchTopology。在信號處理拓撲變更 (因為 SetTopology 呼叫而發生) 之前,驅動程式不會回應來自該用戶端的後續 WatchTopology 呼叫。如果在這個用戶端已有待處理的 WatchTopology 時再次呼叫這個方法,驅動程式會關閉錯誤為 ZX_ERR_BAD_STATE 的通訊協定管道。

已新增:HEAD

要求

<EMPTY>

回應

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

供應商

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

請使用 Provider 介面手動新增未使用 devfs 機制的裝置。(使用 devfs 的裝置會在偵測到時自動新增)。

AddDevice

要求

名稱類型
payload ProviderAddDeviceRequest

回應

名稱類型
payload Provider_AddDevice_Result

註冊類型

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

Registry 執行個體會在裝置抵達和離開時通知用戶端,且會建立觀察器 (請參閱 Observer),以通知更詳細的狀態變更。

CreateObserver

針對指定裝置要求 Observer

要求

名稱類型
payload RegistryCreateObserverRequest

回應

名稱類型
payload Registry_CreateObserver_Result

WatchDeviceRemoved

註冊即可在 (使用中、已新增) 裝置移除時接收通知。 因為這個方法只會收到一則移除通知,因此在完成移除動作後,應立即重新呼叫,以免發生其他移除要求。

要求

<EMPTY>

回應

名稱類型
payload Registry_WatchDeviceRemoved_Result

WatchDevicesAdded

註冊以在一或多個裝置新增時接收通知。devices 向量一律包含至少一個 Info 項目。

要求

<EMPTY>

回應

名稱類型
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 呼叫。只有在延遲資訊與先前通知的值不同時,系統才會完成後續的呼叫。

要求

<EMPTY>

回應

名稱類型
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/CodecReset 傳回的錯誤。

名稱說明
1

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

2

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

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 呼叫尚未完成。

PlugDetectCapabilities 彈性

類型: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 呼叫尚未完成。

RegistryWatchDevicesAddedError 彈性

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

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

序數廣闊類型說明
min_frequency uint32

此管道保證發出/擷取的最小頻率,以 Hz 為單位。如果沒有,通道會延伸至裝置範圍底部。

選用。

max_frequency uint32

此管道保證發出/擷取的頻率上限 (以 Hz)。

選用。

ChannelSet

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

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

序數廣闊類型說明
attributes vector<ChannelAttributes>[64]

這個向量中的每個項目都會說明該管道的屬性 (例如頻率範圍)。這個向量的長度定義了這個 ChannelSet 支援的通道數。至少要有一個項目。

必填。

ControlCreateRingBufferRequest 資源

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

序數廣闊類型說明
element_id ElementId

RING_BUFFER 類型的 ENDPOINT 元素 ID。

Composite 為必要項目,如果是 StreamConfig 則予以忽略。

options RingBufferOptions

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

必填。

ring_buffer_server server_end<RingBuffer>

要建立 RingBuffer 的 server_end。

必填。

ControlCreatorCreateRequest 資源

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

序數廣闊類型說明
token_id TokenId

要控管的裝置權杖 ID。

必填。

control_server server_end<Control>

要建立 Control 的 server_end。

必填。

ControlCreator_Create_Response

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

序數廣闊類型說明

ControlSetDaiFormatRequest

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

序數廣闊類型說明
element_id ElementId

DAI_INTERCONNECT 類型的 ENDPOINT 元素 ID。

合成物為必要元素;「轉碼器」遭到忽略。

dai_format fuchsia.hardware.audio/DaiFormat

ControlSetGainRequest

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

序數廣闊類型說明
target_state GainState

要設定的增益狀態。

必填。

Control_CodecStart_Response

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

序數廣闊類型說明
start_time zx/Time

Control_CodecStop_Response

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

序數廣闊類型說明
stop_time zx/Time

Control_CreateRingBuffer_Response 資源

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

序數廣闊類型說明
properties RingBufferProperties

環狀緩衝區和建立中音訊串流的屬性。

ring_buffer fuchsia.audio/RingBuffer

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

Control_Reset_Response

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

序數廣闊類型說明

Control_SetDaiFormat_Response

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

序數廣闊類型說明
state fuchsia.hardware.audio/CodecFormatInfo

Control_SetGain_Response

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

序數廣闊類型說明

DelayInfo

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

序數廣闊類型說明
internal_delay zx/Duration

對所選格式而言,驅動程式內部所擷取硬體延遲時間的最佳估計值。這個時間長度不得為負數。

必填。

external_delay zx/Duration

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

選用。

ElementDaiFormatSet

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

此表代表此端點支援的可能 Dai 格式。

序數廣闊類型說明
element_id ElementId

所說明元素的 ID。必須符合裝置 Info 資料表所含元素清單中的 ENDPOINT (DAI_INTERCONNECT) 項目。如要說明轉碼器或 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 格式。

序數廣闊類型說明
element_id ElementId

所說明元素的 ID。必須符合裝置 Info 資料表所含元素清單中的 ENDPOINT (RING_BUFFER) 項目。如要說明 Dai 或 StreamConfig 裝置支援的 RingBuffer 格式,這個值應為 DEFAULT_RING_BUFFER_ELEMENT_ID (0)。

必填。

format_sets vector<PcmFormatSet>[64]

此元素支援的 ring_buffer_format_set 項目。

此為必要項目。至少要有一個項目。

GainCapabilities

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

裝置的整體增益能力。

序數廣闊類型說明
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

裝置目前的增益狀態。

序數廣闊類型說明
gain_db float32

裝置層級增益數 (以分貝為單位)。

必填。

muted bool

將所有頻道設為靜音。如果留空,系統就會將所有頻道取消靜音。

選用。

agc_enabled bool

自動增益控制。如果從缺,系統會停用。

選用。

資訊

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

當系統偵測到裝置 (或透過 Provider/AddDevice 新增) 時,系統會查詢裝置的屬性和功能。完成這項列舉程序後,就會向監控裝置 (透過 Registry/WatchDevicesAdded 送達) 的用戶端宣布。

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

序數廣闊類型說明
token_id TokenId

在此啟動工作階段保證不重複的裝置 ID,但可能會在重新啟動後變更。

適用於所有裝置類型。

device_type DeviceType

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

適用於所有裝置類型。

device_name string[256]

從 devfs 或 Provider/AddDevice 呼叫端接收的裝置高階名稱。

適用於所有裝置類型。

manufacturer string[256]

裝置製造商的名稱。

對所有裝置類型來說,此為選填屬性。

product string[256]

裝置的概略產品名稱。

對所有裝置類型來說,此為選填屬性。

unique_instance_id uint8[16]

驅動程式庫提供的 16 個字元 ID (如有),可用來區分相同裝置的執行個體。系統重新啟動後,這個值不應變更。

對所有裝置類型來說,此為選填屬性。

is_input bool

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

對 StreamConfig 而言為必要項目;對 Codec 為選用項目;複合型則沒有。

ring_buffer_format_sets vector<ElementRingBufferFormatSet>[64]

裝置所有裝置設定組合支援的所有格式組合。如果裝置會公開一或多個 RingBuffer ENDPOINT 元素,則這個欄位必須包含,且其向量必須包含每個相關 ENDPOINT 元素一個項目。如果裝置公開「NO RingBuffer ENDPOINT」元素,就必須省略這個欄位 (完全省略,而不是填入空白向量)。

StreamConfig 為必要項目,複合為選用欄位;「轉碼器」沒有必填。

dai_format_sets vector<ElementDaiFormatSet>[64]

裝置支援的所有 DAI 格式組合,涵蓋所有裝置配置設定組合中。如果裝置會公開一或多個 Dai ENDPOINT 元素,則這個欄位必須包含,且其向量必須包含每個相關 ENDPOINT 元素一個項目。如果裝置公開 NO Dai ENDPOINT 元素,則必須省略這個欄位 (完全省略,而不是填入空白向量)。

對 Codec 而言為必要項目;對 Composite 為選用,如果是 StreamConfig 則則無。

gain_caps GainCapabilities

裝置的增益功能。

StreamConfig 的必要項目,不適用於 Codec 和 Composite。

plug_detect_caps PlugDetectCapabilities

裝置的電源線。

對 Codec 和 StreamConfig 而言為必要項目;複合型缺少。

clock_domain ClockDomain

裝置的時鐘硬體運作所在的時鐘網域 ID。相同時鐘網域中的裝置仍會完全同步。相對於其他時鐘網域,它們可能會偏移,但該網域中的所有時鐘都會「一致」。雖然時鐘的時鐘具有相同的速率,但這些位置可能會以任意固定的金額偏移。

時鐘網域有兩個特殊值:

  • CLOCK_DOMAIN_MONOTONIC 表示硬體是由系統 Motonic 時鐘驅動,而且一律會與該時間軸同步處理。

  • CLOCK_DOMAIN_EXTERNAL 表示硬體未與任何其他已知時鐘 (甚至是 CLOCK_DOMAIN_EXTERNAL 中的任何其他時鐘) 同步。

Composite 和 StreamConfig 為必要項目;「Codec」不存在。

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

序數廣闊類型說明
reference_clock handle<clock>

裝置的參考時鐘。

Observer_WatchGainState_Response

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

序數廣闊類型說明
state GainState

裝置最近的增益狀態。

Observer_WatchPlugState_Response

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

序數廣闊類型說明
state PlugState

裝置目前的插頭狀態。

plug_time zx/Time

插入狀態最近變更的時間 (以 CLOCK_MONOTONIC 表示)。

PcmFormatSet

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

本表中的向量代表裝置設定的三個維度 (通道、取樣格式、影格速率)。裝置應支援這些向量中項目的所有組合。

序數廣闊類型說明
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

序數廣闊類型說明
device_name string[256]

裝置的高階名稱。不得為空白字串。

必填。

device_type DeviceType

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

必填。

driver_client DriverClient

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

必填。

淘汰

不再支援轉碼器、Dai 和 StreamConfig,請改用音訊複合。請參閱音訊驅動程式架構

已淘汰:HEAD

Provider_AddDevice_Response

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

序數廣闊類型說明

RegistryCreateObserverRequest 資源

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

序數廣闊類型說明
token_id TokenId

要觀察的裝置權杖,

必填。

observer_server server_end<Observer>

即將建立的 Observer 伺服器結尾。

必填。

Registry_CreateObserver_Response

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

序數廣闊類型說明

Registry_WatchDeviceRemoved_Response

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

序數廣闊類型說明
token_id TokenId

是在最近至少移除的裝置權杖。

Registry_WatchDevicesAdded_Response

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

序數廣闊類型說明
devices vector<Info>[256]

自上次呼叫 WatchDevicesAdded 後新增的裝置。這個方法會在首次呼叫時傳回所有音訊裝置。

RingBufferOptions

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

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

序數廣闊類型說明
format fuchsia.audio/Format

要建立的環形緩衝區格式 (範例格式、管道化、影格速率)。

必填。

ring_buffer_min_bytes uint32

環形緩衝區所需的位元組數下限。視編碼、驅動程式庫、裝置或 OS 的要求而定,實際緩衝區可能會較大。

必填。

RingBufferProperties

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

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

序數廣闊類型說明
valid_bits_per_sample uint8

每個樣本內有效的位元數 (從最重要的數值開始算起)。這可能小於實際樣本大小,例如由 18 位元 ADC 提供的輸入環形緩衝區時。忽略其他精確度部分。

必填。

turn_on_delay zx/Duration

呼叫 SetActiveChannels 後,停用管道完全正常運作的最長延遲時間。這是重新啟用所有管道時最差的持續時間。這個值不得為負數。

必填。

RingBufferSetActiveChannelsRequest

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

序數廣闊類型說明
channel_bitmask uint64

要啟用的頻道 (所有其他管道都必須停用)。任何位元不得設定在環形緩衝區格式中指定的 channel_count 上方 (舉例來說,如果是四管道串流,channel_bitmask 必須在 [0x00, 0x0F] 範圍內)。

必填。

RingBufferStartRequest

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

序數廣闊類型說明

RingBufferStopRequest

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

序數廣闊類型說明

RingBuffer_SetActiveChannels_Response

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

序數廣闊類型說明
set_time zx/Time

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

必填。

RingBuffer_Start_Response

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

序數廣闊類型說明
start_time zx/Time

開始串流的 CLOCK_MONOTONIC 時間。

必填。

RingBuffer_Stop_Response

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

序數廣闊類型說明

RingBuffer_WatchDelayInfo_Response

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

序數廣闊類型說明
delay_info DelayInfo

必填。

聯合國

ControlCreator_Create_Result 嚴格

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

序數Variant類型說明
response ControlCreator_Create_Response
err ControlCreatorError

Control_CodecStart_Result 嚴格

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

序數Variant類型說明
response Control_CodecStart_Response
err ControlCodecStartError

Control_CodecStop_Result 嚴格

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

序數Variant類型說明
response Control_CodecStop_Response
err ControlCodecStopError

Control_CreateRingBuffer_Result 嚴格 資源

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

序數Variant類型說明
response Control_CreateRingBuffer_Response
err ControlCreateRingBufferError

Control_Reset_Result 嚴格

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

序數Variant類型說明
response Control_Reset_Response
err ControlResetError

Control_SetDaiFormat_Result 嚴格

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

序數Variant類型說明
response Control_SetDaiFormat_Response
err ControlSetDaiFormatError

Control_SetGain_Result (嚴格)

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

序數Variant類型說明
response Control_SetGain_Response
err ControlSetGainError

DriverClient 的彈性 資源

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

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

淘汰

不再支援轉碼器、Dai 和 StreamConfig,請改用音訊複合。請參閱音訊驅動程式架構

已淘汰:HEAD
序數Variant類型說明
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

序數Variant類型說明
response Observer_GetReferenceClock_Response
err ObserverGetReferenceClockError

Observer_WatchGainState_Result 嚴格

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

序數Variant類型說明
response Observer_WatchGainState_Response
err ObserverWatchGainStateError

Observer_WatchPlugState_Result 嚴格

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

序數Variant類型說明
response Observer_WatchPlugState_Response
err ObserverWatchPlugStateError

Provider_AddDevice_Result 嚴格

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

序數Variant類型說明
response Provider_AddDevice_Response
err ProviderAddDeviceError

Registry_CreateObserver_Result 嚴格

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

序數Variant類型說明
response Registry_CreateObserver_Response
err RegistryCreateObserverError

Registry_WatchDeviceRemoved_Result 嚴格

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

序數Variant類型說明
response Registry_WatchDeviceRemoved_Response
err RegistryWatchDeviceRemovedError

Registry_WatchDevicesAdded_Result 嚴格

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

序數Variant類型說明
response Registry_WatchDevicesAdded_Response
err RegistryWatchDevicesAddedError

RingBuffer_SetActiveChannels_Result 嚴格

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

序數Variant類型說明
response RingBuffer_SetActiveChannels_Response
err RingBufferSetActiveChannelsError

RingBuffer_Start_Result 嚴格

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

序數Variant類型說明
response RingBuffer_Start_Response
err RingBufferStartError

RingBuffer_Stop_Result 嚴格

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

序數Variant類型說明
response RingBuffer_Stop_Response
err RingBufferStopError

RingBuffer_WatchDelayInfo_Result 嚴格

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

序數Variant類型說明
response RingBuffer_WatchDelayInfo_Response
err RingBufferWatchDelayInfoError

業者

名稱類型說明
DEFAULT_DAI_INTERCONNECT_ELEMENT_ID 1 uint64

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

DEFAULT_RING_BUFFER_ELEMENT_ID 0 uint64

如果是搭載 Dai 或 StreamConfig 驅動程式的裝置,則只有一個 RING_BUFFER 實體。當方法要求我們透過 ID 處理 RingBuffer 時,我們會使用 element_id 0。實作訊號處理的 Dai 和 StreamConfig 驅動程式不應將這個 ID 指派給其他元素。

MAX_COUNT_CHANNELS fuchsia.hardware.audio/MAX_COUNT_CHANNELS_IN_RING_BUFFER uint32

單一裝置可回報的頻道數量上限。

MAX_COUNT_CHANNEL_SETS fuchsia.hardware.audio/MAX_COUNT_CHANNEL_SETS uint32

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

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

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

MAX_COUNT_FORMATS fuchsia.hardware.audio/MAX_COUNT_FORMATS uint32

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

MAX_COUNT_PROCESSING_ELEMENTS fuchsia.hardware.audio.signalprocessing/MAX_COUNT_PROCESSING_ELEMENTS uint32

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

MAX_COUNT_RATES fuchsia.hardware.audio/MAX_COUNT_SUPPORTED_RATES uint32

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

MAX_COUNT_SAMPLE_TYPES 32 uint32

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

MAX_STRING_SIZE fuchsia.hardware.audio/MAX_UI_STRING_SIZE uint32

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

UNIQUE_INSTANCE_ID_SIZE fuchsia.hardware.audio/UNIQUE_ID_SIZE uint32

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

別名

名稱說明
ClockDomain uint32

多個 fuchsia.audio.device 通訊協定所使用的一般別名、常數和類型。

ElementId uint64
TokenId uint64
TopologyId uint64