[alsa-devel] maintaining fixed latency between output and input?
Aaron J. Grier
agrier at poofygoof.com
Fri Sep 26 03:05:26 CEST 2008
what's the most straight-forward way to maintain fixed latency between
output and input without sitting in loop and continuously checking
snd_pcm_avail_update() for the output and input descriptors?
I was originally going to use callbacks, but I've recently read that is
not a good idea. poll() seems to be the reccomended method.
I could use separate threads for output and input, but then I have to
perform synchronization between them, marshal external requests between
the two threads, and make a lot more work for myself.
I'm visualizing something like this:
for(;;)
{
poll()
if (output_is_ready)
{
/* write output buffer */
/* do output-side housekeeping */
}
if (input_is_ready)
{
/* read input buffer */
/* do input-side housekeeping */
}
/* communicate with other threads */
}
combining the output and input snd_pcm_t into a single descriptor list
for poll() seems straight-forward, but can I pass this superset list to
snd_pcm_poll_descriptors_revents() without it getting confused?
--
Aaron J. Grier | "Not your ordinary poofy goof." | agrier at poofygoof.com
More information about the Alsa-devel
mailing list