2009/12/14 James Courtier-Dutton <james.dutton@xxxxxxxxx> > Hi, > > Would there be benefit in separating the DMA and the transfer of audio > samples to the sound card hardware from the delay and hw position > feedback. > For example, If the playback position is 0, the hardware has probably > already transferred one period of the sound card. > So, one cannot write to playback position 2 and expect it to be output > to the sound card if the period size is 1024. > > For transfer purposes, one only needs to know that DMA transfer is > complete on period X so that period X can now be over-written. > I believe that this is what the DMA interrupt indicates. One needs to > reliably detect a missed interrupt. > It one took this approach, one might be able to hide the "missed > interrupt" problem. > When the interrupt finally did arrive, we would know where the next > free period X is, and continue writing samples to that, irrespective > of what went wrong before. > This would allow for auto-recovery of the audio stream without having > to stop and start the ring buffers again. > > One then needs to determine how one can get accurate "delay" values > back from all sound card types. > The accurate "delay" value may be different for different chipsets using the same driver snd_pcm_rewindable() should provide the value to rewind to the period_boundary , if you want to play the audio as soon as possible , you should reduce the period size Using software mixing but unwilling to spend CPU time (power saving) and using large period size does not make any sense at all. > The "delay" value is used for applications like ensuring that audio > and video play in sync. > The problem ones at the moment appear to be the intel8x0 and hd-audio ones. > There may be benefits from making the "delay" value return in > nanoseconds instead of samples, particularly if gettimeofdate() is > being used to try to produce accurate "delay" values. > > Kind Regards > > James > _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel