[alsa-devel] soc underrun problem

Takashi Iwai tiwai at suse.de
Thu Mar 19 08:40:27 CET 2009


At Wed, 18 Mar 2009 11:51:08 -0700,
dfoley wrote:
> 
> Takashi Iwai wrote:
> > At Tue, 17 Mar 2009 21:56:06 -0700,
> > dfoley wrote:
> >> I'm currently having a problem with playing wave files
> >>
> >> root at tsi-tpcxx:~# aplay /usr/share/sounds/alsa/Front_Center.wav
> >> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
> >> mapped channel 10 to 2
> >> underrun!!! (at least 130.662 ms long)
> >> underrun!!! (at least 140.809 ms long)
> >>
> >> I've narrowed it down to the commit ed3da3d9a0ef13c6fe1414ec73c9c1be12747b62 in linux-next/sound-2.6-tiwai.git.
> >>    ALSA: Rewrite hw_ptr updaters
> >>
> >> The audio works fine, when I reverse this commit.
> > 
> > Could you build with CONFIG_SND_DEBUG_XRUN and set below?
> > 	echo 1 > /proc/asound/card0/pcm0p/xrun_debug
> > 
> > It will show you why the playback skips.  It means usually the pointer
> > callback is unstable.  The commit changed the xrun check more
> > strictly.
> > 
> > 
> > Takashi
> 
> root at tsi-tpcxx:~# echo 1 > /proc/asound/card0/pcm0p/xrun_debug
> root at tsi-tpcxx:~# aplay /usr/share/sounds/alsa/Front_Center.wav
> Playing WAVE '/usr/share/sounds/alsa/Front_Center.wav' : Signed 16 bit Little Endian, Rate 48000 Hz, Mono
> mapped channel 10 to 2
> hda_codec: Lost interrupts? (stream=0, delta=20004, intr_ptr=2048)
> XRUN: pcmC0D0p
> underrun!!! (at least 58.490 ms long)
> hda_codec: Lost interrupts? (stream=0, delta=20003, intr_ptr=2048)
> XRUN: pcmC0D0p
> underrun!!! (at least 58.254 ms long)
> hda_codec: Lost interrupts? (stream=0, delta=20004, intr_ptr=2048)

So, actually either the interrupt timing or the pointer callback is
wrong on your driver.

Try to add a debug print in your pointer callback to print the
returned value at each call (better together with runtime->period_size
and runtime->buffer_size to refer).


Takashi


More information about the Alsa-devel mailing list