[alsa-devel] Underrun on Jade controller...
Sandulescu Bogdan
bogdan.sandulescu at yahoo.com
Fri Nov 23 11:05:16 CET 2012
Hello ALSA community.
I'm an User-Space application developer, using the ALSA library to play mixed sounds. My application (and for that matter also aplay) are having one underrun problem, and I need help on how to interpret the following debug information and receive some possible workarounds/solutions.
The underrun occurs only: once after writei() was performed with get_buffer_size bytes written, and try to do another writei().
Target: Fujitsu Jade microcontroller
ALSA: 1.0.25
ALSA PCM interface for Jade-xxsvideo: /kernel/linux-2.6.31.4/sound/soc/xxsvideo/jade-pcm.c
DMA driver: /kernel/linux-2.6.31.4/arch/arm/mach-xxsvideo/dma.c
Here are the traces I managed to do, if there is any other information needed, please ask me for it.
Application trace:
[line: 1297 ]: Trying to open the ALSA plugin = plug:'dmix:RATE=8000'
[463379 ms] : Play ThreadID [1126167328]: before open ALSA
[line: 1313 ]: Play Sound No: 0, Sound name: Snd_000.wav - from Thread-ID: 1126167328
[463417 ms] : Play ThreadID [1126167328]: before setting parameters
[line: 1377 ]: 16 Bit format
[line: 1386 ]: Channel count: 1
[line: 1394 ]: Sample rate: 8000
[line: 1473 ]: Period size = 1024 ; Buffer size = 4096
[line: 1514 ]: Start threshold = 4096
[463441 ms] : Play ThreadID [1126167328]: after parmas ended
[463442 ms] : Play ThreadID [1126167328]: before malloc
[463442 ms] : Play ThreadID [1126167328]: before reading/writing
[line: 1691 ]: Writei() ended, bytes written = 2048, available bytes to be written = 2048
[line: 1691 ]: Writei() ended, bytes written = 2048, available bytes to be written = 48
underrun!!! (at least 0.019 ms long)
[line: 1660 ]: Underrun encountered: status = -32
ALSA lib pcm.c:7339:(snd_pcm_recover) underrun occurred
[line: 1691 ]: Writei() ended, bytes written = 0, available bytes to be written = 4096
[line: 1691 ]: Writei() ended, bytes written = 2048, available bytes to be written = 2048
[line: 1615 ]: Add silence in last buffer, with size = 1948
[line: 1691 ]: Writei() ended, bytes written = 2048, available bytes to be written = 64
[463526 ms] : Play ThreadID [1126167328]: after reading/writing fully ended
[464152 ms] : Play ThreadID [1126167328]: after ALSA drain
X_RUN DEBUG TRACE:
echo 1 > /proc/asound/card0/pcm0p/xrun_debug
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:330: PCM: Lost interrupts? (stream=0, delta=15360, intr_ptr=1024)
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:266: PCM: Unexpected hw_pointer value (stream=0, pos=0, intr_ptr=17408)
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:266: PCM: Unexpected hw_pointer value (stream=0, pos=1024, intr_ptr=18432)
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:266: PCM: Unexpected hw_pointer value (stream=0, pos=2048, intr_ptr=19456)
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:266: PCM: Unexpected hw_pointer value (stream=0, pos=3072, intr_ptr=20480)
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:266: PCM: Unexpected hw_pointer value (stream=0, pos=4096, intr_ptr=21504)
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:266: PCM: Unexpected hw_pointer value (stream=0, pos=5120, intr_ptr=22528)
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:266: PCM: Unexpected hw_pointer value (stream=0, pos=6144, intr_ptr=23552)
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:266: PCM: Unexpected hw_pointer value (stream=0, pos=7168, intr_ptr=24576)
ALSA /home/kernel/linux-2.6.31.4/sound/core/pcm_lib.c:266: PCM: Unexpected hw_pointer value (stream=0, pos=8192, intr_ptr=25600)
Additional note:
using the :
#echo 2 > /proc/asound/card0/pcm0p/xrun_debug
there are no more underruns occurrences!! And this seems to be normal, according to Procfile.txt description from Takashi Iwai (...can be lead to too much corrections for a (mostly buggy) hardware that doesn't give smooth pointer updates)
Thank you for any information and help given.
More information about the Alsa-devel
mailing list