On Wed, 2010-06-23 at 20:22 +0200, Hans Schou wrote:
2010/6/23 David Dillow dave@thedillows.org:
I can reproduce the alternating pattern of periods using a different device, so this may be something in the core code of ALSA.
Strange? The program I am actually using is one I have written myself. I was sure I was using the old method as I open(2). In my program I use int fd = open("/dev/dsp", O_RDWR);
This should not go through ALSA (I think). I gues one should use something with "snd_pcm_open()" to use ALSA.
To use ALSA directly, yes. However, there is no OSS SIS7019 driver in the kernel, only the ALSA one I wrote. There is an OSS emulation layer, so you can use the OSS API to talk to the ALSA core. Unless you are using a vendor (SIS/MicroJr/etc.) supplied driver, you are using ALSA in some capacity.
Since this problem is not related to the SiS7019 driver, I'll leave it to later -- or for others to investigate. Using three periods per buffer sees a similar pattern, but one has an extra period time to work within.
I really don't understand why I do not see this problem on other hardware using the same compiled code.
You mean the 10 second pauses during recording after 42 minutes? That is a driver bug, so it is specific to this card.
If you mean the alternating long/sort period times, then it is present on other hardware, but you likely don't see it either due to the defaults giving you more periods to work in so you don't see overruns, faster hardware than the SIS550 CPU, or a combination of the two. The bug that gives rise to the 10 second pauses can also shorten the periods I think, making overruns more likely to occur.
Dave