我正在通过 SlimDx 播放音频 wav 文件,除非 CPU 大约 70%,否则一切正常。在那一点上,我得到了一些明显的音频故障。我正在编写的程序不仅仅是一个音频播放器,而且它做了很多工作......基本上该程序导致了高 CPU 使用率。(大量数据通过系统)。
当我播放音频文件(文件不是那么大)时,我将波形文件读入内存缓冲区并告诉 XAudio2 播放整个缓冲区(总共 1 个缓冲区)所以一旦我告诉 XAudio2 播放 SourceVoice 我只是在等待一个 BufferEnd 事件,我知道我已经完成了。
如果我从 XAudio2 设备获取 PerformanceData,我会看到即使在 CPU 使用率较低的情况下毛刺计数也会增加,但您听不到毛刺。
同时,如果我通过 windows 媒体播放器播放音频,我不会遇到任何故障。那是因为它不在同一个进程中,还是因为它是用 C++ 而不是 XAudio2 上的 .net 包装器编写的?
问题: 1. 我在某处读到 XAudio2 的 .net Wrapper 在某些情况下会导致故障。这是cpu使用率高的原因吗?2. 我看到当我创建 SlimDX XAudio2 对象时,创建了一个 XAudio2 线程。我们有能力设置 SlimDx XAudio2 线程的优先级吗?
有什么建议么?