通訊協定
連接線
定義於 fuchsia.hardware.audio.signalprocessing/connector.fidl
如要瞭解信號處理通訊協定總覽,請參閱「音訊信號處理」。
SignalProcessingConnect
連線至 SignalProcessing 通訊協定。
系統可能會支援多個連線。如果系統不支援新的連線要求 (例如已建立連線數量上限,例如一個),則 protocol 管道 (不是呼叫 SignalProcessingConnect 的管道) 會以 ZX_ERR_ALREADY_BOUND 墓誌銘關閉。如果完全不支援訊號處理,系統就會關閉 protocol 管道 (同樣地,不是呼叫 SignalProcessingConnect 的管道),並顯示 ZX_ERR_NOT_SUPPORTED 墓誌銘。這個方法命名為 SignalProcessingConnect 而不是 Connect,是因為這個通訊協定旨在組成,因此較詳細的名稱可區分並提高清楚度。
要求
| 名稱 | 類型 |
|---|---|
protocol |
server_end:SignalProcessing
|
讀取者
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
複合音訊驅動程式必須使用這個通訊協定,其他音訊驅動程式庫程式類型 (Codec、Dai、StreamConfig) 則不支援。
如需總覽,請參閱訊號處理介面。
GetElements
傳回支援的處理元素向量。 這個向量必須包含一或多個處理元素。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Reader_GetElements_Result
|
GetTopologies
傳回支援拓撲的向量。
這個向量必須包含一或多個拓撲。
如果傳回多個拓撲,用戶端可以呼叫 SetTopology,從清單中選取任一拓撲。如果只傳回一個拓撲,仍可呼叫 SetTopology,但不會造成任何變更。
每個元素都必須至少包含在一個拓撲中,但不一定要包含在每個拓撲中。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Reader_GetTopologies_Result
|
WatchElementState
透過懸掛式取得作業,取得處理元素狀態。
對於指定的 processing_element_id,驅動程式庫會立即回覆用戶端傳送的第一個 WatchElementState。除非 ElementState 的任何部分已變更,否則驅動程式不會回應後續的用戶端 WatchElementState 呼叫。processing_element_id
如果 processing_element_id 與 GetElements 傳回的 ElementId 不符,驅動程式會關閉通訊協定管道,並顯示 ZX_ERR_INVALID_ARGS 錯誤。
如果這個方法在已有待處理的 WatchElementState 適用於這個用戶端和 processing_element_id 時再次呼叫,驅動程式會關閉通訊協定管道,並顯示 ZX_ERR_BAD_STATE 錯誤。
要求
| 名稱 | 類型 |
|---|---|
processing_element_id |
ElementId
|
回應
| 名稱 | 類型 |
|---|---|
state |
ElementState
|
WatchTopology
透過懸掛式 GET 取得目前的拓撲。
系統會立即回覆每位顧客傳送的第一則 WatchTopology。訊號處理拓撲變更前,驅動程式不會回應來自該用戶端的後續 WatchTopology 呼叫;這是 SetTopology 呼叫的結果。
如果這個方法在已有待處理的 WatchTopology 時再次呼叫,驅動程式會關閉通訊協定管道,並顯示 ZX_ERR_BAD_STATE 錯誤。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Reader_WatchTopology_Result
|
SignalProcessing
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
複合音訊驅動程式必須使用這個通訊協定,其他音訊驅動程式庫程式類型 (Codec、Dai、StreamConfig) 則不支援。
如需總覽,請參閱訊號處理介面。
GetElements
傳回支援的處理元素向量。 這個向量必須包含一或多個處理元素。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Reader_GetElements_Result
|
GetTopologies
傳回支援拓撲的向量。
這個向量必須包含一或多個拓撲。
如果傳回多個拓撲,用戶端可以呼叫 SetTopology,從清單中選取任一拓撲。如果只傳回一個拓撲,仍可呼叫 SetTopology,但不會造成任何變更。
每個元素都必須至少包含在一個拓撲中,但不一定要包含在每個拓撲中。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Reader_GetTopologies_Result
|
SetElementState
控制 processing_element_id 指定的處理元素,這是 GetElements 傳回的專屬 ElementId。在呼叫 SetElementState 時指定的 state 是 SettableElementState。這是 ElementState 的子集,因為用戶端只能觀察 WatchElementState 傳回的部分欄位 (例如 processing_delay 或 plug_state),無法設定這些欄位。
如果 processing_element_id 不符合 GetElements 傳回的已知 ElementId,或 state 對於元素無效,則傳回 ZX_ERR_INVALID_ARGS。這包括違反本通訊協定中指定的任何規則。
示例:state 指定應停止或略過元素,但對應元素未指定 (或明確設為 false) can_stop 或 can_bypass。state 包含 type_specific 項目,但該 SettableTypeSpecificElementState 與對應於 processing_element_id 的元素 ElementType 不符。
state 會變更 EQUALIZER 元素的 EqualizerBandState (目前為止一切正常),但會指定變更 frequency,而這個元素並未在 supported_controls 中設定 CAN_CONTROL_FREQUENCY。state 會為 GAIN 元素指定 GainElementState,且該元素具有 gain 值,該值為負無限大、NAN 或超出 Element 的指定 min_gain, max_gain 範圍。
呼叫端可能會在呼叫 SignalProcessing 通訊協定的方法時,穿插呼叫其他驅動程式庫通訊協定。部分非 SignalProcessing 設定變更可能需要重新協商驅動程式庫狀態,特定元素才能接收 SetElementState。舉例來說,如果 DaiFormat 發生變更,SetElementState 變更 AGL 元素的參數可能就不需要重新協商驅動程式庫狀態,因為變更增益參數通常不會改變支援的音訊格式集。相較之下,在相同的 DaiFormat 變更後,於 CONNECTION_POINT 元素上呼叫 SetElementState 前,可能需要重新建立驅動程式庫狀態,因為格式變更可能會使先前針對拓撲另一部分進行的 GetDaiFormats 通訊協定呼叫傳回的一組支援格式失效。
驅動程式庫有責任判斷何時需要重新協商。如有需要,相關的 SetElementState 呼叫必須傳回 ZX_ERR_BAD_STATE,且用戶端必須完全關閉通訊協定管道,以便重新開始通訊協定協商。在任何非 SignalProcessing 通訊協定呼叫之前,用戶端必須重新叫用傳回 ZX_ERR_BAD_STATE 的 SetElementState 呼叫。
要求
| 名稱 | 類型 |
|---|---|
processing_element_id |
ElementId
|
state |
SettableElementState
|
回應
| 名稱 | 類型 |
|---|---|
payload |
SignalProcessing_SetElementState_Result
|
SetTopology
指定 topology_id,與 GetTopologies 傳回的向量中的項目相符,即可設定目前有效的拓撲。WatchTopology 回應會傳達目前有效的拓撲。如要變更啟用的拓撲,用戶端會使用 SetTopology。
如果 GetTopologies 只傳回一個 Topology,則 SetTopology 為選用項目,不會產生任何影響。
如果 GetTopologies 傳回的 topologies 中沒有指定的 topology_id,這項呼叫就會失敗並傳回 ZX_ERR_INVALID_ARGS。
SetTopology 可能會在非 SignalProcessing 通訊協定呼叫之前或之後呼叫。如果在非 SignalProcessing 通訊協定呼叫後呼叫,則 SetTopology 可能會傳回 ZX_ERR_BAD_STATE,表示作業無法繼續,必須重新協商驅動程式庫狀態。如要進一步探討,請參閱 SetElementState。
要求
| 名稱 | 類型 |
|---|---|
topology_id |
TopologyId
|
回應
| 名稱 | 類型 |
|---|---|
payload |
SignalProcessing_SetTopology_Result
|
WatchElementState
透過懸掛式取得作業,取得處理元素狀態。
對於指定的 processing_element_id,驅動程式庫會立即回覆用戶端傳送的第一個 WatchElementState。除非 ElementState 的任何部分已變更,否則驅動程式不會回應後續的用戶端 WatchElementState 呼叫。processing_element_id
如果 processing_element_id 與 GetElements 傳回的 ElementId 不符,驅動程式會關閉通訊協定管道,並顯示 ZX_ERR_INVALID_ARGS 錯誤。
如果這個方法在已有待處理的 WatchElementState 適用於這個用戶端和 processing_element_id 時再次呼叫,驅動程式會關閉通訊協定管道,並顯示 ZX_ERR_BAD_STATE 錯誤。
要求
| 名稱 | 類型 |
|---|---|
processing_element_id |
ElementId
|
回應
| 名稱 | 類型 |
|---|---|
state |
ElementState
|
WatchTopology
透過懸掛式 GET 取得目前的拓撲。
系統會立即回覆每位顧客傳送的第一則 WatchTopology。訊號處理拓撲變更前,驅動程式不會回應來自該用戶端的後續 WatchTopology 呼叫;這是 SetTopology 呼叫的結果。
如果這個方法在已有待處理的 WatchTopology 時再次呼叫,驅動程式會關閉通訊協定管道,並顯示 ZX_ERR_BAD_STATE 錯誤。
要求
<EMPTY>
回應
| 名稱 | 類型 |
|---|---|
payload |
Reader_WatchTopology_Result
|
STRUCTS
EdgePair
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
處理元素之間的邊緣配對,用於指定音訊如何依序流經一組處理元素排列方式。
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
processing_element_id_from |
ElementId
|
無預設值 | |
processing_element_id_to |
ElementId
|
無預設值 |
Reader_GetElements_Response
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
processing_elements |
vector<Element>:64
|
無預設值 |
Reader_GetTopologies_Response
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
topologies |
vector<Topology>:64
|
無預設值 |
Reader_WatchTopology_Response
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 欄位 | 類型 | 說明 | 預設 |
|---|---|---|---|
topology_id |
TopologyId
|
無預設值 |
SignalProcessing_SetElementState_Response
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
<EMPTY>
SignalProcessing_SetTopology_Response
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
<EMPTY>
ENUMS
ElementType flexible
類型:uint32
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 名稱 | 值 | 說明 |
|---|---|---|
VENDOR_SPECIFIC |
1 |
廠商專屬。任何後續類型定義未涵蓋的處理元素類型。 |
CONNECTION_POINT |
3 |
控制管道通道的混合和路徑。 |
GAIN |
4 |
增益控制,又稱音量控制。 |
AUTOMATIC_GAIN_CONTROL |
5 |
自動增益控制。 無論輸入內容如何變化,都會自動維持適當的訊號強度。 |
AUTOMATIC_GAIN_LIMITER |
6 |
自動增益限制器。 自動將訊號強度維持在指定等級以下。 低於此層級的輸入內容不受影響,高於此層級的輸入內容則會衰減。 |
DYNAMICS |
7 |
改變信號的動態範圍,例如壓縮動態範圍。 |
關閉 |
8 |
。 |
DELAY |
9 |
延遲。 |
EQUALIZER |
10 |
等化器。 |
SAMPLE_RATE_CONVERSION |
11 |
取樣率轉換。 |
RING_BUFFER |
13 |
環形緩衝區。音訊資料的來源或接收器,透過跨程序循環緩衝區傳輸。這是三種可啟動/結束處理管道的元素類型之一。
如果驅動程式包含這類型的元素,就必須支援該元素 ID 的複合方法 |
DAI_INTERCONNECT |
14 |
數位音訊介面互連。這是三種可啟動/結束處理管道的元素類型中的第二種。
如果驅動程式包含這類型的元素,就必須支援該元素 ID 的複合方法 |
PACKET_STREAM |
15 |
封包串流。音訊資料的來源或接收器,透過離散封包傳輸。這是三種可啟動/結束處理管道的元素類型中的第三種。
如果驅動程式包含這類型的元素,就必須支援該元素 ID 的複合方法 新增:HEAD
|
EqualizerBandType flexible
類型:uint64
定義於 fuchsia.hardware.audio.signalprocessing/equalizer.fidl
等化器頻段類型。
| 名稱 | 值 | 說明 |
|---|---|---|
尖峰 |
1 |
|
NOTCH |
2 |
窄頻拒絕可大幅衰減 |
LOW_CUT |
3 |
使用選用的 |
HIGH_CUT |
4 |
降低高於 |
LOW_SHELF |
5 |
將增益值調低至 |
HIGH_SHELF |
6 |
增益值超過 |
GainDomain 彈性
類型:uint8
定義於 fuchsia.hardware.audio.signalprocessing/gain.fidl
增益的硬體網域,例如 ANALOG。
| 名稱 | 值 | 說明 |
|---|---|---|
數位 |
1 |
處理元素增益會在數位網域中套用。 |
ANALOG |
2 |
處理元素增益會套用至類比網域。 |
混合 |
3 |
處理元件增益會使用數位和類比硬體混合。 |
GainType strict
類型:uint8
定義於 fuchsia.hardware.audio.signalprocessing/gain.fidl
取得表示法類型。
| 名稱 | 值 | 說明 |
|---|---|---|
分貝 |
1 |
以分貝為單位指定增益,例如 -103.0dB 或 +3.2dB。 |
PERCENT |
2 |
增幅以百分比表示,例如 10.0% 或 80.5%。 |
LevelType strict
類型:uint8
定義於 fuchsia.hardware.audio.signalprocessing/dynamics.fidl
層級類型。
| 名稱 | 值 | 說明 |
|---|---|---|
尖峰 |
1 |
以峰值指定位準增益。 |
RMS |
2 |
指定為 RMS 的等級。 |
PlugDetectCapabilities 彈性
類型:uint32
定義於 fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
互連網路的插頭偵測功能。
| 名稱 | 值 | 說明 |
|---|---|---|
有線 |
0 |
互連網路已透過有線連接 (會一直插上電源)。 |
CAN_ASYNC_NOTIFY |
1 |
互連網路可以拔除/插入,並以非同步方式通知插頭狀態變更。 |
ThresholdType strict
類型:uint8
定義於 fuchsia.hardware.audio.signalprocessing/dynamics.fidl
門檻類型。
| 名稱 | 值 | 說明 |
|---|---|---|
高於 |
1 |
在超過門檻時套用動態處理。 |
BELOW |
2 |
在門檻以下套用動態處理。 |
TABLES
DaiInterconnect
定義於 fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
Element 的參數 (含 ElementType DAI_INTERCONNECT)。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
plug_detect_capabilities |
PlugDetectCapabilities
|
插座偵測功能。 必填。 |
DaiInterconnectElementState
定義於 fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
Element 的狀態 (包含 ElementType DAI_INTERCONNECT)。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
plug_state |
PlugState
|
這個 DAI 互連網路的插頭狀態。 必填。 |
2 |
external_delay |
zx/Duration
|
驅動程式對這個 DAI 互連以外外部延遲的最佳估計值,因為管道目前已設定。 用戶端判斷最低前置時間 (播放期間) 和最低擷取延遲時間 (擷取期間) 的需求時,必須將 如果未包含,則 選用。如要指定,必須為非負數。 |
動力學
定義於 fuchsia.hardware.audio.signalprocessing/dynamics.fidl
Element 等於 DYNAMICS 的 type 參數。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
bands |
vector<DynamicsBand>:64
|
這項通訊協定中的 此為必要項目。至少須包含一個項目。 |
2 |
supported_controls |
DynamicsSupportedControls
|
這個處理元素支援的控制項 (即透過呼叫 選用。 |
DynamicsBand
定義於 fuchsia.hardware.audio.signalprocessing/dynamics.fidl
Dynamics 元素樂團的參數。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
uint64
|
這個頻帶的專屬 ID,僅須在對應的 必填。 |
DynamicsBandState
定義於 fuchsia.hardware.audio.signalprocessing/dynamics.fidl
Element 內單一頻帶的狀態,其中 type 等於 DYNAMICS。
即使用戶端無法變更值 (也就是說,位元未在 supported_controls 中設定),WatchElementState 仍可能會傳回控制頻帶欄位。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
uint64
|
樂團的專屬 ID。必須與 |
2 |
min_frequency |
uint32
|
頻帶的最低頻率 (以 Hz 為單位)。 這個欄位可以是 0,例如單一頻帶動態處理,可指定 (連同 max_frequency) 頻帶為全範圍。 |
3 |
max_frequency |
uint32
|
頻帶的最高頻率 (以 Hz 為單位)。 舉例來說,這個欄位可能是奈奎斯特頻率,適用於單一頻帶動態處理,可指定 (連同 min_frequency) 頻帶為全範圍。 必填。 |
4 |
threshold_db |
float32
|
動態主處理作業的起始值 (以輸入 dB 為準,受 此為必要項目。必須是有限值。 |
5 |
threshold_type |
ThresholdType
|
動態處理作業會套用
|
6 |
ratio |
float32
|
高於或低於膝部區域的輸入/輸出 dB 比率 (請參閱 此為必要項目。必須是有限值。 |
7 |
knee_width_db |
float32
|
膝部區域的寬度,以輸入 dB 為單位。如有此值,不得為負數。
如未納入,膝蓋區域的寬度將未指定。
值為零代表「硬」膝蓋,值越大代表「軟」膝蓋。
膝蓋位於 選用。如果指定,則必須是有限值。
如果未在 |
8 |
attack |
zx/Duration
|
攻擊時間。 如未加入,則攻擊時間未指定。 選用。如要指定,必須為非負數。
如果未在 |
9 |
release |
zx/Duration
|
發布時間。 如果未納入,發布時間則未指定。 選用。如要指定,必須為非負數。
如果未在 |
10 |
output_gain_db |
float32
|
以分貝為單位輸出 (又稱補償或後) 增益值。如果未納入,則輸出增益未指定。 選用。如果指定,則必須是有限值。
如果未在 |
11 |
input_gain_db |
float32
|
以分貝為單位輸入輸入 (又稱前置) 增益值。 如果未加入,則輸入增益未指定。 選用。如果指定,則必須是有限值。
如果未在 |
12 |
level_type |
LevelType
|
音量類型 (峰值或 RMS)。 如未納入,則為未指定等級類型。 選用。
如果未在 |
13 |
lookahead |
zx/Duration
|
預先查看時間。 如未加入,則預測時間未指定。 選用。如要指定,必須為非負數。
如果未在 |
14 |
linked_channels |
bool
|
連結的聲道 (又稱「立體聲連結」,適用於 2 管道系統)。 如果未納入,連結的頻道選項會未指定。 如為 true,動態回應會套用至所有管道。 如果為 false,每個管道都會有自己的動態回應。 選用。
如果未在 |
DynamicsElementState
定義於 fuchsia.hardware.audio.signalprocessing/dynamics.fidl
Element 等於 DYNAMICS 的 type 狀態。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
band_states |
vector<DynamicsBandState>:64
|
每個 ID 都必須與 此為必要項目。至少須包含一個項目。 |
元素
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
ElementId
|
這個元素的專屬 ID。這個 ID 的範圍僅限於 必填。 |
2 |
type |
ElementType
|
處理元素類型。 必填。 |
3 |
type_specific |
TypeSpecificElement
|
處理元素的類型專屬參數。
|
5 |
description |
string:256
|
如果包含,則為處理元素的文字說明。 選用。如有提供,不得留空。 |
6 |
can_stop |
bool
|
如為 true,處理元素可透過 選用。 |
7 |
can_bypass |
bool
|
如為 true,即可透過 選用。 |
ElementState
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
元素目前的狀態,由驅動程式庫傳回。請注意,這個表格包含 SettableElementState 中沒有的欄位,因為這些欄位無法由用戶變更。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
type_specific |
TypeSpecificElementState
|
處理元素的類型專屬狀態參數。 如果停用這個處理元素,並提供類型專屬狀態,則類型專屬狀態僅供參考 (例如停止的元素狀態,如果要在不提供額外取代狀態資訊的情況下重新啟動)。 DAI_INTERCONNECT、DYNAMICS、EQUALIZER、GAIN 和 VENDOR_SPECIFIC 元素皆須提供這項資訊。 如果為 AUTOMATIC_GAIN_CONTROL、AUTOMATIC_GAIN_LIMITER、 CONNECTION_POINT、DELAY、MUTE、PACKET_STREAM、RING_BUFFER 或 SAMPLE_RATE_CONVERSION 類型的元素指定,則為無效。 |
4 |
vendor_specific_data |
vector<uint8>:4096
|
如果包含,則為八位元組的不透明物件,用於將供應商專屬資訊從驅動程式庫傳達至 選用 (即使元素類型不是 VENDOR_SPECIFIC,也可以使用)。 新增:27
|
5 |
started |
bool
|
這個處理元素的啟動/停止狀態。 如為 true,系統會啟動與元素相關聯的硬體。如果為 false,則會停止。 如果對應的 停止處理的元素不會提供其抽象功能。 停止的元素不會傳送音訊資料。 必填。 |
6 |
bypassed |
bool
|
這個處理元素的略過狀態。 如為 true,系統會略過與元素相關聯的硬體。如果設為 False 或未提供,系統就不會略過相關聯的硬體。 根據預設,系統不會略過處理元素。如果對應的 略過的元素不會影響音訊在拓撲中的流動。 音訊會通過已略過的元素,且不會變更。 選用。 |
7 |
turn_on_delay |
zx/Duration
|
如果包含此欄位,則表示驅動程式對元素硬體從 如果未考量 選用。如要指定,必須為非負數。 |
8 |
turn_off_delay |
zx/Duration
|
如果包含此屬性,則為驅動程式庫對元素硬體從 如果未考量 選用。如要指定,必須為非負數。 |
9 |
processing_delay |
zx/Duration
|
如果包含此項目,則為驅動程式根據目前設定 (包括 時間敏感型用戶在判斷 (播放) 最短前置時間和最短擷取延遲時間的需求時,應將這個值納入考量。 如果是 選用。如要指定,必須為非負數。 |
等化器
定義於 fuchsia.hardware.audio.signalprocessing/equalizer.fidl
Element 等於 EQUALIZER 的 type 參數。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
bands |
vector<EqualizerBand>:64
|
這個通訊協定中的等化器是由多個頻帶建構而成,每個頻帶都會在這裡和 此為必要項目。至少須包含一個項目。 |
2 |
supported_controls |
EqualizerSupportedControls
|
這個等化器支援的控制項 (即透過 選用。 |
3 |
can_disable_bands |
bool
|
如果包含這個屬性且值為 true,則可透過 選用。 |
4 |
min_frequency |
uint32
|
所有頻帶的最低頻率 (以 Hz 為單位)。 必填。 |
5 |
max_frequency |
uint32
|
所有頻帶的最高頻率,以 Hz 為單位。 必填。 |
6 |
max_q |
float32
|
所有頻帶的最大品質因數,通常以「Q」表示。 這表示頻率轉換的範圍有多窄。Q 值越高,代表凹口/尖峰越窄,且剪切/擱架越陡峭。必須為正數。 選用。如果指定,必須是有限值。 |
7 |
min_gain_db |
float32
|
以 dB 為單位的最低增益。 如果 |
8 |
max_gain_db |
float32
|
以 dB 為單位的最大增益。 如果 |
EqualizerBand
定義於 fuchsia.hardware.audio.signalprocessing/equalizer.fidl
等化器頻段的參數。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
uint64
|
這個樂團的專屬 ID。只能在對應的 必填。 |
EqualizerBandState
定義於 fuchsia.hardware.audio.signalprocessing/equalizer.fidl
Element 內單一頻帶的狀態,其中 type 等於 EQUALIZER。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
uint64
|
樂團的專屬 ID。必須與 必填。 |
2 |
type |
EqualizerBandType
|
錶帶類型。 必要元素。如果是對 |
3 |
frequency |
uint32
|
頻帶的中心頻率。 必要元素。如果這是對 |
4 |
q |
float32
|
品質因素,通常以「Q」表示。 表示頻率轉換的幅度。Q 值越高,代表凹口/峰值越窄,且切口/架子越陡峭。必須為正數。 選用。
如果用於 |
5 |
gain_db |
float32
|
以 dB 為單位表示增益。 對 |
6 |
enabled |
bool
|
啟用/停用頻帶。 如果停用,音訊仍會通過等化器,但這個頻段不會有任何作用。 如果 將 選用。 |
EqualizerElementState
定義於 fuchsia.hardware.audio.signalprocessing/equalizer.fidl
Element 的狀態,其中 type 等於 EQUALIZER。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
2 |
band_states |
vector<EqualizerBandState>:64
|
這個等化器處理元素中各頻帶的狀態。
此為必要項目。至少須包含一個項目。 |
增重
定義於 fuchsia.hardware.audio.signalprocessing/gain.fidl
Element 等於 GAIN 的 type 參數。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
type |
GainType
|
指定增益的數字代表的意義,例如百分比。 必填。 |
2 |
domain |
GainDomain
|
如果納入,增益會套用至指定的 選用。 |
3 |
min_gain |
float32
|
此為必要項目。必須是有限值。 |
4 |
max_gain |
float32
|
以 此為必要項目。必須是有限值。 |
5 |
min_gain_step |
float32
|
增益的最小步階,格式為 此為必要項目。必須是有限值。 |
GainElementState
定義於 fuchsia.hardware.audio.signalprocessing/gain.fidl
Element 等於 GAIN 的 type 狀態。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
gain |
float32
|
目前增益,格式為 此為必要項目。必須是有限值。 |
PlugState
定義於 fuchsia.hardware.audio.signalprocessing/dai_interconnect.fidl
互連網路的插頭狀態。
如果驅動程式庫回報的 plug_detect_capabilities 等於 HARDWIRED,則驅動程式庫應只在第一次為特定互連呼叫 WatchElementState 時做出回應,並將 plugged 設為 true,且將 plug_state_time 設為時間「0」。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
plugged |
bool
|
指出互連是否已插入。 必填 |
2 |
plug_state_time |
zx/Time
|
指出目前 必填。 |
SettableElementState
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
可由用戶端設定的處理元素狀態。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
type_specific |
SettableTypeSpecificElementState
|
用戶端可設定的類型專屬元素狀態參數。 如果元素已停用,這個欄位 (以及 SettableElementState 中的所有其他欄位) 的變更純粹是資訊性質,必須等到元素啟用後才會生效。 如未設定,系統會保留元素先前的 DYNAMICS、EQUALIZER、GAIN 和 VENDOR_SPECIFIC 類型為選填。 如果為 AUTOMATIC_GAIN_CONTROL、AUTOMATIC_GAIN_LIMITER、CONNECTION_POINT、 DAI_INTERCONNECT、DELAY、MUTE、PACKET_STREAM、RING_BUFFER 或 SAMPLE_RATE_CONVERSION 元素指定,則為無效。 |
2 |
vendor_specific_data |
vector<uint8>:4096
|
如有提供,則為八位元組的不透明物件,用於將廠商專屬資訊從用戶端傳達至音訊驅動程式庫。這項功能適用於任何元素類型,不限於 VENDOR_SPECIFIC 元素。 選用。 新增:27
|
3 |
started |
bool
|
是否要啟動或停止這個處理元素。 停止處理的元素不會提供其抽象功能。 具體來說,音訊資料不會流經已停止的元素。 如果對應的 選用。 |
4 |
bypassed |
bool
|
是否要略過這個處理元素。 略過的元素不會影響音訊在拓撲中的流動。 具體來說,音訊會通過略過的元素,且不會有任何變化。 如果對應的 選用。 |
拓撲學
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Topology 會指定處理元素在硬體內的排列方式。
| 序數 | 欄位 | 類型 | 說明 |
|---|---|---|---|
1 |
id |
TopologyId
|
這個拓撲的專屬 ID。這個 ID 的範圍僅限於 必填。 |
2 |
processing_elements_edge_pairs |
vector<EdgePair>:64
|
處理元素邊緣配對的向量,用於指定元素之間的連線。 處理元素會透過邊緣配對連接,形成多元素管道。 拓撲可包含多個不同的管道:拓撲不一定要是單一互連序列 (例如拓撲 A->B->C D->E->F 是有效的)。 如要定義多個可能的設定,讓用戶端可以選取其中一種,請在 如果裝置支援多個拓撲項目,則每個特定拓撲不一定要包含所有元素。不過,每個元素都必須包含在至少一個拓撲中。 在每個拓撲中,每個連線元素序列都必須以 DAI_INTERCONNECT、RING_BUFFER 或 PACKET_STREAM 類型的元素開頭,並以 DAI_INTERCONNECT、RING_BUFFER 或 PACKET_STREAM 類型的元素結尾。 DAI_INTERCONNECT 元素可啟動或結束元素序列,但 RING_BUFFER 或 PACKET_STREAM 元素必須啟動或結束元素序列。如果 EdgePair 中列出某個 RING_BUFFER 或 PACKET_STREAM 元素為 在特殊情況下,DAI_INTERCONNECT 元素可以參照自身,也就是 EdgePair 可能包含相等的 此為必要項目。至少須包含一個項目。 |
VendorSpecific
定義於 fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl
Element 等於 VENDOR_SPECIFIC 的 type 參數。
| 序數 | 欄位 | 類型 | 說明 |
|---|
VendorSpecificState
定義於 fuchsia.hardware.audio.signalprocessing/vendor_specific.fidl
Element 等於 VENDOR_SPECIFIC 的 type 狀態。
| 序數 | 欄位 | 類型 | 說明 |
|---|
工會
Reader_GetElements_Result strict
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Reader_GetElements_Response
|
|
2 |
err |
zx/Status
|
Reader_GetTopologies_Result strict
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Reader_GetTopologies_Response
|
|
2 |
err |
zx/Status
|
Reader_WatchTopology_Result strict
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
Reader_WatchTopology_Response
|
|
3 |
framework_err |
internal
|
SettableTypeSpecificElementState flexible
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
用戶端可設定的類型專屬處理元素狀態。
處理元素控制項的類型是由這個聯集提供的參數類型定義。這個類型專屬變體必須與對應 Element 中的 ElementType 項目相符。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
vendor_specific |
VendorSpecificState
|
|
2 |
gain |
GainElementState
|
|
3 |
equalizer |
EqualizerElementState
|
|
4 |
dynamics |
DynamicsElementState
|
SignalProcessing_SetElementState_Result strict
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
SignalProcessing_SetElementState_Response
|
|
2 |
err |
zx/Status
|
SignalProcessing_SetTopology_Result strict
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
response |
SignalProcessing_SetTopology_Response
|
|
2 |
err |
zx/Status
|
TypeSpecificElement flexible
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
Element 的類型專屬參數。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
vendor_specific |
VendorSpecific
|
|
2 |
gain |
Gain
|
|
3 |
equalizer |
Equalizer
|
|
4 |
dynamics |
Dynamics
|
|
6 |
dai_interconnect |
DaiInterconnect
|
TypeSpecificElementState flexible
定義於 fuchsia.hardware.audio.signalprocessing/signal_processing.fidl
驅動程式庫傳回的類型專屬處理元素狀態。處理元素控制項的類型是由這個聯集提供的參數類型定義。這個類型專屬變體必須與對應 Element 中的 ElementType 項目相符。
| 序數 | Variant | 類型 | 說明 |
|---|---|---|---|
1 |
vendor_specific |
VendorSpecificState
|
|
2 |
gain |
GainElementState
|
|
3 |
equalizer |
EqualizerElementState
|
|
4 |
dynamics |
DynamicsElementState
|
|
6 |
dai_interconnect |
DaiInterconnectElementState
|
BITS
DynamicsSupportedControls 彈性
類型:uint64
定義於 fuchsia.hardware.audio.signalprocessing/dynamics.fidl
支援的「Dynamics」控制選項。
如果包含,代表動態處理頻帶參數的每個位元都可以使用 SetElementState 變更。
| 名稱 | 值 | 說明 |
|---|---|---|
KNEE_WIDTH |
1 | 如果已設定, |
ATTACK |
2 | 如果已設定, |
發行 |
4 | 如果已設定, |
OUTPUT_GAIN |
8 | 如果已設定, |
INPUT_GAIN |
16 | 如果已設定, |
LOOKAHEAD |
32 | 如果已設定, |
LEVEL_TYPE |
64 | 如果已設定, |
LINKED_CHANNELS |
128 | 如果已設定, |
THRESHOLD_TYPE |
256 | 如果已設定, |
EqualizerSupportedControls flexible
類型:uint64
定義於 fuchsia.hardware.audio.signalprocessing/equalizer.fidl
Equalizer 中指定的等化器支援控制項。
| 名稱 | 值 | 說明 |
|---|---|---|
CAN_CONTROL_FREQUENCY |
1 | 如果已設定, |
CAN_CONTROL_Q |
2 | 如果已設定, |
SUPPORTS_TYPE_PEAK |
4 | 如果設定這項政策, |
SUPPORTS_TYPE_NOTCH |
8 | 如果設定這項政策, |
SUPPORTS_TYPE_LOW_CUT |
16 | 如果設定這項政策, |
SUPPORTS_TYPE_HIGH_CUT |
32 | 如果設定這項政策, |
SUPPORTS_TYPE_LOW_SHELF |
64 | 如果設定, |
SUPPORTS_TYPE_HIGH_SHELF |
128 | 如果設定這項政策, |
常數
| 名稱 | 值 | 類型 | 說明 |
|---|---|---|---|
| MAX_BYTES_ELEMENT_VENDOR_SPECIFIC |
4096
|
uint32 |
新增:27
|
| MAX_COUNT_DYNAMICS_BANDS |
64
|
uint32 |
|
| MAX_COUNT_EQUALIZER_BANDS |
64
|
uint32 |
|
| MAX_COUNT_PROCESSING_ELEMENTS |
64
|
uint32 |
|
| MAX_COUNT_PROCESSING_ELEMENTS_EDGE_PAIRS |
64
|
uint32 |
|
| MAX_COUNT_TOPOLOGIES |
64
|
uint32 |
|
| MAX_STRING_SIZE |
256
|
uint32 |
ALIASES
| 名稱 | 值 | 說明 |
|---|---|---|
| ElementId |
uint64 |
|
| TopologyId |
uint64 |
服務
ConnectorService
定義於 fuchsia.hardware.audio.signalprocessing/connector.fidl
| 名稱 | 類型 | 傳輸 |
|---|---|---|
| 連接器 |
fuchsia.hardware.audio.signalprocessing/Connector
|
版本 |