在不同的波形格式之间转换(WAVEFORMATEX)

时间:2014-03-28 16:53:18

标签: c++ winapi audio wasapi

我正在编写一个以独占模式运行流的实时音频应用程序。为了正确地向设备提供数据,它需要以我自己选择的格式到达。我的所有音频处理都是在发送到设备之前使用浮点样本完成的,并且设备的波形格式可能不是(也可能不是)设置为WAVE_FORMAT_IEEE_FLOAT - 例如,它可能是WAVE_FORMAT_EXTENSIBLEWAVE_FORMAT_PCM

是否有一个API可以轻松地在一种波形(浮点)和另一种波形(设备的格式)之间进行转换?

1 个答案:

答案 0 :(得分:1)

使用音频压缩管理器(ACM)转换流:

Converting Data from One Format to Another

如果您无法从格式到设备的格式创建单个流,则必须创建两个流 - 一个从您的格式到WAVE_FORMAT_PCM,另一个来自WAVE_FORMAT_PCM设备的格式(所有流/设备必须支持与PCM之间的转换)。