[P&AM Lab] ALSA API
LonelyRuyK
Lonely.RuyK на mail.ru
Вт Ноя 22 03:55:44 MSK 2011
Здравствуйте.
Столкнулся с проблемой при написании программы использующей библиотеку alsa.
Программа должна в реальном времени воспроизводить в колонках те
звуки, которые идут на микрофон
Схематично всё выглядит так:
snd_pcm_open(&pcm_c, name, SND_PCM_STREAM_CAPTURE, 0);
snd_pcm_open(&pcm_p, name, SND_PCM_STREAM_PLAYBACK, 0);
.../* Now set params */
while(loops > 0) {
snd_pcm_readi(pcm_c, ibuff, frames);
snd_pcm_writei(pcm_p, obuff, frames);
}
snd_pcm_drain(pcm_c);
snd_pcm_drain(pcm_p);
snd_pcm_close(pcm_c);
snd_pcm_close(pcm_p);
Вместо того чтобы проигрывать переданные snd_pcm_writei сэмплы сразу,
приложение ждёт когда
выполнится snd_pcm_drain(pcm_p); и уже потом проигрывает всё то что пришло на
микрофон. Т.е. вместо воспроизведения в реальном времени приложение сначала
записывает данные, а уже потом воспроизводит всё то что пришло.
Не могу понять как заставить проигрываться короткие размеры сэмплов.
Пытался найти в интернете решение, ничего путного не обнаружил.
Кто-нибудь знает как решить эту проблему?
Подробная информация о списке рассылки Lab