I'm stress-testing my sound driver using mplayer to see how it handles underrun during jumps in CPU loads. That is, I start playing a movie, and then I cause the CPU to jump to 100%, and then I drop the CPU back to normal. During the times when the CPU is at 100%, I get underruns and other problems. That's normal.
When I tell mplayer to use the ALSA API, my driver recovers nicely from an underrun situation when the CPU load drops back to normal. However, if I tell mplayer to use the OSS API (i.e. ALSA's OSS emulation), it does not recover from an underrun situation. The audio and video playback remains distorted. I need to tell mplayer to pause and resume to get it to recover.
Is this normal for ALSA drivers? Before I try to debug this problem the hard way, I want to know if this could be the result of a common programming mistake in my driver or something like similar.
(FYI, the source code for my driver is in sound/soc/fsl/)