我正在申请:
简而言之,我需要有循环缓冲区来进行录制和播放,我需要每隔20 ms左右“输入”输出缓冲区,以及即将播放的新数据。
我一直在关注DirectSound,它似乎没什么帮助。对输出缓冲区的读取和写入看起来与Win32非常相似,它是唯一有助于播放主歌曲“附加声音”的地方。
我应该使用DirectSound,还是应该直接使用原始Windows API? DirectSound会为我做什么吗?
提前致谢!
答案 0 :(得分:5)
Directsound API为您提供更好的实时控制。它们也是在Windows中使用声音的受支持方式。我的印象是win32 api被删除了,但我可能错了。
这个问题离您很近
https://stackoverflow.com/questions/314522/what-is-the-best-c-sound-api-for-windows
也
Is DirectSound the best audio abstraction layer for Windows?
最后但同样重要的是,这就是微软必须说的http://msdn.microsoft.com/en-us/library/dd370784(VS.85).aspx
答案 1 :(得分:5)
既不? :)
故事是DirectSound是waveOut的替代品,但DirectSound将DirectInput作为Vista中已弃用的API加入,并替换为WASAPI。 DirectSound和waveOut在Vista中的User-Space WASAPI之上实现。在XP上,waveOut和DirectSound提供给相同的内核级别的Mixer API。
要整合所有这些接口,请查看类似OpenAL的内容,它是与OpenGL相同的良好支持的音频标准。
答案 2 :(得分:3)
听起来你会对延迟非常敏感。查看ASIO
可能会有所收获答案 3 :(得分:2)
我找到了Harmony Central - Audio Programming。另请阅读w:DirectSound。
Windows Vista功能齐全 重写基于的音频堆栈 通用音频架构。因为 的建筑变化 重新设计的音频堆栈,直接路径 从DirectSound到音频驱动程序 不存在。
因为Xbox 360和Microsoft Windows集成,微软是 积极推动开发人员迁移 等效Xbox的新应用程序 音频API,如XAudio和XACT。
OpenAL看起来很有希望。