LINUX.ORG.RU

Сообщения Klopper

 

Синхронизация в ALSA

Форум — Development

Несколько раз просмотрел API ALSA, но так и не нашел, как же сделать ожидание завершения вывода данных из буфера потока.

Моему приложению необходимо не просто набросать данные для воспроизведения и заврешить работу, а выводить звук фрагментами, причем к моменту вывода следующего фрагмента предыдущий должен быть полностью озвучен/проигран, но между фрагментами не должно быть никаких пауз. С помощью каких функций можно заставить программу остановиться (желательно так, чтобы отдать время другим процессам) до тех пор, пока предыдущий фрагмент не будет выведен целиком?

Пробовал делать drain(), затем prepare() и start(). Как синхронизация это работает, но видимо из-за вызовов stop() и start() появляются щелчки. Можно как-нибудь сделать drain() но так, чтобы не он не вызывал stop() для потока вывода?

Klopper
()

RSS подписка на новые темы