Re: DMA buffer gets played only once

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



At Wed, 05 Sep 2007 14:47:22 +0530,
Markus Franke wrote:
> 
> 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.

It's your mis-interpretation of START/STOP concenpt in the ALSA
framework.  The trigger START and STOP mean the start/stop of the
whole streaming operation.  It's basically called from the outside,
i.e. the application starts/stops the stream.  If you need to keep
some DMA start/stop operations internally, do it in the driver
lowlevel side internally.


Takashi
_______________________________________________
Alsa-devel mailing list
Alsa-devel@xxxxxxxxxxxxxxxx
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

[Index of Archives]     [ALSA User]     [Linux Audio Users]     [Kernel Archive]     [Asterisk PBX]     [Photo Sharing]     [Linux Sound]     [Video 4 Linux]     [Gimp]     [Yosemite News]

  Powered by Linux