[alsa-devel] DMA buffer gets played only once

Markus Franke markus.franke at s2002.tu-chemnitz.de
Wed Sep 5 11:17:22 CEST 2007


Clemens Ladisch wrote:
> Markus Franke wrote:
>> It seems like that after the 8th period is transferred
>> pcm_trigger(TRIGGER_STOP) isn't getting called. 
> 
> Indeed.  The stop trigger is called when the entire stream is
> to be stopped.

Well, start and stop trigger get always called mutually. In pseudo code 
it would look like this:

---snip---
TRIGGER_START

transfer one period via DMA

TRIGGER_STOP

update DMAC settings in DMA transfer finished callback and call 
snd_pcm_period_elapsed()

TRIGGER_START

transfer one period via DMA

TRIGGER_STOP

update DMAC settings in DMA transfer finished callback and call 
snd_pcm_period_elapsed()

....and so on.
---snap---

At least this is the behaviour I experienced.

So long,
Markus


More information about the Alsa-devel mailing list