On Wed, Jun 24, 2009 at 5:11 PM, Takashi Iwaitiwai@suse.de wrote:
The problem is knowing which sample in the background music to start mixing the low latency laser blast into.
That's why querying the accurate hwptr is important in PA.
I'm still not convinced that all of this logic should be exposed to PA. Exposing these details is what makes ALSA hard to use. We should be able to better isolate user space from this. If mixing were moved into the kernel these details could be hidden. The in-kernel code could then be customized for various sound DMA hardware. This would also go a long ways toward getting rid of latency issues by removing the need for real-time response from PA.
My hardware doesn't have the capability of querying the hwptr and the hwptr speed is not linear because of the FIFO and burst transfers. Non-linear speed means I can't use a clock to estimate hwptr. I do however have the capability of directing the DMA into a new buffer. Another thing I could try is setting up DMA descriptor chain blocks for every 16 bytes. These descriptors get marked as they are used and they don't have to cause an interrupt.
We are evaluating a processor change from PPC to ARM so all of this may change for me.