Я хотел бы вызвать snd_pcm_readi() и получать АУДИО-ДАННЫЕ каждые 20 мс или каждые 40 мс. Я хочу знать, как синхронно получать мои данные... то есть каждые X мс...
Спасибо за любые ответы.
Я хотел бы вызвать snd_pcm_readi() и получать АУДИО-ДАННЫЕ каждые 20 мс или каждые 40 мс. Я хочу знать, как синхронно получать мои данные... то есть каждые X мс...
Спасибо за любые ответы.
для чтения или воспроизведения звука в реальном времени вы обычно создаете выделенный рабочий поток с высоким приоритетом для вызова, а затем используете несколько кольцевых буферов. ваша нить должна избегать блокировки.
альса примеры:
http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2latency_8c-example.html#a36
http://www.alsa-project.org/alsa-doc/alsa-lib/_2test_2pcm_8c-example.html
если вы просто читаете с диска, вам понадобится достаточно буфера, затем просто проснитесь и посмотрите, нужно ли вам читать больше, прежде чем вы проснетесь в следующий раз (учитывая общую задержку).