我使用WAVE api生成和接收我编写的psk程序的音频数据。在XP和Win 8平台上的Vis C++ v6中进行编译(在XP计算机上进行编译)时,音频生成和回放.exe都可以正常工作。但是,在Win 8的VS2010中进行编译时,音频似乎被错误地缓冲,因此纯音现在听起来是断断续续的,并且接收到的数据具有连续性故障。
我使用接收缓冲区和MM_WM_DATA消息设置时序,以正确的波特率调用方法以解码一位数据等,并获取winmm.lib。
我是否应该在项目属性中设置特定的任何设置,这是v6中的默认设置?使用VS2010构建时,似乎已编译的.exe使用该系统的方式有所不同。
任何建议表示赞赏。
谢谢,
格雷格
最佳答案
如果音频驱动程序的缓冲区不足,则可能会出现连续故障的音频。当它通知您它已完成一个缓冲区(MM_W?M_DATA)时,为您提供另一个缓冲区为时已晚。在开始播放或录制之前,您应该至少发送两个或更多缓冲区。然后,当您收到第一个缓冲区已完成的通知时,它已经在第二个缓冲区中工作了,并在第二个缓冲区正在播放/录制时提供了第三个缓冲区。
我不知道这与切换编译器有什么关系,但是很明显,如果您不对多个缓冲区进行排队,那么如果它行得通,那么您很幸运。
关于c++ - 在C++ v6和VS2010 C++缓冲区问题中编译WAVE声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20275249/