gpt4 book ai didi

c# - XAudio2 OnVoiceProcessingPassStart回调卡顿播放

转载 作者:太空宇宙 更新时间:2023-11-03 16:32:39 25 4
gpt4 key购买 nike

我将 XAudio2 与 SlimDX 一起使用,我设法让它循环播放一个短的(~8 秒)wav 文件,但是当它接近第一个循环的结尾时,音频开始断断续续进入下一个循环,随着时间的推移越来越糟。

我打开了调试配置文件,在输出窗口中我得到了这些错误:

XAUDIO2: WARNING: Spent 5.63ms in the OnVoiceProcessingPassStart callback
XAUDIO2: WARNING: Spent 5.60ms in the OnVoiceProcessingPassStart callback
XAUDIO2: WARNING: Spent 5.59ms in the OnVoiceProcessingPassStart callback
XAUDIO2: WARNING: Spent 5.69ms in the OnVoiceProcessingPassStart callback

这些与口吃发生的时间相吻合。我在这些回调中什么也没做(我什至没有向事件添加任何内容),但它正在减慢速度。我在下面添加了我的代码以供引用:

用于保存数据流和缓冲区的 Wave 类:

public class Wave
{
public WaveStream Data { get; private set; }

public AudioBuffer Buffer { get; private set; }

public Wave(string path, bool repeating)
{
Data = new WaveStream(path);
Buffer = new AudioBuffer();
Buffer.AudioBytes = (int)Data.Length;
Buffer.AudioData = Data;
if (repeating)
{
Buffer.Flags = BufferFlags.EndOfStream;
}
else
{
Buffer.Flags = BufferFlags.None;
}
Buffer.PlayBegin = 0;
Buffer.PlayLength = 0;
Buffer.LoopBegin = 0;
Buffer.LoopCount = 100;
Buffer.LoopLength = 0;
}
}

保存 XAudio 引擎和声音的声音类,并涵盖添加/删除声音:

public class Sound
{
private XAudio2 audio;
private MasteringVoice master;
private List<SourceVoice> sources;

public Sound()
{
audio = new XAudio2(XAudio2Flags.DebugEngine, ProcessorSpecifier.AnyProcessor);
master = new MasteringVoice(audio);
sources = new List<SourceVoice>();
}

public void AddSound(Wave wave)
{
SlimDX.Multimedia.WaveFormat format = wave.Data.Format;
SourceVoice source = new SourceVoice(audio, format);
source.Start();
source.SubmitSourceBuffer(wave.Buffer);
sources.Add(source);
}
}

为了运行它,我使用:

Wave wave = new Wave("Music2/untitled.wav", true);
Sound sound = new Sound();
sound.AddSound(wave);

最佳答案

相当尴尬,这是我自己的错。我有一个 D3D 缓冲区被重新创建并销毁了我忘记更改为动态缓冲区的每一帧。这导致我的内存使用量激增到几千兆字节,这意味着可能没有足够的空间来分配给音乐。

一旦我消除了内存泄漏,音乐听起来就很好了。

我不确定 XAudio2 异常是否措辞得当...

关于c# - XAudio2 OnVoiceProcessingPassStart回调卡顿播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com