XAudio2 и аудио с переменным битрейтом
Вопрос
Как мне правильно воспроизводить аудиофайлы, которые могут иметь переменный битрейт (и даже переменное число каналов в некоторых случаях), например, ogg / vorbis?
XAudio ожидает эту информацию в структуре WAVEFORMATEX при создании исходного голоса и, похоже, не предоставляет средства для ее изменения для каждого отправляемого буфера ...
Решение
Если у меня недостаточно звука, ни в одном аудиоформате не указывается переменная скорость передачи данных output или число каналов output . Кодек с переменным битрейтом означает, что количество битов, используемых для кодирования фиксированного количества выборок, варьируется. Vorbis позволяет динамически кодировать каналы, а также каналы, которые могут быть воспроизведены с помощью более простых функций, таких как тишина. Количество выходных каналов остается постоянным, а также битрейт на выходе.
Кроме того, XAudio2 изначально не поддерживает файлы ogg / vorbis; он поддерживает PCM, ADPCM и xWMA в Windows и PCM, XMA и xWMA в Xbox 360.
В целом, для не родных форматов вы должны самостоятельно распаковать аудио в соответствующий битрейт output и формат канала и отправить его в IXAudio2SourceVoice
через IXAudio2SourceVoice :: SubmitSourceBuffer код>.