Получение аудиоданных каждые 20 миллисекунд в ALSA? - PullRequest
5 голосов
/ 09 октября 2010

Я хотел бы вызвать snd_pcm_readi () и получать AUDIO DATA каждые 20 мс или каждые 40 мс.Я хочу знать, как получить мои данные синхронно ... то есть каждые X мс ...

Спасибо за любые ответы.

1 Ответ

2 голосов
/ 09 октября 2010

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

Примеры alsa:

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

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

...