diff options
author | Guenter Geiger <ggeiger@users.sourceforge.net> | 2003-05-09 16:04:00 +0000 |
---|---|---|
committer | Guenter Geiger <ggeiger@users.sourceforge.net> | 2003-05-09 16:04:00 +0000 |
commit | 9c0e19a3be2288db79e2502e5fa450c3e20a668d (patch) | |
tree | ca97ce615e037a533304fc4660dcf372ca3b9cd6 /pd/portaudio/pa_linux_alsa/blocking_calls.c | |
parent | ef50dd62804d54af7da18d8bd8413c0dccd729b8 (diff) |
This commit was generated by cvs2svn to compensate for changes in r610,
which included commits to RCS files with non-trunk default branches.
svn path=/trunk/; revision=611
Diffstat (limited to 'pd/portaudio/pa_linux_alsa/blocking_calls.c')
-rw-r--r-- | pd/portaudio/pa_linux_alsa/blocking_calls.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/pd/portaudio/pa_linux_alsa/blocking_calls.c b/pd/portaudio/pa_linux_alsa/blocking_calls.c new file mode 100644 index 00000000..6304b117 --- /dev/null +++ b/pd/portaudio/pa_linux_alsa/blocking_calls.c @@ -0,0 +1,61 @@ + +#include "pa_stream.h" + +#include "pa_linux_alsa.h" + +PaError ReadStream( PaStream* s, + void *buffer, + unsigned long frames ) +{ + PaAlsaStream *stream = (PaAlsaStream*)s; + + /* TODO: handle failure, xruns */ + + if( stream->capture_interleaved ) + { + snd_pcm_mmap_readi( stream->pcm_capture, buffer, frames ); + } + else + { + snd_pcm_mmap_readn( stream->pcm_capture, (void**)buffer, frames ); + } + + return paNoError; +} + + +PaError WriteStream( PaStream* s, + void *buffer, + unsigned long frames ) +{ + PaAlsaStream *stream = (PaAlsaStream*)s; + + if( stream->playback_interleaved ) + { + snd_pcm_mmap_writei( stream->pcm_playback, buffer, frames ); + } + else + { + snd_pcm_mmap_writen( stream->pcm_playback, (void**)buffer, frames ); + } + + return paNoError; +} + + +unsigned long GetStreamReadAvailable( PaStream* s ) +{ + PaAlsaStream *stream = (PaAlsaStream*)s; + + return snd_pcm_avail_update( stream->pcm_capture ); +} + + +unsigned long GetStreamWriteAvailable( PaStream* s ) +{ + PaAlsaStream *stream = (PaAlsaStream*)s; + + return snd_pcm_avail_update( stream->pcm_playback ); +} + + |