專家
處理器
定義於 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 | 程序階段名稱的長度上限。 |