專家
處理器
定義於 fuchsia.audio.effects/processor.fidl
音訊效果處理器。使用一或多個輸入串流,產生一或多個輸出串流。建立時,這個通訊協定必須連結至 fuchsia.audio.effects.Processor/ProcessorConfiguration,其定義處理器的輸入和輸出串流。
程序
處理指定的影格數量。這會使用每個 ProcessorConfiguration.inputs[i]
的 num_frames
,並在每個 ProcessorConfiguration.outputs[i]
中產生相等的影格數量。
執行模型
所有輸入和輸出的影格速率都必須相同。如此可簡化比對輸入和輸出影格的問題,如下所述。
每次呼叫 Process
時,「效果」會從一組輸入緩衝區收集音訊,並產生一組輸出緩衝區。輸入緩衝區應按照時間對齊。這表示每個輸入緩衝區 (input[i].buffer[0]) 中的第一個影格的顯示時間應與所有其他影格輸入內容 [j].buffer[0]相同。
具有非零延遲時間的輸出緩衝區可能會根據輸入緩衝區進行調整。針對每個輸出 k,輸入影格 0 的呈現時間與輸出的影格時間相同。[k].buffer[output[k].Delay_frames]」。
- 要求
num_frames
要處理的影格數量。 - 要求
options
額外選項。
- 回應
per_stage_metrics
關於這個處理程序呼叫的指標,可細分為多個階段。
- 錯誤 zx.Status 值,表示成功或失敗。
要求
名稱 | 類型 |
---|---|
num_frames |
uint64
|
options |
ProcessOptions
|
回應
名稱 | 類型 |
---|---|
payload |
Processor_Process_Result
|
處理器建立者
定義於 fuchsia.audio.effects/creator.fidl
用來建立處理器的工廠。
建立
建立新的處理器並傳回其 ProcessorConfiguration。
- 要求
name
命名處理器要建立的字串。這個名稱的意義取決於實作子。
- 回應
processor_configuration
新處理方的說明。
- 錯誤 zx.Status 值,表示成功或失敗。
要求
名稱 | 類型 |
---|---|
name |
string[1024]
|
回應
名稱 | 類型 |
---|---|
payload |
ProcessorCreator_Create_Result
|
結構
ProcessorCreator_Create_Response 資源
定義於 fuchsia.audio.effects/creator.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
processor_configuration |
ProcessorConfiguration
|
無預設 |
處理器_程序回應
定義於 fuchsia.audio.effects/processor.fidl
欄位 | 類型 | 說明 | 預設 |
---|---|---|---|
per_stage_metrics |
vector<ProcessMetrics>[8]
|
無預設 |
資料表
InputConfiguration 資源
定義於 fuchsia.audio.effects/processor.fidl
設定單一輸入串流。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
format |
fuchsia.mediastreams/AudioFormat
|
這個輸入串流的格式。必填。 |
2 |
buffer |
fuchsia.mem/Range
|
這個輸入串流的緩衝區。必須提供寫入存取權,並為 必填。 |
OutputConfiguration 資源
定義於 fuchsia.audio.effects/processor.fidl
設定單一輸出串流。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
format |
fuchsia.mediastreams/AudioFormat
|
此輸出串流的格式。必填。 |
2 |
buffer |
fuchsia.mem/Range
|
這個輸出串流的緩衝區。必須提供寫入存取權,並為 如果效果支援就地更新,這可能會參照與輸入緩衝區相同的記憶體範圍。 必填。 |
3 |
latency_frames |
uint64
|
如有指定,輸出信號就會隨著這個影格移動。如未指定,則這個值為零。請前往 |
4 |
ring_out_frames |
uint64
|
如果指定,輸入影格 F 就會影響到畫面 F + 說得不一,如果效果給具有 N 個非靜音影格的輸入串流,接著是無限靜音,則在發出靜音前,效果最多將產生 N + |
程序指標
定義於 fuchsia.audio.effects/processor.fidl
內含單一 Processor.Process 呼叫指標的可擴充容器。 所有欄位均為選填。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
name |
string[64]
|
每個處理程序呼叫都可以 (選擇性) 分成多個階段,每個階段都有專屬的 ProcessMetrics。這個欄位會命名此表格所描述的階段。 |
2 |
wall_time |
zx/Duration
|
從收到 Process 呼叫開始,到傳回回應為止的總時鐘時間。 |
3 |
cpu_time |
zx/Duration
|
在 CPU 上執行的總時間。請參閱 zx_info_task_runtime.cpu_time。 |
4 |
queue_time |
zx/Duration
|
等待執行的總時間。只會計算「就緒」時間。請參閱 zx_info_task_runtime.queue_time。 |
5 |
page_fault_time |
zx/Duration
|
處理頁面錯誤所花費的時間總計。請參閱 zx_info_task_runtime.page_fault_time。 |
6 |
kernel_lock_contention_time |
zx/Duration
|
等待事件核心鎖定的等待時間總計。請參閱 zx_info_task_runtime.lock_contention_time。 |
程序選項
定義於 fuchsia.audio.effects/processor.fidl
Processor.Process 的擴充式容器。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
total_applied_gain_db_per_input |
vector<float32>[8]
|
透過先前的處理步驟套用至每個輸入串流的總效益。以表單輸入 -> ProcessorA -> ProcessorB 的形式,如果輸入內容是振幅有單位的正弦波,ProcessorA 會套用 -5.0dB 的增益,則處理 ProcessorB 時應使用 total_wave_gain_db_per_input[0] = -5.0dB's 和 buffers.0],並含有 -5.0dB 這個緩衝區。 如未指定,則每個輸入的應用收益會是 0 dB。 |
2 |
usage_mask_per_input |
vector<uint32>[8]
|
提供給每個輸入串流的所有 fuchsia.media.AudioRenderUsage。這個位元遮罩各為 (1 << r),對於所有有貢獻的 AudioRenderUsage。舉例來說,如果輸入串流包含 BACKGROUND (== 0) 和 INTERRUPTION (== 2),位元遮罩為 ((1<<0)|(1<<2))) = 0x5。 注意:在我們轉換至新的 Fuuchsia 媒體 API 後,可能會移除這個欄位。 |
ProcessorConfiguration 資源
定義於 fuchsia.audio.effects/processor.fidl
設定處理器。
序數 | 欄位 | 類型 | 說明 |
---|---|---|---|
1 |
processor |
Processor
|
這個處理器的專屬 FIDL 管道。 必填。 |
2 |
inputs |
vector<InputConfiguration>[8]
|
這個處理器的所有輸入串流說明。至少須輸入一個值。 每個輸入串流可以有不同的取樣格式或管道數,但所有輸入的影格速率都必須相同。 |
3 |
outputs |
vector<OutputConfiguration>[8]
|
這個處理器的所有輸出串流說明。至少須有一個輸出內容。 每個輸出串流可能會有不同的取樣格式或管道數量,但所有輸出的影格速率都必須與輸入相同。只要畫面更新率保持不變,效果就可以執行範例格式轉換和重新分次作業。 |
4 |
max_frames_per_call |
uint64
|
每次呼叫 fuchsia.audio.effects/Processor.Process 時,可處理的影格數量上限。預設限制是最小輸入緩衝區能容納的影格數量。指定時,這個值必須小於預設上限。 |
5 |
block_size_frames |
uint64
|
如果有指定,所有對 fuchsia.audio.effects/Processor.Process 的呼叫。都必須將 |
聯合國
ProcessorCreator_Create_Result 嚴格 資源
定義於 fuchsia.audio.effects/creator.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
ProcessorCreator_Create_Response
|
|
2 |
err |
zx/Status
|
Processor_Process_Result strict
定義於 fuchsia.audio.effects/processor.fidl
序數 | Variant | 類型 | 說明 |
---|---|---|---|
1 |
response |
Processor_Process_Response
|
|
2 |
err |
zx/Status
|
場景
名稱 | 值 | 類型 | 說明 |
---|---|---|---|
MAX_INPUT_STREAMS |
8
|
uint32 |
輸入和輸出串流的數量上限。這些邊界可以任意決定;實際上,在絕大多數情況下,我們並預期不會超過 1 或 2 個輸入和輸出。 |
MAX_OUTPUT_STREAMS (MAX_OUTPUT_STREAMS 個) |
8
|
uint32 |
|
MAX_PROCESS_STAGES |
8
|
uint32 |
per_stage_metrics 陣列的大小上限。 |
MAX_PROCESS_STAGE_NAME_LENGTH |
64
|
uint32 |
程序階段名稱的長度上限。 |