CXAPOBase::P rocessThru 方法 (xapobase.h)

当禁用 XAPO 进行直通处理时,由 IXAPO::P rocess 实现调用。

语法

void ProcessThru(
  const void *pInputBuffer,
  FLOAT32    *pOutputBuffer,
  UINT32     FrameCount,
  UINT32     InputChannelCount,
  UINT32     OutputChannelCount,
  BOOL       MixWithOutput
);

参数

pInputBuffer

指向包含输入音频数据的缓冲区的指针。

pOutputBuffer

指向将包含已处理音频数据的缓冲区的指针。

FrameCount

要处理的音频数据的帧数,其中帧是一个样本块,每个音频数据通道一个。

InputChannelCount

输入数据缓冲区中的通道数。

OutputChannelCount

输出数据缓冲区中的通道数。

MixWithOutput

如果为 TRUE,则与目标缓冲区混合,如果为 FALSE,则覆盖目标缓冲区。

返回值

备注

ProcessThru 将数据从源复制到目标/混合,对音频数据进行尽可能少的更改。 但是, ProcessThru 能够通道向上混合/下混合,并使用 Windows Vista 使用的相同矩阵系数表来执行此操作。

在以下的情况下,可以调用此函数:

  1. XAPO 已锁定并禁用。
  2. 源帧数等于目标帧数。
  3. 输出格式为FLOAT32。
  4. 输入格式为 INT8、INT16、INT20 (包含在 24 位或 32 位) 中,INT24 (包含在 24 位或 32 位) 、INT32 或 FLOAT32中。
对于就地处理 (输入缓冲区等于输出缓冲区) 此函数不执行任何操作。

编写 ProcessThru 方法时,请务必注意 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
标头 xapobase.h
Library XAPOBase.lib

另请参阅

CXAPOBase

IXAPO