On Sun, Jun 27, 2010 at 7:13 AM, David Dillow <dave@xxxxxxxxxxxxxx> wrote: > When using poll() to wait for the next period -- or avail_min samples -- > one gets a consistent delay for each system call that is usually just a > little short of the selected period time. However, When using > snd_pcm_read/write(), one gets a jittery delay that alternates between > less than a millisecond and approximately two period times. This is > caused by snd_pcm_lib_{read,write}1() transferring any available samples > to the user's buffer and adjusting the application pointer prior to > sleeping to the end of the current period. When the next period > interrupt occurs, there is then less than avail_min samples remaining to > be transferred in the period, so we end up sleeping until a second > period occurs. > > This is solved by using runtime->twake as the number of samples needed > for a wakeup in addition to selecting the proper wait queue to wake in > snd_pcm_update_state(). This requires twake to be non-zero when used > by snd_pcm_lib_{read,write}1() even if avail_min is zero. http://mailman.alsa-project.org/pipermail/alsa-devel/2010-June/028786.html _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel