IXAPO::P rocess 方法 (xapo.h)

在给定的输入和输出缓冲区上运行 XAPO 的数字信号处理 (DSP) 代码。

语法

void Process(
  [in]      UINT32                               InputProcessParameterCount,
  [in]      const XAPO_PROCESS_BUFFER_PARAMETERS *pInputProcessParameters,
  [in]      UINT32                               OutputProcessParameterCount,
  [in, out] XAPO_PROCESS_BUFFER_PARAMETERS       *pOutputProcessParameters,
            BOOL                                 IsEnabled
);

参数

[in] InputProcessParameterCount

pInputProcessParameters 中的元素数。

注意 XAudio2 目前仅支持一个输入流和一个输出流。
 

[in] pInputProcessParameters

XAPO_PROCESS_BUFFER_PARAMETERS 结构的输入数组。

[in] OutputProcessParameterCount

pOutputProcessParameters 中的元素数。

注意 XAudio2 目前仅支持一个输入流和一个输出流。
 

[in, out] pOutputProcessParameters

XAPO_PROCESS_BUFFER_PARAMETERS 结构的输出数组。 输入时,的值 XAPO_PROCESS_BUFFER_PARAMETERSValidFrameCount 指示 XAPO 应写入输出缓冲区的帧数。 输出时, 的值XAPO_PROCESS_BUFFER_PARAMETERSValidFrameCount 指示实际写入的帧数。

IsEnabled

如果为 TRUE,则正常处理;如果为 FALSE,则通过处理。 有关其他信息,请参阅“备注”。

返回值

备注

此函数的实现不应受阻,因为该函数是从实时音频处理线程调用的。

所有可能导致延迟的代码(如格式验证和内存分配)都应放在 IXAPO::LockForProcess 方法中,该方法不是从实时音频处理线程调用的。

对于就地处理, pInputProcessParameters 参数不一定与 pOutputProcessParameters 相同。 相反,他们的 pBuffer 成员将指向相同的内存。

多个输入和输出缓冲区可以与就地 XAPOs 一起使用,但输入缓冲区计数必须等于输出缓冲区计数。 对于使用多个输入和输出缓冲区时的就地处理,XAPO 可能假定输入缓冲区数等于输出缓冲区的数量。

除了写入输出缓冲区外,XAPO 还负责根据需要设置输出流的缓冲区标志和有效的帧计数。

IsEnabled 为 FALSE 时,XAPO 不应在此期间将其正常处理应用于给定的输入/输出缓冲区。 它应改为将数据从输入传递到输出,并尽可能少地进行修改。 执行格式转换的效果应继续执行此操作。 效果必须确保正常处理与直通处理之间的转换不会给信号带来不连续。

编写 Process 方法时,请务必注意 XAudio2 音频数据是交错的,这意味着每个通道的数据对于特定样本数是相邻的。 例如,如果有 4 声道波播放到 XAudio2 源语音中,音频数据将是通道 0 的样本、通道 1 的样本、通道 2 的样本、通道 3 的样本,然后是通道 0、1、2、3 等的下一个样本。

平台要求

Windows 10 (XAudio2.9) ;Windows 8、Windows Phone 8 (XAudio 2.8) ;DirectX SDK (XAudio 2.7)

要求

   
目标平台 Windows
标头 xapo.h

另请参阅

IXAPO