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@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