I never have not so and probably will never fully understand alsa,
frankly it and I do not get along.........
I have a process that has opened alsa blocking
rc = snd_pcm_open (&playback_handle, device, SND_PCM_STREAM_PLAYBACK, 0);
Then its done a lot of tedious setup.
Then I :
reta = snd_pcm_writei (playback_handle, bufptr, numrecs); //
Write interleaved
Ok, all plays ok.
But every so often the process underruns, freezes and does "weird shit".
In my main playback loop I do this :
framesleft=snd_pcm_avail (playback_handle);
printf("framesleft=%d\n",framesleft);
And get every growing numbers, followed by an underrum then growing numbers
again ?
I can not understand why !
If snd_pcm_writei blocks until it has enough room in whatever cache its
using then WHY is the cache size growing, I should only be able to stuff
data in at the playback rate (at least once the cache is filled and its
only 80ms long) ?
"Frames ready to be written" ? Is this not the cache line length in some
way ?
Anyone know what is wrong?
The problem is on the raspberry Pi board, the PC gives this :
framesleft=3693
framesleft=3181
framesleft=2669
framesleft=2157
framesleft=1645
framesleft=1133
framesleft=621
framesleft=109
framesleft=3581
framesleft=3069
framesleft=2557
framesleft=2045
framesleft=1533
framesleft=1021
framesleft=509
framesleft=3911
framesleft=3399
Ok, jittery but plausible.
The Pi gives this :
framesleft=1138212
framesleft=1138212
framesleft=1139096
framesleft=1139536
framesleft=1139976
framesleft=1141300
framesleft=1141300
framesleft=1141740
framesleft=1142180
framesleft=1142624
framesleft=1143064
framesleft=1143944
framesleft=1143944
framesleft=-32
player: playsample() - underrun, ALSA lib pcm.c:7339:(snd_pcm_recover)
underrun occurred
OK, managed recover !
framesleft=5160
framesleft=5160
Any ideas ?
And for many tedious reasons I cant simply use the callback, I am
compiling multiple versions of the application, writing data to 2 other
sound systems and at least one of them I have to poll.....
Thanks,
Jon
------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire
the most talented Cisco Certified professionals. Visit the
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Alsa-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/alsa-user