Aaron J. Grier wrote: > 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. Yes. > 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 */ > } This is exactly how a full-duplex application should be structured. To communicate with other threads, you can use a pipe so that you have a file descriptor that can be used with the poll(). > 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? No, snd_pcm_poll_descriptors_revents() looks at the file descriptors of a single device and returns the ready status of that device. HTH Clemens _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel