PROTOCOLS
轉碼器
定義於 fuchsia.hardware.audio/codec.fidl
如需總覽,請參閱 [Audio Codec Interface]。
淘汰
不再支援,請改用 音訊複合 其中包含一個 DAI,且沒有 Ring 緩衝區,請參閱 音訊驅動程式架構
GetDaiFormats
擷取轉碼器支援的 DAI 格式 (如果轉碼器無法使用的話) 可能會傳回錯誤狀態,而控制器稍後可能會重試。 若擷取多個 DaiSupportedFormats, 支援 DaiSupportedFormats 中的參數組合。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Codec_GetDaiFormats_Result
|
GetHealthState
擷取頂層的健康狀態。 未立即回應的駕駛可能會做為驅動程式庫健康狀態不良的跡象。
要求
<空白>
回應
名稱 | 類型 |
---|---|
state |
HealthState
|
GetProperties
擷取頂層靜態屬性。
要求
<空白>
回應
名稱 | 類型 |
---|---|
properties |
CodecProperties
|
IsBridgeable
傳回轉碼器是否可橋接。
淘汰
不再支援橋接設定,因此無法在執行階段變更。 駕駛人仍可在開機時設為在橋接模式中運作,或是不進行操作。
要求
<空白>
回應
名稱 | 類型 |
---|---|
supports_bridged_mode |
bool
|
重設
重設轉碼器。
重設完成後,系統會傳回 Reset
。如果驅動程式庫無法成功重設
轉碼器會關閉轉碼器通訊協定管道,在這種情況下,用戶端可能會取得新的
轉碼器通訊協定管道,然後再試一次。
要求
<空白>
回應
<空白>
SetBridgedMode
設定轉碼器的橋接模式。這是必要方法,但只有在
轉碼器支援橋接模式,如其回覆 IsBridgeable
的指定。
淘汰
不再支援橋接設定,因此無法在執行階段變更。 駕駛人仍可在開機時設為在橋接模式中運作,或是不進行操作。
要求
名稱 | 類型 |
---|---|
enable_bridged_mode |
bool
|
SetDaiFormat
設定要在控制器和轉碼器之間的介面使用的 DAI 格式。 如果發出要求時不支援,則傳回錯誤 (例如卸除式硬體)。
要求
名稱 | 類型 |
---|---|
format |
DaiFormat
|
回應
名稱 | 類型 |
---|---|
payload |
Codec_SetDaiFormat_Result
|
SignalProcessingConnect
連線至 SignalProcessing
通訊協定。
如果不支援新的連線要求,系統可能支援多個連線,即
因此連線數量已達到上限。舉例來說,如執行個體 1,
protocol
管道 (非呼叫 SignalProcessingConnect
的管道)
即將打烊,並打 ZX_ERR_ALREADY_BOUND
。
如果完全不支援信號處理,則系統會傳回 protocol
管道 (同樣不是
呼叫 SignalProcessingConnect
所在的管道) 將會關閉
ZX_ERR_NOT_SUPPORTED
號縮寫。
由於這個通訊協定稱為 SignalProcessingConnect
,而不是 Connect
是一組特徵,因此名稱越詳細,您就能明確區分
更加清晰易懂
要求
名稱 | 類型 |
---|---|
protocol |
server_end<fuchsia.hardware.audio.signalprocessing/SignalProcessing>
|
開始
開始/重新啟動轉碼器作業。
Start
設定用於啟動轉碼器的 時,會傳回 。這個方法不會等待
實際啟動播放/擷取的硬體 (亦即不會發生 turn_on_delay
影響)
) 或任何這類延遲,也不會反映在傳回的 start_time
中。
start_time
表示驅動程式庫完成將轉碼器設定的啟動時間 (如測量結果所示)
CLOCK_MONOTONIC 時間軸上。
如果驅動程式庫無法成功啟動轉碼器,系統會關閉轉碼器通訊協定管道。
在這種情況下,用戶端可能會取得新的轉碼器通訊協定管道,然後再試一次。
要求
<空白>
回應
名稱 | 類型 |
---|---|
start_time |
zx/Time
|
停止
停止轉碼器作業。
Stop
將轉碼器設定為停止執行時,會傳回 。這個方法不會等待
需讓硬體實際停止播放/擷取 (也就是說,turn_off_delay
不會受影響
),也不會反映在傳回的 stop_time
中。
stop_time
表示驅動程式庫完成將轉碼器停止設定的時間,如測量結果所示
CLOCK_MONOTONIC 時間軸上。
如果驅動程式庫無法成功將轉碼器設定為停止,則會關閉轉碼器
通訊協定管道,此時用戶端可能會取得新的轉碼器通訊協定管道,然後重試。
要求
<空白>
回應
名稱 | 類型 |
---|---|
stop_time |
zx/Time
|
WatchPlugState
透過懸掛的取得取得插頭偵測狀態。駕駛會回覆第一個
用戶端已傳送 WatchPlugState
。驅動程式不會回應後續的用戶端
WatchPlugState
呼叫,直到插頭狀態從最近回報的內容變更為止。
要求
<空白>
回應
名稱 | 類型 |
---|---|
plug_state |
PlugState
|
CodecConnector
定義於 fuchsia.hardware.audio/codec_connector.fidl
如需 Codec 通訊協定的總覽,請參閱 轉碼器介面
淘汰
不再支援,請改用 音訊複合 其中包含一個 DAI,且沒有 Ring 緩衝區,請參閱 音訊驅動程式架構
連線
連線至 Codec 通訊協定伺服器。 這種間接到 Codec 通訊協定讓我們可以支援獨立的轉碼器用戶端 連線狀態。
要求
名稱 | 類型 |
---|---|
codec_protocol |
server_end<Codec>
|
合成物
在 fuchsia.hardware.audio/composite.fidl 中定義的
Composite
介面是音訊驅動程式公開的 FIDL 通訊協定。Composite
介面
是通用的,可供設定各種音訊硬體類型,包括支援的音訊硬體類型
由 StreamConfig
、Dai
和 Codec
FIDL 介面提供。Composite
介面更加方便
通用,且可讓音訊子系統中的轉送方式更有彈性。另請參閱
音訊驅動程式複合
CreateRingBuffer
用戶端會傳送 CreateRingBuffer
,以便選取 RING_BUFFER
的環形緩衝區格式
processing_element_id
指定的處理元素。格式是依據資訊
驅動程式庫在 GetRingBufferFormats
中提供的功能、用戶端支援的資源。
任何其他需求傳回的 ring_buffer
管道則可用於存取及控制
驅動程式庫提供的音訊緩衝區。
如果 processing_element_id
與傳回的 ID 不符,則傳回 INVALID_ARGS
建立者:GetElements
。
如果 ID 所代表元素的 ElementType
不是,則傳回 WRONG_TYPE
RING_BUFFER
。
要求
名稱 | 類型 |
---|---|
processing_element_id |
ElementId
|
format |
Format
|
ring_buffer |
server_end<RingBuffer>
|
回應
名稱 | 類型 |
---|---|
payload |
Composite_CreateRingBuffer_Result
|
GetDaiFormats
擷取 DAI_INTERCONNECT
處理元素支援的 DAI 格式
位於此驅動程式庫支援的拓撲 (由 GetElements
傳回)
fuchsia.hardware.audio.signalprocessing.
如果當下無法使用 DAI 格式,則會傳回 SHOULD_WAIT
(用戶端)
但之後或許會再重試。
如果 processing_element_id
與傳回的 ID 不符,則傳回 INVALID_ARGS
建立者:GetElements
。
如果 ID 所代表元素的 ElementType
不是,則傳回 WRONG_TYPE
DAI_INTERCONNECT
。
若擷取多個 DaiSupportedFormats
,則在獨有的組合時,
支援格式中的參數
要求
名稱 | 類型 |
---|---|
processing_element_id |
ElementId
|
回應
名稱 | 類型 |
---|---|
payload |
Composite_GetDaiFormats_Result
|
GetHealthState
擷取頂層的健康狀態。 未立即回應的駕駛可能會做為驅動程式庫健康狀態不良的跡象。
要求
<空白>
回應
名稱 | 類型 |
---|---|
state |
HealthState
|
GetProperties
擷取頂層靜態屬性。
要求
<空白>
回應
名稱 | 類型 |
---|---|
properties |
CompositeProperties
|
GetRingBufferFormats
擷取 RING_BUFFER
處理元素支援的環形緩衝區格式
位於此驅動程式庫支援的拓撲 (由 GetElements
傳回)
fuchsia.hardware.audio.signalprocessing.
如果現在無法使用環形緩衝區格式,則會傳回 SHOULD_WAIT
,
用戶端可能會在稍後重試。
如果 processing_element_id
與傳回的 ID 不符,則傳回 INVALID_ARGS
建立者:GetElements
。
如果 ID 所代表元素的 ElementType
不是,則傳回 WRONG_TYPE
RING_BUFFER
。
若擷取多個 SupportedFormats
,則在獨有的組合時,
SupportedFormats
中的參數可能受支援。
要求
名稱 | 類型 |
---|---|
processing_element_id |
ElementId
|
回應
名稱 | 類型 |
---|---|
payload |
Composite_GetRingBufferFormats_Result
|
重設
重設硬體,包括所有 DAI 互連網路和信號處理。
因此,CreateRingBuffer
取得的所有頻道都將關閉。
硬體完全重設時,系統會傳回 Reset
。此時,客戶必須
重新設定任何 DAI 互連網路、選取信號處理拓撲,並重新設定
,並重建任何環形緩衝區。
如果驅動程式庫無法成功重設硬體,系統會傳回錯誤並關閉 通訊協定管道,在此情況下,用戶端可能會取得新的通訊協定管道,然後重試。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Composite_Reset_Result
|
SetDaiFormat
用戶端會傳送 SetDaiFormat
,以便為 DAI_INTERCONNECT
選取 DAI 格式
processing_element_id
指定的處理元素。格式是依據資訊
驅動程式庫在 GetDaiFormats
中提供的功能、用戶端支援的項目,以及
才能正常運作
如果 processing_element_id
與傳回的 ID 不符,則傳回 INVALID_ARGS
建立者:GetElements
。
如果 ID 所代表元素的 ElementType
不是,則傳回 WRONG_TYPE
DAI_INTERCONNECT
。
要求
名稱 | 類型 |
---|---|
processing_element_id |
ElementId
|
format |
DaiFormat
|
回應
名稱 | 類型 |
---|---|
payload |
Composite_SetDaiFormat_Result
|
SignalProcessingConnect
連線至 SignalProcessing
通訊協定。
如果不支援新的連線要求,系統可能支援多個連線,即
因此連線數量已達到上限。舉例來說,如執行個體 1,
protocol
管道 (非呼叫 SignalProcessingConnect
的管道)
即將打烊,並打 ZX_ERR_ALREADY_BOUND
。
如果完全不支援信號處理,則系統會傳回 protocol
管道 (同樣不是
呼叫 SignalProcessingConnect
所在的管道) 將會關閉
ZX_ERR_NOT_SUPPORTED
號縮寫。
由於這個通訊協定稱為 SignalProcessingConnect
,而不是 Connect
是一組特徵,因此名稱越詳細,您就能明確區分
更加清晰易懂
要求
名稱 | 類型 |
---|---|
protocol |
server_end<fuchsia.hardware.audio.signalprocessing/SignalProcessing>
|
CompositeConnector
在 fuchsia.hardware.audio/composite_connector.fidl 中定義的
如需總覽,請參閱 音訊複合裝置
連線
連線至 Device
通訊協定。
這個方法可讓元件在開發主機的控制項之外提供 FIDL。
要求
名稱 | 類型 |
---|---|
composite_protocol |
server_end<Composite>
|
戴伊
定義於 fuchsia.hardware.audio/dai.fidl
如需總覽,請參閱 數位音訊介面。
淘汰
不再支援,請改用 音訊複合 分別搭配一個 DAI 和一個 Ring 緩衝區,請參閱 音訊驅動程式架構
CreateRingBuffer
用戶端會傳送 CreateRingBuffer
,以便同時選取 DAI 格式和環形緩衝區格式
根據驅動程式庫在 GetDaiFormats
和 GetRingBufferFormats
中提供的資訊
和所有其他要求「ring_buffer
」管道是
用來控制音訊緩衝區 (如果已建立先前的環形緩衝區管道,且
驅動程式庫必須關閉該 (環形緩衝區) 管道,並在每次
順利退出過程中任何進行中的串流作業。
要求
名稱 | 類型 |
---|---|
dai_format |
DaiFormat
|
ring_buffer_format |
Format
|
ring_buffer |
server_end<RingBuffer>
|
GetDaiFormats
擷取 DAI 支援的 DAI 格式 (如果在 DAI 時不適用)
可能會傳回錯誤狀態,而用戶端稍後可能會重試。
若擷取多個 DaiSupportedFormats
,則在獨有的組合時,
支援格式中的參數
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Dai_GetDaiFormats_Result
|
GetHealthState
擷取頂層的健康狀態。 未立即回應的駕駛可能會做為驅動程式庫健康狀態不良的跡象。
要求
<空白>
回應
名稱 | 類型 |
---|---|
state |
HealthState
|
GetProperties
擷取頂層靜態屬性。
要求
<空白>
回應
名稱 | 類型 |
---|---|
properties |
DaiProperties
|
GetRingBufferFormats
擷取 DAI 支援的環形緩衝區格式 (如果在 DAI 時不適用)
可能會傳回錯誤狀態,而用戶端稍後可能會重試。
若擷取多個 SupportedFormats
,則在獨有的組合時,
SupportedFormats
中的參數可能受支援。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
Dai_GetRingBufferFormats_Result
|
重設
重設 DAI 硬體。透過 CreateRingBuffer
取得的 ring_buffer
管道可能已關閉
驅動程式庫,在此情況下,用戶端需要取得新的 ring_buffer
。
重設完成後,系統會傳回 Reset
。如果驅動程式庫無法成功重設硬體,
就會關閉 DAI 通訊協定管道,在此情況下,用戶端可能會取得新的 DAI
通訊協定管道並重試。
要求
<空白>
回應
<空白>
SignalProcessingConnect
連線至 SignalProcessing
通訊協定。
如果不支援新的連線要求,系統可能支援多個連線,即
因此連線數量已達到上限。舉例來說,如執行個體 1,
protocol
管道 (非呼叫 SignalProcessingConnect
的管道)
即將打烊,並打 ZX_ERR_ALREADY_BOUND
。
如果完全不支援信號處理,則系統會傳回 protocol
管道 (同樣不是
呼叫 SignalProcessingConnect
所在的管道) 將會關閉
ZX_ERR_NOT_SUPPORTED
號縮寫。
由於這個通訊協定稱為 SignalProcessingConnect
,而不是 Connect
是一組特徵,因此名稱越詳細,您就能明確區分
更加清晰易懂
要求
名稱 | 類型 |
---|---|
protocol |
server_end<fuchsia.hardware.audio.signalprocessing/SignalProcessing>
|
DaiConnector
定義於 fuchsia.hardware.audio/dai_connector.fidl
如需 DAI 通訊協定的總覽,請參閱 數位音訊介面
淘汰
不再支援,請改用 音訊複合 分別搭配一個 DAI 和一個 Ring 緩衝區,請參閱 音訊驅動程式架構
連線
並連結至 DAI 通訊協定伺服器。
要求
名稱 | 類型 |
---|---|
dai_protocol |
server_end<Dai>
|
健康度
定義於 fuchsia.hardware.audio/health.fidl
GetHealthState
擷取頂層的健康狀態。 未立即回應的駕駛可能會做為驅動程式庫健康狀態不良的跡象。
要求
<空白>
回應
名稱 | 類型 |
---|---|
state |
HealthState
|
RingBuffer
在 fuchsia.hardware.audio/ring_buffer.fidl 中定義的
GetProperties
頂層靜態屬性的存取子。
要求
<空白>
回應
名稱 | 類型 |
---|---|
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
不是零,驅動程式庫會將回覆傳送至
最多 WatchClockRecoveryPositionInfo
個用戶端要求
頻率:clock_recovery_notifications_per_ring
。這些通知只會使用
復原時鐘。
要求
名稱 | 類型 |
---|---|
min_frames |
uint32
|
clock_recovery_notifications_per_ring |
uint32
|
回應
名稱 | 類型 |
---|---|
payload |
RingBuffer_GetVmo_Result
|
SetActiveChannels
透過位元遮罩設定哪些聲道。
最小有效位元對應管道索引 0。
未在位元遮罩中設定的聲道 (位元為 0) 會停用。
非使用中的通道會向驅動程式庫指示,駕駛人員可能會關閉與
閒置頻道。後續的 SetActiveChannels
將閒置管道設為有效
也可能在 turn_on_delay
中,實際重新啟動頻道播放/擷取。
頻道總數是Format
的number_of_channels
,特別是
PcmFormat
,即這個位元遮罩最多設有 number_of_channels
位元 (上限為 64 個)。
停用一個、多個或所有聲道無法Stop
進入環形緩衝區。
SetActiveChannels
不會變更與
Start
/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。
取決於 driver_transfer_bytes
中所述的緩衝設定。
如果在 SetActiveChannels
之前呼叫 Start
,則所有管道都會預設為有效。
如果在 GetVmo
之前呼叫 Start
,則必須使用 ZX_ERR_BAD_STATE
關閉管道。
如果在這個 RingBuffer 已啟動期間呼叫 Start
,或針對以下情況呼叫 Start
再接通電話或 1 次
通關管道後
傳回錯誤 ZX_ERR_BAD_STATE
。
要求
<空白>
回應
名稱 | 類型 |
---|---|
start_time |
zx/Time
|
停止
停止環形緩衝區。收到此呼叫的回應後,請勿再放置其他位置
系統會再次傳送通知,直到呼叫 Start
為止。
如果在 GetVmo
之前呼叫 Stop
,則必須使用 ZX_ERR_BAD_STATE
關閉管道。
要求
<空白>
回應
<空白>
WatchClockRecoveryPositionInfo
透過掛鉤取得環形緩衝區目前的位置。駕駛必須回應
用戶端第一次 WatchClockRecoveryPositionInfo
通電話,但不會回應後續通話
呼叫用戶端,直到排名資訊與最近的值不同為止
將提供給該用戶端駕駛人不得回應
WatchClockRecoveryPositionInfo
,直到回覆 Start
指令為止。
在 Start
傳回的 start_time
中,位置一律為 0。下一步
進度會按照速率、取樣格式 (和時鐘網域) 指定的速率
如果裝置與 CLOCK_MONOTONIC
分屬不同的時鐘網域)。
如果 clock_recovery_notifications_per_ring
不是 0,驅動程式庫會回覆
最常用於復原時鐘的估計位置
頻率:clock_recovery_notifications_per_ring
。
只有在呼叫 GetVmo
後才能呼叫 WatchClockRecoveryPositionInfo
,因此
已指定 clock_recovery_notifications_per_ring
。
提交時必須提供單調遞增的時間戳記。
驅動程式會關閉通訊協定管道,並顯示 ZX_ERR_BAD_STATE
錯誤 (如果有的話)
已為此客戶設為待處理的 WatchClockRecoveryPositionInfo
。
要求
<空白>
回應
名稱 | 類型 |
---|---|
position_info |
RingBufferPositionInfo
|
WatchDelayInfo
透過懸掛程序取得誤點資訊,駕駛會立即回覆
第一個 WatchDelayInfo
。驅動程式不會回應後續的用戶端
持續撥打 WatchDelayInfo
次,直到延遲資訊從最新回報的內容變更為止。
如果在第一個呼叫完成前第二次呼叫 WatchDelayInfo
,
管道必須關閉,並傳回錯誤 ZX_ERR_BAD_STATE
。
要求
<空白>
回應
名稱 | 類型 |
---|---|
payload |
RingBuffer_WatchDelayInfo_Result
|
StreamConfig
在 fuchsia.hardware.audio/stream_config.fidl 中定義的
如需總覽,請參閱 音訊驅動程式串流介面
淘汰
CreateRingBuffer
用戶端會傳送 CreateRingBuffer
,根據收集到的資訊選取串流格式
驅動程式庫在 GetSupportedFormats
中提供的功能,以及用戶端支援的任何其他項目
才能正常運作ring_buffer
管道可用來控制音訊緩衝區 (如果先前版本)
環形緩衝區建立完成,且目前仍處於使用狀態,驅動程式庫必須關閉
(環形緩衝區) 推出每個管道,並試圖優雅地離開任何進行中的串流。
處理過程中的作業
要求
名稱 | 類型 |
---|---|
format |
Format
|
ring_buffer |
server_end<RingBuffer>
|
GetHealthState
擷取頂層的健康狀態。 未立即回應的駕駛可能會做為驅動程式庫健康狀態不良的跡象。
要求
<空白>
回應
名稱 | 類型 |
---|---|
state |
HealthState
|
GetProperties
擷取頂層靜態屬性。
要求
<空白>
回應
名稱 | 類型 |
---|---|
properties |
StreamProperties
|
GetSupportedFormats
取得指定驅動程式庫支援的格式。當
可使用一個 SupportedFormats
來描述驅動程式庫,驅動程式庫會傳回多個
SupportedFormats
。舉例來說,如果一個 SupportedFormats
允許
擁有 32 位元樣本 (48 KHz) 和 16 位元樣本 (96 KHz),但不包含 32 位元樣本
96KHz 後,驅動程式庫使用 2 SupportedFormats
回覆:<32bits>,<48KHz>>和
<16bits>,<96KHz>>。為求簡單起見,本範例忽略掉率和
每個樣本位元數。如果是驅動程式庫支援 16 或 32 位元樣本
無論 48 或 96 KHz,驅動程式庫都會以 1 SupportedFormats
回應:
<16bits,32bits>,<48KHz,96KHz>>。
要求
<空白>
回應
名稱 | 類型 |
---|---|
supported_formats |
vector<SupportedFormats>[64]
|
SetGain
用戶端更新取得狀態。
要求
名稱 | 類型 |
---|---|
target_state |
GainState
|
SignalProcessingConnect
連線至 SignalProcessing
通訊協定。
如果不支援新的連線要求,系統可能支援多個連線,即
因此連線數量已達到上限。舉例來說,如執行個體 1,
protocol
管道 (非呼叫 SignalProcessingConnect
的管道)
即將打烊,並打 ZX_ERR_ALREADY_BOUND
。
如果完全不支援信號處理,則系統會傳回 protocol
管道 (同樣不是
呼叫 SignalProcessingConnect
所在的管道) 將會關閉
ZX_ERR_NOT_SUPPORTED
號縮寫。
由於這個通訊協定稱為 SignalProcessingConnect
,而不是 Connect
是一組特徵,因此名稱越詳細,您就能明確區分
更加清晰易懂
要求
名稱 | 類型 |
---|---|
protocol |
server_end<fuchsia.hardware.audio.signalprocessing/SignalProcessing>
|
WatchGainState
透過懸掛的取得取得取得狀態。駕駛會回覆第一個 WatchGainState
,且這則回覆必須包含 gain_db
設為 0dB 以下的值。駕駛人
在取得狀態變更前,不會回應後續的用戶端 WatchGainState
呼叫
。
如果在第一個呼叫完成前第二次呼叫 WatchGainState
,則
通訊協定管道必須關閉,並傳回「ZX_ERR_BAD_STATE
」錯誤。
要求
<空白>
回應
名稱 | 類型 |
---|---|
gain_state |
GainState
|
WatchPlugState
透過懸掛的取得取得插頭偵測狀態。駕駛會回覆第一個
用戶端已傳送 WatchPlugState
。驅動程式不會回應後續的用戶端
WatchPlugState
呼叫,直到插頭狀態從最近回報的內容變更為止。
如果在第一個呼叫完成前第二次呼叫 WatchPlugState
,則
通訊協定管道必須關閉,並傳回「ZX_ERR_BAD_STATE
」錯誤。
要求
<空白>
回應
名稱 | 類型 |
---|---|
plug_state |
PlugState
|
StreamConfigConnector
定義於 fuchsia.hardware.audio/stream_config_connector.fidl
如需總覽,請參閱 音訊驅動程式串流介面。
淘汰
連線
連線至 StreamConfig
通訊協定。
這個方法可讓元件在開發主機的控制項之外提供 FIDL。
要求
名稱 | 類型 |
---|---|
protocol |
server_end<StreamConfig>
|
結構
Codec_GetDaiFormats_Response
定義於 fuchsia.hardware.audio/codec.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
formats |
vector<DaiSupportedFormats>[64]
|
無預設 |
Codec_SetDaiFormat_Response
定義於 fuchsia.hardware.audio/codec.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
state |
CodecFormatInfo
|
無預設 |
Composite_CreateRingBuffer_Response
在 fuchsia.hardware.audio/composite.fidl 中定義的
<空白>
Composite_GetDaiFormats_Response
在 fuchsia.hardware.audio/composite.fidl 中定義的
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
dai_formats |
vector<DaiSupportedFormats>[64]
|
無預設 |
Composite_GetRingBufferFormats_Response
在 fuchsia.hardware.audio/composite.fidl 中定義的
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
ring_buffer_formats |
vector<SupportedFormats>[64]
|
無預設 |
Composite_Reset_Response
在 fuchsia.hardware.audio/composite.fidl 中定義的
<空白>
Composite_SetDaiFormat_Response
在 fuchsia.hardware.audio/composite.fidl 中定義的
<空白>
DaiFormat
定義於 fuchsia.hardware.audio/dai_format.fidl
。影格是由 number_of_channels
個樣本組成,樣本數為 bits_per_sample
位元
bits_per_slot
內的資料 (按 frame_format
排列)。如需詳細資訊
數位音訊介面。
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
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
|
資料樣本的時鐘和影格同步輸出在升起或下降時顯示。 如果設為 True,則 Sclk 會在資料和影格同步的上升邊緣發出,即 並在 Sclk 週期中間的那邊對資料進行取樣。 因此,如果為 false,系統會在 sclk 的上升邊緣對資料進行取樣。 |
無預設 |
frame_sync_sclks_offset |
int8
|
影格同步開始與音訊取樣之間的間隔數。 例如,將 I2S 設為 1,而將立體左移設為 0。 |
無預設 |
frame_sync_size |
uint8
|
影格同步的影格數偏高, 舉例來說,如果是將 32 位元運算單元設為 32 的 I2S,TDM 通常會設為 1。 |
無預設 |
DaiSupportedFormats
定義於 fuchsia.hardware.audio/dai_format.fidl
DAI 支援的格式。影格是由 number_of_channels
個樣本組成,
bits_per_slot
位元內的 bits_per_sample
位元資料,按 frame_formats
排列。
支援每個向量中列出的所有值。驅動程式庫不支援部分組合時
可以使用一個 DaiSupportedFormats
來描述,GetDaiSupportedFormats
會傳回多個
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]
|
無預設 |
PcmFormat
定義於 fuchsia.hardware.audio/ring_buffer_format.fidl
支援非壓縮 PCM 音訊的格式。影格由 number_of_channels
個樣本組成
其中包含 valid_bits_per_sample
位元的最重要 (左側對齊) 資料
bytes_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 資源
在 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 嚴格
類型:uint8
定義於 fuchsia.hardware.audio/dai_format.fidl
標準影格格式。
名稱 | 值 | 說明 |
---|---|---|
無 |
1 |
沒有與 PDM 等影格同步的樣本不同影格格式。 |
國際化 |
2 |
格式符合 I2S 規格說明 (左側對齊,2 個聲道,每個 32 位元 管道左側管道上的影格同步會維持在低階,而右側管道的影格同步情形 影格同步變更後會計時一個時鐘循環。 |
STEREO_LEFT |
3 |
靠左對齊 2 個頻道。資料在影格同步時開始,變更時會從低至高時逾時 懸浮微粒影格同步程序必須保持較高的位元 s_per_channel 位元, 對第二個管道的位元 s_per_channel 位元數較低。 |
STEREO_RIGHT |
4 |
靠右對齊 2 個頻道。影格同步程序必須保持較高的位元 s_per_channel 位元, 對第二個管道的位元 s_per_channel 位元數較低。 |
TDM1 |
5 |
靠左對齊、可變的聲道、開始同步影格時資料,從低到位 高掛在螺紋邊緣影格同步必須保持高,達到 1 時鐘週期。 |
TDM2 |
6 |
靠左對齊、可變的聲道,資料在影格結束後開始一個時鐘週期 同步變更時,從低到高時同步套用排球邊緣。影格同步處理作業必須 維持在高點,維持在 1 個時鐘週期。 新增:10
|
TDM3 |
7 |
靠左對齊、可變的聲道,資料在影格結束後開始兩個時鐘週期 同步變更時,從低到高時同步套用排球邊緣。影格同步處理作業必須 維持在高點,維持在 1 個時鐘週期。 新增:10
|
DaiSampleFormat 嚴格
類型:uint8
定義於 fuchsia.hardware.audio/dai_format.fidl
名稱 | 值 | 說明 |
---|---|---|
PDM |
1 |
Pulse Density Modulation 樣本。 |
PCM_SIGNED |
2 |
主機終端出現帶正負號的線性脈衝代碼調變樣本。 |
PCM_UNSIGNED |
3 |
主機終端出現無正負號的線性脈衝代碼調變樣本。 |
PCM_FLOAT |
4 |
按照 IEEE-754 標準編碼的浮點樣本。 |
DeviceType 彈性
類型: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 彈性
類型:uint32
定義於 fuchsia.hardware.audio/common.fidl
名稱 | 值 | 說明 |
---|---|---|
INTERNAL_ERROR |
1 |
驅動程式在執行作業時遇到其他不明錯誤。 |
NOT_SUPPORTED |
2 |
作業未實作、不支援或未啟用。 |
INVALID_ARGS |
3 |
引數無效。 |
WRONG_TYPE |
4 |
執行作業的主體類型錯誤,因此無法執行這項作業。 |
SHOULD_WAIT |
5 |
目前無法執行這項作業,但如果發生錯誤,可能會成功 呼叫端等待呼叫項目達到必要條件。 |
GetVmoError 嚴格
類型:uint32
在 fuchsia.hardware.audio/ring_buffer.fidl 中定義的
名稱 | 值 | 說明 |
---|---|---|
INVALID_ARGS |
1 |
由於引數無效,導致環形緩衝區設定失敗,例如:min_Frames 過大。 |
INTERNAL_ERROR |
2 |
發生內部錯誤,因此無法設定環形緩衝區。 |
PlugDetectabilities 嚴格
類型:uint32
定義於 fuchsia.hardware.audio/plug.fidl
名稱 | 值 | 說明 |
---|---|---|
困難 |
0 |
驅動程式採用有線網路 (一律需接上電源)。 |
CAN_ASYNC_NOTIFY |
1 |
驅動程式能夠以非同步方式,通知插頭狀態變更。 |
取樣格式嚴格
類型:uint8
定義於 fuchsia.hardware.audio/ring_buffer_format.fidl
名稱 | 值 | 說明 |
---|---|---|
PCM_SIGNED |
1 |
主機終端出現帶正負號的線性脈衝代碼調變樣本。 |
PCM_UNSIGNED |
2 |
主機終端出現無正負號的線性脈衝代碼調變樣本。 |
PCM_FLOAT |
3 |
按照 IEEE-754 標準編碼的浮點樣本。 |
資料表
ChannelAttributes
定義於 fuchsia.hardware.audio/ring_buffer_format.fidl
單一管道的規格,包含在整體管道設定內。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
min_frequency |
uint32
|
可保證此管道所發出 (或擷取到) 的頻率下限,以 Hz 為單位。
如果沒有提供 選用。 |
2 |
max_frequency |
uint32
|
可保證此管道所發出 (或擷取到) 的頻率上限,以 Hz 為單位。
如果沒有提供 選用。 |
ChannelSet
定義於 fuchsia.hardware.audio/ring_buffer_format.fidl
管道設定的規格。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
attributes |
vector<ChannelAttributes>[64]
|
描述此管道組合的屬性。
這個向量的大小定義了這個 必填。 |
CodecFormatInfo
定義於 fuchsia.hardware.audio/codec.fidl
轉碼器格式資訊。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
external_delay |
zx/Duration
|
驅動程式的最佳管道評估結果 (以奈秒為單位)
選擇格式的 AdSense 收益對多個實體進行精確同步時
(例如裝置) 時,應考量外部延遲時間。
若未包含 選用。 |
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 |
uint8[16]
|
轉碼器的專屬 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 |
uint8[16]
|
專屬 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 |
uint8[16]
|
驅動程式庫的專屬 ID。 如果沒有提供,則沒有驅動程式庫的專屬 ID。 選用。 新增:20
|
5 |
clock_domain |
ClockDomain
|
此硬體運作時所用時鐘網域的 ID。如果 兩部硬體裝置擁有相同的時鐘網域,其時鐘頻率為 以完全同步的方式運作雖然這兩個時鐘 相同的時差,時鐘位置可能會彼此偏差 任意 (但固定) 的金額Clock_domain 通常來自 整個系統的實體,例如月台公車或全域時鐘樹。 其中有兩個特殊值:
如果網域不是 必填。 新增:20
|
DelayInfo
在 fuchsia.hardware.audio/ring_buffer.fidl 中定義的
延遲驅動程式庫傳回的資訊。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
internal_delay |
zx/Duration
|
驅動程式在硬體內部延遲的最佳預估時間 (針對所選格式) 摘要 「內部」指的是硬體互連網路 (DAI) 和環形之間的硬體 緩衝區 (例如 SoC 音訊子系統),而「外部」是指最遠端的硬體 任何硬體互連網路 (DAI) (例如硬體轉碼器)。 針對播放期間的特定影格,這是驅動程式庫/硬體複製後發生的任何延遲 ,再離開任何硬體互連網路之前。 特定影格在錄製過程中發生延遲,是指進入硬體後發生的任何延遲 請先連線,驅動程式庫/硬體卻才會複製到環形緩衝區。 客戶決定使用規定時,必須將 當中不得包括由所需暫時性緩衝區新增的固有延遲
將資料複製傳入及傳出環形緩衝區,後者包含在 必填。 |
2 |
external_delay |
zx/Duration
|
驅動程式在硬體外部的延遲時間估計值 (針對所選格式) 摘要 「外部」是指任何硬體互連網路 (DAI) 最遠端的硬體 (例如 硬體轉碼器) 和「internal」指的是硬體互連網路之間的硬體 (DAI) 和環形緩衝區 (例如 SoC 音訊子系統)。 客戶決定使用規定時,必須將 如果沒有加入,表示 和 選用。 |
格式
定義於 fuchsia.hardware.audio/ring_buffer_format.fidl
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
pcm_format |
PcmFormat
|
支援非壓縮 PCM 範例的格式。 必填。 |
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
|
驅動程式目前健康狀態良好。 如未加入這個欄位,系統就不會提供健康資訊。 這讓駕駛人在遇到不足的情況時,即發出信號信號 可以自行復原的功能或資源 例如無法關閉 安裝硬體或控制電源子系統。 選用。 |
PcmSupportedFormats
定義於 fuchsia.hardware.audio/ring_buffer_format.fidl
支援非壓縮 PCM 音訊的格式。每個影格都含有一或多個
(number_of_channels) 樣本並連續儲存。分配至 bytes_per_sample
每個樣本 valid_bits_per_sample
位元的資料都儲存在
(靠左對齊) 部分。
支援每個向量中列出的所有值。當
您可使用單一 SupportedFormats
或 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
|
設定時間戳記,藉此追蹤這個結構的其餘欄位提供的資訊。必填。 |
RingBufferProperties
在 fuchsia.hardware.audio/ring_buffer.fidl 中定義的
環形緩衝區的屬性。環形緩衝區建立後,這些值不會改變。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
external_delay |
zx/Duration
|
驅動程式在硬體外部的延遲時間估計值 (針對所選格式)
摘要精確同步時,必須將外部延遲納入考量
在多個實體 (例如裝置) 呈現。
若未包含 淘汰不再需要使用,因為下方的 已移除:20 已淘汰:9
|
2 |
fifo_depth |
uint32
|
驅動程式庫在使用或產生環形時所用暫時緩衝區的大小 (以位元組為單位)
緩衝區內容這是必要項目。
環形緩衝區內容必須按照使用
如要將 在本例中,環形緩衝區資料可能是由硬體直接使用/產生
環形緩衝區資料可改為由符合下列條件的音訊驅動程式庫程式軟體使用/產生:
概念在環形緩衝區和音訊硬體之間在本例中
播放 淘汰不再需要使用,因為下方的 已移除:20 已淘汰:9
|
3 |
needs_cache_flush_or_invalidate |
bool
|
如果設為 true,表示環形緩衝區會在不同的快取一致性網域執行。 因此,用戶端必須確保資料寫入作業已完全清除至主記憶體 (播放期間) 或是環形緩衝區的檢視畫面必須失效, 讀取。這是因為在 Pod 中,某些 CPU 可能有外部硬體 讀取/寫入主記憶體,略過 CPU。 如果設為 False,表示環形緩衝區會在與 因此驅動程式庫不需要清除/使環形緩衝區失效。 請注意,在此情況下,驅動程式庫和用戶端仍必須同步處理資料存取權, 做法是先插入適當的收購圍欄,再讀取及釋放圍欄 讀完所有文字後 必填。 |
4 |
turn_on_delay |
zx/Duration
|
驅動程式的最佳預估硬體輸出時間 (播放期間) 或
接受 (在擷取) 影格中,且 選用。 |
5 |
driver_transfer_bytes |
uint32
|
驅動程式庫/HW 使用或產生作業時使用的暫存緩衝區大小 (以位元組為單位) 環形緩衝區內容 環形緩衝區內容必須按照使用
這些資料傳輸表示環形緩衝區總是處於不安全的區域
以便用戶端寫入/讀取資料這個不安全的緩衝區區域是由
目前位置「P」,另一側則有「安全指標」位置是「S」。產生
環形緩衝區開始,這兩個指標會開始移動。P從位置 0 開始移動
來自 播放期間,用戶端必須在硬體傳輸「之前」寫入資料。拍攝期間 用戶端只能在硬體傳輸「之後」讀取擷取的資料。因此 播放「S」一律比「P」之前;擷取「S」時一律位於「P」之後 播放在啟動環形緩衝區前,用戶端可以安全地寫入任何環形緩衝區位置。是
建議他們編寫至少
啟動環形緩衝區後,用戶端將資料寫入環形並不安全 「P」之間的緩衝區和「S」,因為這代表已使用的資料 ( 消耗)。用戶端可以在「S」和「0/P」之間安全地寫入其他環形緩衝區。
隨著時間過去,驅動程式庫/硬體會在
稍後、「S」環繞在「P」之前環形緩衝區環繞確實如此請注意,區域範圍從 0 到「S」
以及「P」的區域至環形緩衝區的結尾處,會加上
指標「P」以外的任何區域處於穩定狀態和「S」可以放心寫入:
錄音記錄時,只有用戶端能安全讀取環形緩衝區的該部分 不會同時由驅動程式庫/硬體共用。擷取開始前,可能會在擷取開始前 整個環形緩衝區,但驅動程式庫尚未寫入任何內容供用戶端讀取。這個 是指在用戶端啟動環形緩衝區時的環形緩衝區:
擷取作業開始後,驅動程式庫/硬體會取得影格,最終製作第一筆資料
從「0」開始轉移到環形緩衝區。這些傳輸的大小不明,
最大為
驅動程式庫/硬體將至少
之後的「P」會在環形緩衝區「S」的周圍換行確實如此請注意,區域範圍從 0 到「P」
以及「S」中的區域至環形緩衝區的結尾處,會加上
穩定狀態,也就是當程序已包覆環形緩衝區外 (任何外區域) 後 的指標「S」和「P」可以安全閱讀:
硬體與軟體環形緩衝區資料可以直接由硬體使用/產生,即
環形緩衝區資料可改為由符合下列條件的音訊驅動程式庫程式軟體使用/產生:
概念在環形緩衝區和音訊硬體之間在本例中
播放時,
必填。 新增時間:HEAD
|
StreamProperties
在 fuchsia.hardware.audio/stream_config.fidl 中定義的
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
unique_id |
uint8[16]
|
專屬 ID。如果不提供,則串流設定沒有唯一 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 通常來自 整個系統的實體,例如月台公車或全域時鐘樹。 其中有兩個特殊值:
如果網域不是 必填。 |
SupportedFormats
定義於 fuchsia.hardware.audio/ring_buffer_format.fidl
這部裝置支援的所有格式。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
pcm_supported_formats |
PcmSupportedFormats
|
非壓縮 PCM 範例 (含屬性) 的支援格式。 必填。 |
聯合國
Codec_GetDaiFormats_Result 嚴格
定義於 fuchsia.hardware.audio/codec.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Codec_GetDaiFormats_Response
|
|
2 |
err |
zx/Status
|
Codec_SetDaiFormat_Result 嚴格
定義於 fuchsia.hardware.audio/codec.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Codec_SetDaiFormat_Response
|
|
2 |
err |
zx/Status
|
Composite_CreateRingBuffer_Result 嚴格
在 fuchsia.hardware.audio/composite.fidl 中定義的
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Composite_CreateRingBuffer_Response
|
|
2 |
err |
DriverError
|
Composite_GetDaiFormats_Result 嚴格
在 fuchsia.hardware.audio/composite.fidl 中定義的
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Composite_GetDaiFormats_Response
|
|
2 |
err |
DriverError
|
Composite_GetRingBufferFormats_Result 嚴格
在 fuchsia.hardware.audio/composite.fidl 中定義的
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Composite_GetRingBufferFormats_Response
|
|
2 |
err |
DriverError
|
Composite_Reset_Result 嚴格
在 fuchsia.hardware.audio/composite.fidl 中定義的
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Composite_Reset_Response
|
|
2 |
err |
DriverError
|
Composite_SetDaiFormat_Result 嚴格
在 fuchsia.hardware.audio/composite.fidl 中定義的
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Composite_SetDaiFormat_Response
|
|
2 |
err |
DriverError
|
DaiFrameFormat 嚴格
定義於 fuchsia.hardware.audio/dai_format.fidl
標準或自訂影格格式。
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
frame_format_standard |
DaiFrameFormatStandard
|
DAI 中所有樣本的格式類型,如 |
2 |
frame_format_custom |
DaiFrameFormatCustom
|
DAI 中所有樣本的格式類型,以 |
Dai_GetDaiFormats_Result 嚴格
定義於 fuchsia.hardware.audio/dai.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Dai_GetDaiFormats_Response
|
|
2 |
err |
zx/Status
|
Dai_GetRingBufferFormats_Result 嚴格
定義於 fuchsia.hardware.audio/dai.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Dai_GetRingBufferFormats_Response
|
|
2 |
err |
zx/Status
|
RingBuffer_GetVmo_Result 嚴格 資源
在 fuchsia.hardware.audio/ring_buffer.fidl 中定義的
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RingBuffer_GetVmo_Response
|
|
2 |
err |
GetVmoError
|
RingBuffer_SetActiveChannels_Result 嚴格
在 fuchsia.hardware.audio/ring_buffer.fidl 中定義的
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RingBuffer_SetActiveChannels_Response
|
|
2 |
err |
zx/Status
|
RingBuffer_WatchDelayInfo_Result 嚴格
在 fuchsia.hardware.audio/ring_buffer.fidl 中定義的
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
RingBuffer_WatchDelayInfo_Response
|
|
3 |
framework_err |
internal
|
觀測站
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
CLOCK_DOMAIN_EXTERNAL |
4294967295
|
uint32 |
|
CLOCK_DOMAIN_MONOTONIC |
0
|
uint32 |
|
MAX_COUNT_CHANNELS_IN_RING_BUFFER |
64
|
uint32 |
|
MAX_COUNT_CHANNEL_SETS |
64
|
uint32 |
|
MAX_COUNT_DAI_FORMATS |
MAX_COUNT_FORMATS
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_BITS_PER_SAMPLE |
8
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_BITS_PER_SLOT |
8
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_FRAME_FORMATS |
64
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_NUMBER_OF_CHANNELS |
64
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_RATES |
64
|
uint32 |
|
MAX_COUNT_DAI_SUPPORTED_SAMPLE_FORMATS |
4
|
uint32 |
|
MAX_COUNT_FORMATS |
64
|
uint32 |
|
MAX_COUNT_SUPPORTED_BYTES_PER_SAMPLE |
8
|
uint32 |
|
MAX_COUNT_SUPPORTED_NUMBER_OF_CHANNELS |
64
|
uint32 |
|
MAX_COUNT_SUPPORTED_RATES |
64
|
uint32 |
|
MAX_COUNT_SUPPORTED_SAMPLE_FORMATS |
3
|
uint32 |
|
MAX_COUNT_SUPPORTED_VALID_BITS_PER_SAMPLE |
8
|
uint32 |
|
MAX_DAI_UI_STRING_SIZE |
256
|
uint32 |
|
MAX_UI_STRING_SIZE |
256
|
uint32 |
|
UNIQUE_ID_SIZE |
16
|
uint32 |
ALIASES
名稱 | 值 | 說明 |
---|---|---|
ClockDomain |
uint32 |
|
ElementId |
uint64 |
|
TopologyId |
uint64 |
服務
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
|
頻道 |
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
|
頻道 |