SlimDX에서 XAudio2를 사용하고 있는데 루프에서 짧은 (~ 8 초) wav 파일을 재생할 수 있었지만 첫 루프가 끝날 때까지 오디오가 시작됩니다. 말더듬과 말더듬은 다음 루프로 이어지고 시간이 갈수록 악화되고 악화됩니다. XAudio2 OnVoiceProcessingPassStart 콜백 끊김 재생
나는 디버그 프로필 켜져 있고 출력 창에 나는 이러한 오류를 얻을 :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
을 그리고 이러한 말더듬가 발생했을 때와 일치한다. 나는이 콜백에서 아무 것도하지 않고있다. (나는 이벤트에 아무 것도 추가하지 않았다.) 그리고 느려지고있다. 데이터 스트림 버퍼를 보유하기위한
웨이브 클래스 : 나는 참조 아래에있는 내 코드를 추가 한
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 엔진과 목소리를 유지하고/제거 목소리를 추가 다루에 대한
Sound 클래스 :
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);