On Sat, 26 Jun 2010, David Dillow 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. > > Signed-off-by: Dave Dillow <dave@xxxxxxxxxxxxxx> Thanks. It looks like another way to get things right. I applied your patch to my tree. Jaroslav ----- Jaroslav Kysela <perex@xxxxxxxx> Linux Kernel Sound Maintainer ALSA Project, Red Hat, Inc. _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel