DSP problem in Fedora
Serge de Souza
serge at cs.curtin.edu.au
Fri Aug 6 06:12:48 UTC 2004
Hi all,
Some background:
We have a talking head here, the audio code works well on Redhat 7.2
linux but on upgrade to Fedora Core 1, the audio no longer works well.
The symptoms:
In the inner loop of the animate routine code a call is made to
PlaySamples. It is assumed that this returns and as the audio plays, the
graphics is synced with the remaining audio samples as they play out.
In RedHat 7.2, the underlying write to the audio device will take the
samples, they get stored in the kernel device driver or the device's
buffer and the write returns immediately. In Fedora (or the new kernel
used in Fedora), the write will not return until the audio has finished
(or the last small buffers of data have been sent to the device's
buffer). Obviously, the graphics of a Talking Head cannot be synced
since the write to /dev/dsp and hence the PlaySamples does not return!!!
If the device is opened in O_NDELAY or O_NONBLOCK mode (or via an ioctl
it is made NON BLOCKING - SNDCTL_DSP_NONBLOCK ) then the Fedora device
driver seems to return straight away (i.e it does not block) BUT seems
to only play the first device buffer's worth of data regardless of how
much is actually written to it. Again sync'ing is not possible when this
happens....
We have tried older vanilla kernels as well as ALSA with no luck. This
code was fine on RH7.2
Does anyone have an idea on what has changed from RH7.2 to FC1 that
could be affecting this ? Or how to solve this problem ?
Thanks
Serge
More information about the fedora-list
mailing list