Я пытаюсь передать файл MS ADPCM с помощью XAudio2 (на C++, но эта проблема не связана с языком).Поток и петля MS ADPCM (WAVE_FORMAT_ADPCM)
Файл закодирован с помощью ADPCMEncode.exe, это дает WAV-файл с тегом формата WAVE_FORMAT_ADPCM.
Как и любой поток, я создаю IXAudio2SourceVoice (с полным ADPCMWAVEFORMAT с начала файла) и подаю его буферизированные по блоку буферы по мере их запроса. Кажется, что данные воспроизводятся нормально, пока не наступит время.
Циклический считыватель как и следовало ожидать: если короткое чтение происходит, верните смещение в начало и сделайте еще одно чтение, чтобы заполнить остальную часть буфера. Отлично подходит для PCM, но для MS ADPCM иногда голос останавливается. Кажется, что перестает запрашивать больше буферов, и поэтому заканчивается и останавливается.
Время ошибки варьируется. Иногда это происходит, как только циклы данных, иногда после цикла несколько раз. Очевидно, есть какая-то дополнительная информация, которую мне нужно передать через XAUDIO2_BUFFER, но я не могу найти ни одного документа, рассказывающего мне что.
Может ли кто-нибудь указать мне в правильном направлении?