On Tue, May 5, 2009 at 10:35 AM, Jon Smirl <jonsmirl@xxxxxxxxx> wrote: > Is there some way to get a call out after a period DMA buffer is > filled so that I can add it to the DMA queue? The current model in my driver is to queue up a bunch of DMA descriptors, one per period. When I queue these I don't know if the DMA buffers have music in them or not. I then start this queue playing and tell ALSA when each period has finished. After each period plays I requeue the descriptor. I keep hoping that ALSA can get these filled before they start playing. After the last period plays ALSA calls trigger(STOP). At that point I try to shut down the DMA hardware and get the descriptors back. But because of the FIFO and asynchronous DMA engine I can't stop DMA fast enough in the trigger(STOP) routine. The result is that the next period starts playing. This period has data from earlier in the stream and it sounds like a burst of noise. What I need is a call back indicating which buffers have valid data in them. When I know the buffer is valid I can queue the descriptor. This will fix the problem at end of stream since there won't be buffers queued containing invalid data. -- Jon Smirl jonsmirl@xxxxxxxxx _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel