2013-07-11 5 views
1

Я использую SharpDX для воспроизведения звука через XAudio2 и получаю проблемы с циклом xWMA-файла на определенном диапазоне. значения LoopBegin и LoopLength, по-видимому, полностью игнорируются при использовании файлов xWMA; он всегда заполняет весь звуковой файл.Looping xWMA звучит с XAudio2

Однако в файлах WAV эти значения работают, как ожидалось.

я уже читал http://msdn.microsoft.com/en-us/library/windows...er%28v=vs.85%29.aspx

, но я считаю, что я выполнил все критерии со значениями в PlayBegin, PlayLength, LoopBegin, LoopLength и т.д.

ничего конкретного о xwma данных, что я здесь отсутствует?

Я использую эту функцию, чтобы установить значение в образцах, так как все мои файлы имеют 44100KhZ

static int MilliSecondsToSamples(double millis) 
{ 
    return (int) (44100.0 * millis/1000.0); 
} 

я нахожусь на Windows 7, .NET4.0

ответ

1

Согласно этой странице: http://msdn.microsoft.com/en-us/library/windows/desktop/microsoft.directx_sdk.xaudio2.xaudio2_buffer(v=vs.85).aspx

Для длины цикла воспроизведения ADPCM должно быть кратно wSamplesPerBlock. Поскольку WMA тоже сжимается, я думаю, что может быть некоторое требование сохранить длину цикла в соответствии с размером кадра воспроизводимого wma-файла.