fuchsia.audio.impact

已新增:7

專家

處理器

定義於 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

設定單一輸入串流。

序數欄位類型說明
format fuchsia.mediastreams/AudioFormat

這個輸入串流的格式。必填。

buffer fuchsia.mem/Range

這個輸入串流的緩衝區。必須提供寫入存取權,並為 ProcessorConfiguration.max_frames_per_call 提供足夠的空間。

必填。

OutputConfiguration 資源

定義於 fuchsia.audio.effects/processor.fidl

設定單一輸出串流。

序數欄位類型說明
format fuchsia.mediastreams/AudioFormat

此輸出串流的格式。必填。

buffer fuchsia.mem/Range

這個輸出串流的緩衝區。必須提供寫入存取權,並為 ProcessorConfiguration.max_frames_per_call 提供足夠的空間。系統需要寫入存取權,才能在發生錯誤 (例如處理器中斷連線) 時,將音訊系統寫入輸出緩衝區。

如果效果支援就地更新,這可能會參照與輸入緩衝區相同的記憶體範圍。

必填。

latency_frames uint64

如有指定,輸出信號就會隨著這個影格移動。如未指定,則這個值為零。請前往 [fuchsia.audio.effects/Processor.Process] 查看說明。

ring_out_frames uint64

如果指定,輸入影格 F 就會影響到畫面 F + ring_out_frames 的輸出串流。如未指定,則值為 0。

說得不一,如果效果給具有 N 個非靜音影格的輸入串流,接著是無限靜音,則在發出靜音前,效果最多將產生 N + ring_out_frames 個非靜音影格。

程序指標

定義於 fuchsia.audio.effects/processor.fidl

內含單一 Processor.Process 呼叫指標的可擴充容器。 所有欄位均為選填。

序數欄位類型說明
name string[64]

每個處理程序呼叫都可以 (選擇性) 分成多個階段,每個階段都有專屬的 ProcessMetrics。這個欄位會命名此表格所描述的階段。

wall_time zx/Duration

從收到 Process 呼叫開始,到傳回回應為止的總時鐘時間。

cpu_time zx/Duration

在 CPU 上執行的總時間。請參閱 zx_info_task_runtime.cpu_time。

queue_time zx/Duration

等待執行的總時間。只會計算「就緒」時間。請參閱 zx_info_task_runtime.queue_time。

page_fault_time zx/Duration

處理頁面錯誤所花費的時間總計。請參閱 zx_info_task_runtime.page_fault_time。

kernel_lock_contention_time zx/Duration

等待事件核心鎖定的等待時間總計。請參閱 zx_info_task_runtime.lock_contention_time。

程序選項

定義於 fuchsia.audio.effects/processor.fidl

Processor.Process 的擴充式容器。

序數欄位類型說明
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。

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

設定處理器。

序數欄位類型說明
processor Processor

這個處理器的專屬 FIDL 管道。 必填。

inputs vector<InputConfiguration>[8]

這個處理器的所有輸入串流說明。至少須輸入一個值。

每個輸入串流可以有不同的取樣格式或管道數,但所有輸入的影格速率都必須相同。

outputs vector<OutputConfiguration>[8]

這個處理器的所有輸出串流說明。至少須有一個輸出內容。

每個輸出串流可能會有不同的取樣格式或管道數量,但所有輸出的影格速率都必須與輸入相同。只要畫面更新率保持不變,效果就可以執行範例格式轉換和重新分次作業。

max_frames_per_call uint64

每次呼叫 fuchsia.audio.effects/Processor.Process 時,可處理的影格數量上限。預設限制是最小輸入緩衝區能容納的影格數量。指定時,這個值必須小於預設上限。

block_size_frames uint64

如果有指定,所有對 fuchsia.audio.effects/Processor.Process 的呼叫。都必須將 num_frames 設為此數字的倍數。必須小於或等於 max_frames_per_call。如未指定,則允許使用任何區塊大小。

聯合國

ProcessorCreator_Create_Result 嚴格 資源

定義於 fuchsia.audio.effects/creator.fidl

序數Variant類型說明
response ProcessorCreator_Create_Response
err zx/Status

Processor_Process_Result strict

定義於 fuchsia.audio.effects/processor.fidl

序數Variant類型說明
response Processor_Process_Response
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

程序階段名稱的長度上限。