首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XAudio2.7停止源语音后崩溃

XAudio2.7停止源语音后崩溃
EN

Stack Overflow用户
提问于 2017-02-08 18:42:46
回答 1查看 410关注 0票数 0

我在Windows7 x86应用程序上使用XAudio2.7来渲染流式音频样本。源语音以8 8KHz、单声道和16位/采样波形格式创建。然后,我运行一个后台线程,等待语音回调并提交新的缓冲区。一切都很好,直到我停止语音和它崩溃的访问冲突异常的应用程序。创建转储文件后,我注意到XAudio2内部处理线程发生崩溃:

Stack trace

我试着在停止声音之前停止引擎线程,但结果是一样的。

请指教,谢谢

EN

回答 1

Stack Overflow用户

发布于 2017-02-09 15:38:11

什么时候释放缓冲区提交所指向的内存?请记住,您必须保持所有内存指针有效,直到语音完成对缓冲区的处理。数据由工作线程实时从应用程序内存中读取,而不是复制。

在语音上调用Stop并不意味着线程一返回就完全停止工作。如果要确保语音的所有缓冲区都已完成,请在Stop之后使用FlushSourceBuffers

代码语言:javascript
复制
(void)voice->Stop( 0 ); 
(void)voice->FlushSourceBuffers(); 

你应该看看DirectX Tool Kit for Audio的实现。

顺便说一句,因为你使用的是XAudio 2.7,所以你应该知道这个known issue

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42110910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档