c++ - 在C++ v6和VS2010 C++缓冲区问题中编译WAVE声音

标签 c++ visual-studio-2010 audio wave

我使用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/

相关文章:

C++ 2D 矩阵迭代器与嵌套 for 循环的效率比较

c++ - 在 Windows 中将文件所有者设置为不存在的用户/SID

c++ - 插件如何调整它的窗口大小

c++ - Visual Studio 2010 C++ native Debug模式资源

java播放mp3声音

c++ - 如何在 visual studio 2017 中使用 zlib 库?

visual-studio - 如何更改 Visual Studio 查找结果窗口中事件行的背景颜色?

c++ - vs2010中的 vector 初始化

android - 用动态文件填充MediaPlayer

python - 重复循环直到功能输入改变