Зациклить источник OpenAL со смещением

API OpenAL утверждает, что установка смещения по-прежнему приводит к возврату звука к нулю для зацикленных источников. Но есть ли способ зациклиться и все еще иметь смещение?

У меня есть mp3, и поскольку он содержит заголовки с информацией в начале файла, есть небольшая, но заметная задержка в цикле при перемотке назад.

Если нет, существуют ли другие сжатые форматы, не содержащие этих пустых заголовков?


person hwaxxer    schedule 15.02.2010    source источник
comment
В итоге я использовал Core Audio и Audio Units, так как хотел делать более сложные вещи.   -  person hwaxxer    schedule 13.05.2011


Ответы (1)


Может быть, ваша задержка также может представлять время для распаковки данных MP3? Если ваши данные в любом случае достаточно малы, чтобы зацикливаться, можете ли вы использовать API для распаковки MP3 в PCM, а затем просто передать эти несжатые данные в AL?

Другой вариант: вам не нужно использовать только один буфер. Вы можете поставить их в очередь с помощью alSourceQueueBuffers(). При такой потоковой передаче AL может немедленно перейти от конца одного буфера к началу следующего. Таким образом, вы можете поставить в очередь два или три буфера данных, затем опросить источник, чтобы увидеть, когда первый из них был использован, и поставить в очередь еще один. По сути, это сделало бы вас ответственным за зацикливание.

person invalidname    schedule 28.02.2010