硬件连接与启动
必须通过 XDspConnect 或 XDspConnectWithMaximumStreamLimit 建立与硬件加速单元的连接。调用者使用以下参数设置连接的要求:-
baseBuffer - 指向用户分配的一块内存,其大小足以容纳将传给硬件的输入、输出、包络缓冲区和/或块乘子缓冲区。该内存应通过 XMemAlloc 分配,属性为:XALLOC_MEMTYPE_PHYSICAL_CACHEABLE、XALLOC_PAGESIZE_64KB、XALLOC_ALIGNMENT_64K。这些属性应通过
MAKE_XALLOC_ATTRIBUTES()设置,示例见下文。该内存在 XDspDisconnect 调用成功之前不能释放。此缓冲区至少 64KB。 - baseBufferLength - baseBuffer 的长度(字节数)。此缓冲区至少 64KB,且不超过 500 MB。
- aggregateImpulseResponseInSeconds - 表示将通过 XDspActivate 与 XDspProcessType::Convolution 同时激活的所有单独脉冲响应的总时长。如果此值为 0,则不能激活任何 XDspProcessType::Convolution 类型的流。
- handle - 指向 XDspClientHandle 的指针,用于接收本次调用返回的句柄。
流的激活与停用
在与设备建立连接后,调用者应发送一个流激活命令以启用卷积、FFT 或 IFFT。调用者必须在 XDspActivationParameters 中指定 XDspProcessType、块帧数、声道数、以浮点数表示的脉冲响应长度以及指向频域脉冲响应数据的指针。只允许单声道或立体声流。对于 XDspProcessType::ForwardFourierTransform 和 XDspProcessType::inverseFourierTransform,XDspActivationParameters::impulseResponse 应为 nullptr,且 XDspActivationParameters::impulseResponseLengthInFloats = 0。XDspActivationOptions 应做相应设置。 以下是激活一个卷积流的代码。- 用恰好 blockFrameCount 帧数据填充输入缓冲区。
- 用合适的值以及按 16 字节对齐的输入/输出缓冲区填充 XDspCommand。
- 调用 XDspSubmitCommand 将命令提交给硬件。该函数返回一个命令序号,可用于跟踪已发送给硬件的命令数量。
