At Fri, 4 Sep 2009 00:43:09 +0200, Giovanni Maruzzelli wrote: > > On Fri, Sep 4, 2009 at 12:03 AM, Giovanni > Maruzzelli<gmaruzz.lists@xxxxxxxxx> wrote: > > I'll test it and report back here. > > Still we have big problems.... OK, then upgrade your alsa driver stack to 1.0.21. There have been some changes in PCM core. Then, get dummy.c again from the latest alsa-driver-unstable tarball. It already contains my latest fix. If 1.0.21+dummy.c doesn't work, apply the patch below to get position logs. If this still causes the invalid backward jump to position 0, you should check xrun debug, e.g. # echo 9 > /proc/asound/card0/pcm0p/xrun_debug (assuming snd-dummy is card0). Takashi --- diff --git a/dummy.c b/dummy.c index e8e29bf..f7c21d5 100644 --- a/dummy.c +++ b/dummy.c @@ -239,6 +239,10 @@ static void dummy_systimer_update(struct dummy_systimer_pcm *dpcm) dpcm->frac_period_rest += dpcm->frac_period_size; } dpcm->frac_period_rest -= delta; + printk(KERN_DEBUG "xxx delta=%ld, pos=%d(%d), rest=%d(%d)\n", + delta / dpcm->rate, + dpcm->frac_pos, dpcm->frac_pos / HZ, + dpcm->frac_period_rest, dpcm->frac_period_rest / HZ); } static int dummy_systimer_start(struct snd_pcm_substream *substream) @@ -248,6 +252,10 @@ static int dummy_systimer_start(struct snd_pcm_substream *substream) dpcm->base_time = jiffies; dummy_systimer_rearm(dpcm); spin_unlock(&dpcm->lock); + printk(KERN_DEBUG "*** START: buffer=%d, period=%d, rate=%d\n", + (int)substream->runtime->buffer_size, + (int)substream->runtime->period_size, + substream->runtime->rate); return 0; } @@ -257,6 +265,7 @@ static int dummy_systimer_stop(struct snd_pcm_substream *substream) spin_lock(&dpcm->lock); del_timer(&dpcm->timer); spin_unlock(&dpcm->lock); + printk(KERN_DEBUG "*** STOP\n"); return 0; } _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel