Зацикливание звуков xWMA с помощью XAudio2

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

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

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

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

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

я использую эту функцию для установки значений в семплах, так как все мои файлы имеют 44100 кГц

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

я на Windows 7, .NET4.0


person clamp    schedule 11.07.2013    source источник


Ответы (1)


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

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

person Ehz    schedule 07.08.2013