buffer underrun issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi all,

Welcome everybody, as this is my first mail to the list.

I am trying to write my first ALSA audio program, and I have intermittent issues I can't explain.

I am playing ~68ms of sound from memory, in 1-channel U8 setup, and quite frequently I get the following errors:

ALSA error: Broken pipe
ALSA lib pcm.c:7963:(snd_pcm_recover) underrun occurred

The test project can be found here: https://github.com/circum1/alsa-underrun-demo
Compile simply with g++ -o alsa-test alsa-test.cpp -lasound

The program writes 3*1000 samples, then drains, sleeps 1 second, and loops. My example output running this program:

fery@fery-E6540:~/tmp/alsa-demo/alsa-underrun-demo$ g++ -o alsa-test alsa-test.cpp -lasound && ./alsa-test
SOUND: setupWithFreq sampling rate: 44100
SOUND: number of periods: 3
SOUND: period size: 1000 frames
0 {0}
1 {1}
ALSA error: Broken pipe
ALSA lib pcm.c:7963:(snd_pcm_recover) underrun occurred
1 {2}
1 before drain
48 after drain

1049 {0}
1050 {1}
1050 {2}
1050 before drain
1119 after drain

2120 {0}
2121 {1}
ALSA error: Broken pipe
ALSA lib pcm.c:7963:(snd_pcm_recover) underrun occurred
2121 {2}
ALSA error: Broken pipe
ALSA lib pcm.c:7963:(snd_pcm_recover) underrun occurred
2122 before drain
2122 after drain

3123 {0}
3124 {1}
3124 {2}
3124 before drain
3194 after drain

4195 {0}
4195 {1}
4195 {2}
4195 before drain
4265 after drain

5266 {0}
5266 {1}
ALSA error: Broken pipe
ALSA lib pcm.c:7963:(snd_pcm_recover) underrun occurred
5267 {2}
ALSA error: Broken pipe
ALSA lib pcm.c:7963:(snd_pcm_recover) underrun occurred
5268 before drain
5268 after drain

6269 {0}
6270 {1}
6270 {2}
6270 before drain
6339 after drain

^C

The numbers at the beginning of the lines are elapsed milliseconds. It is visible that the program writes 2000 samples in 1-2ms, but nevertheless the underrun occurs.

I don't know if the error is in my code, or is it some bug or maybe hw issue?

Possibly relevant env info:

Ubuntu 16.04, Linux version 4.4.0-59-generic
libasound2: Version: 1.1.0-0ubuntu1
pulseaudio: Version: 1:8.0-0ubuntu3.2

00:03.0 Audio device: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor HD Audio Controller (rev 06)
(Dell E6540 notebook)

Independent of this issue, I also have another question: is it safe to write fewer samples than period size, even if it is not the last pcm_writei in the stream?

Thanks in advance,
Ferenc


------------------------------------------------------------------------------
Announcing the Oxford Dictionaries API! The API offers world-renowned
dictionary content that is easy and intuitive to access. Sign up for an
account today to start using our lexical data to power your apps and
projects. Get started today and enter our developer competition.
http://sdm.link/oxford
_______________________________________________
Alsa-user mailing list
Alsa-user@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/alsa-user

[Index of Archives]     [ALSA Devel]     [Linux Audio Users]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]

  Powered by Linux