[alsa-devel] mm functions vs. normal IO

Reiner P reiner1210 at googlemail.com
Tue Mar 4 14:55:58 CET 2008


Hello,

ok, at the moment I use a simple read(...) to get the data from file
so mm should be ok.

Playing position:
I can count the frames I have written to the buffer but where is the
actual play position ???
What's the porpose of the triigerTimestamp in the status filed?

Thanks
Reiner


On Tue, Mar 4, 2008 at 8:58 AM, Clemens Ladisch <clemens at ladisch.de> wrote:
>
> Reiner wrote:
> > I was astonished that a simple wav playback example does not exist.
>
> The alsa-lib package has test/pcm_min.c.
>
>
> > What should be used:
> >
> > snd_pcm_mmap_commit
> > (I think snd_pcm_mmap_writei is the same with an additional copy behind ?)
>
> snd_pcm_mmap_writei is the same as calling snd_pcm_mmap_begin, copying
> into the buffer, and calling snd_pcm_mmap_commit.
>
> > or snd_pcm_writei
>
> If you have to ask, use snd_pcm_writei.
>
>
> > I think mmap will have better performance,
>
> Only if the program generates samples on the fly and can write them
> directly to the buffer in a format supported by the hardware.
>
> If you already have the data in some buffer, copying it into the
> device's buffer with snd_pcm_writei or snd_pcm_mmap_writei is just as
> fast as when you copy it into the device's buffer by yourself.
>
>
> > but will it work with all soundcards?
>
> Not directly.  ALSA has mmap emulation for cards that don't support it.
> And there are devices where only support mmap access is
> SND_PCM_ACCESS_MMAP_COMPLEX.
>
>
> > I'am also looking for a function to get the number of played frames.
>
> ALSA doesn't count them.  This is nothing that a program couldn't do
> trivially by itself.
>
>
> HTH
> Clemens
>


More information about the Alsa-devel mailing list