Можно ли воспроизводить зацикленный WAV-файл без пауз без заиканий?

У меня есть требование к идеальному непрерывному зацикленному звуку в приложении BlackBerry 10. Мои петли хранятся в виде файлов WAV. Метод, который я использую для их воспроизведения, таков:

  1. Создайте буфер для файла WAV, используя alutCreateBufferFromFile, который возвращает bufferID
  2. Создайте источник звука, используя alGenSources
  3. Прикрепите буфер к источнику, используя alSourcei(source, AL_BUFFER, bufferID)
  4. Установите для свойства цикла источника значение true, используя alSourcei(source, AL_LOOPING, AL_TRUE)
  5. Воспроизведите источник, используя alSourcePlay(source)

Звук воспроизводится нормально большую часть времени, но во время переходов пользовательского интерфейса (например, при отключении подсветки или сворачивании приложения) звук заикается.

Любые идеи, как я могу обеспечить плавность звука все время?


person donturner    schedule 28.06.2013    source источник


Ответы (1)


Как запустить поток/процесс, воспроизводящий файл WAV? У вас была возможность поиграть с приоритетами и политикой в ​​этой теме?

Я думаю, что эти низкоуровневые системные вызовы, позволяющие изменить приоритет и политику процесса (фактически, потока), могут помочь:

Кроме того, взгляните на соответствующие страницы документа:

Я бы начал с установки политики на FIFO и повысил приоритет процесса воспроизведения аудиофайла. Надеюсь, поможет.

person Sunseeker    schedule 05.07.2013
comment
Спасибо, это полезные советы. Когда я вызываю alSourcePlay, он порождает отдельный поток для воспроизведения. Как я могу изменить приоритет этого потока, а не моего основного потока? - person donturner; 08.07.2013
comment
Я установил политику планирования моего основного потока на FIFO и повысил приоритет потока до 63 (наивысший допустимый для приложений без полномочий root). Моя теория заключается в том, что дочерний процесс, который воспроизводит звук, унаследует эти свойства. К сожалению, заикание все еще происходит. Какие-либо предложения? - person donturner; 09.07.2013
comment
Хорошо, я понял это. Приоритет потока должен быть установлен до инициализации всего, что связано с OpenAL, тогда он работает как шарм. Большое спасибо! - person donturner; 09.07.2013