Fuchsia.audio.effects

添加数量:7

协议

处理器

fuchsia.audio.effects/processor.fidl 中定义

音效处理器。使用一个或多个输入流,生成一个或多个输出流。创建后,此协议必须与定义处理器的输入和输出流的 fuchsia.audio.effects.Processor/ProcessorConfiguration 相关联。

处理

处理给定数量的帧。这将消耗每个 ProcessorConfiguration.inputs[i] 中的 num_frames,并在每个 ProcessorConfiguration.outputs[i] 中生成相同数量的帧。

执行模型

所有输入和输出都必须具有相同的帧速率。这简化了匹配输入和输出帧的问题,如下所述。

在每次调用 Process 时,该效应都会从一组输入缓冲区收集音频,并生成一组输出缓冲区。输入缓冲区应按时间对齐。这意味着:每个输入缓冲区中第一帧 input[i].buffer[0] 的呈现时间应与所有其他帧 input[j].buffer[0] 具有相同的呈现时间。

具有非零延迟时间的输出缓冲区可能会相对于输入缓冲区进行偏移。对于每个输出 k,输入帧 0 的呈现时间与 output[k].buffer[output[k].latency_frames] 处的帧相同。

  • 请求 num_frames 要处理的帧数。
  • 请求 options 额外的选项。
  • 响应per_stage_metrics 关于此进程调用的指标,可能细分为多个阶段。
  • error 表示成功或失败的 zx.Status 值。

请求

名称类型
num_frames uint64
options ProcessOptions

回复

名称类型
payload Processor_Process_Result

ProcessorCreator

fuchsia.audio.effects/creator.fidl 中定义

用于创建处理器的工厂。

创建

创建一个新处理器并返回其 ProcessorConfiguration。

  • request name:用于为要创建的处理器命名的字符串。此名称的含义由实现者决定。
  • 响应 processor_configuration 新处理器的说明。
  • error 表示成功或失败的 zx.Status 值。

请求

名称类型
name string[1024]

回复

名称类型
payload ProcessorCreator_Create_Result

结构

ProcessorCreator_Create_Response 资源

fuchsia.audio.effects/creator.fidl 中定义

字段类型说明默认
processor_configuration ProcessorConfiguration 无默认值

Processor_Process_Response

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 的输出流。如果未指定,则为零。

换言之,如果给效果一个输入流包含 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。

ProcessOptions

fuchsia.audio.effects/processor.fidl 中定义

包含 Processor.Process 选项的可扩展容器。

序数字段类型说明
total_applied_gain_db_per_input vector<float32>[8]

由先前处理步骤应用于每个输入流的总增益。例如,假设音频管道的格式为“input -> ProcessorA -> ProcessorB,如果输入是具有统一振幅的正弦波,并且 ProcessorA 应用的增益为 -5.0dB,则应在调用 ProcessorB 时指定 total_applied_gain_db_per_input[0] = -5.0dB,包含 a-5.0dB 的缓冲区。

如果未指定,则每个输入的应用增益为 0 dB。

usage_mask_per_input vector<uint32>[8]

对每个输入流做出贡献的所有 fuchsia.media.AudioRenderUsages。对于提供的每个 AudioRenderUsage,这是一个 (1 << r) 的位掩码。例如,如果输入流包含 BACKGROUND (== 0) 和 INTERRUPTION (== 2),则位掩码为 ((1<<0)|(1<<2)) = 0x5。

注意:改用新的 Fuchsia 媒体 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 中定义

序数变体类型说明
response ProcessorCreator_Create_Response
err zx/Status

Processor_Process_Result 严格

fuchsia.audio.effects/processor.fidl 中定义

序数变体类型说明
response Processor_Process_Response
err zx/Status

常量

名称类型说明
MAX_INPUT_STREAMS 8 uint32

输入和输出流的数量上限。 这些边界有点随意;在实践中,在绝大多数情况下,我们预计不超过 1 个或 2 个输入和输出。

MAX_OUTPUT_STREAMS 8 uint32
MAX_PROCESS_STAGES 8 uint32

per_stage_metrics 数组的大小上限。

MAX_PROCESS_STAGE_NAME_LENGTH 64 uint32

进程阶段名称的最大长度。