diff --git a/src/simpleaudio-alsa.c b/src/simpleaudio-alsa.c index 8f1182a..7e87c7e 100644 --- a/src/simpleaudio-alsa.c +++ b/src/simpleaudio-alsa.c @@ -98,6 +98,7 @@ sa_alsa_close( simpleaudio *sa ) static int sa_alsa_open_stream( simpleaudio *sa, + const char *backend_device, sa_direction_t sa_stream_direction, sa_format_t sa_format, unsigned int rate, unsigned int channels, @@ -106,8 +107,11 @@ sa_alsa_open_stream( snd_pcm_t *pcm; int error; + if ( ! backend_device ) + backend_device = "default"; + error = snd_pcm_open(&pcm, - "plughw:0,0", + backend_device, sa_stream_direction == SA_STREAM_RECORD ? SND_PCM_STREAM_CAPTURE : SND_PCM_STREAM_PLAYBACK, 0 /*mode*/); if (error) { diff --git a/src/simpleaudio-benchmark.c b/src/simpleaudio-benchmark.c index 769ef9f..7571391 100644 --- a/src/simpleaudio-benchmark.c +++ b/src/simpleaudio-benchmark.c @@ -83,6 +83,7 @@ sa_benchmark_close( simpleaudio *sa ) static int sa_benchmark_open_stream( simpleaudio *sa, + const char *backend_device, sa_direction_t sa_stream_direction, sa_format_t sa_format, unsigned int rate, unsigned int channels, diff --git a/src/simpleaudio-pulse.c b/src/simpleaudio-pulse.c index 6196bb6..25941c1 100644 --- a/src/simpleaudio-pulse.c +++ b/src/simpleaudio-pulse.c @@ -82,6 +82,7 @@ sa_pulse_close( simpleaudio *sa ) static int sa_pulse_open_stream( simpleaudio *sa, + const char *backend_device, sa_direction_t sa_stream_direction, sa_format_t sa_format, unsigned int rate, unsigned int channels, diff --git a/src/simpleaudio-sndfile.c b/src/simpleaudio-sndfile.c index 3520ac4..4403679 100644 --- a/src/simpleaudio-sndfile.c +++ b/src/simpleaudio-sndfile.c @@ -160,12 +160,13 @@ sndfile_format_from_path( const char *path ) static int sa_sndfile_open_stream( simpleaudio *sa, + const char *backend_device, sa_direction_t sa_stream_direction, sa_format_t sa_format, unsigned int rate, unsigned int channels, char *app_name, char *stream_name ) { - const char *path = stream_name; + const char *path = backend_device; int sf_format; switch ( sa->format ) { diff --git a/src/simpleaudio.c b/src/simpleaudio.c index 8db30f2..e50228f 100644 --- a/src/simpleaudio.c +++ b/src/simpleaudio.c @@ -33,6 +33,7 @@ simpleaudio * simpleaudio_open_stream( sa_backend_t sa_backend, + const char *backend_device, sa_direction_t sa_stream_direction, sa_format_t sa_format, unsigned int rate, unsigned int channels, @@ -106,7 +107,7 @@ simpleaudio_open_stream( } int ok = sa->backend->simpleaudio_open_stream(sa, - sa_stream_direction, sa_format, + backend_device, sa_stream_direction, sa_format, rate, channels, app_name, stream_name); if ( ok ) { diff --git a/src/simpleaudio.h b/src/simpleaudio.h index d9d329e..675796c 100644 --- a/src/simpleaudio.h +++ b/src/simpleaudio.h @@ -55,6 +55,7 @@ typedef enum { simpleaudio * simpleaudio_open_stream( sa_backend_t sa_backend, + const char *backend_device, sa_direction_t sa_stream_direction, sa_format_t sa_format, unsigned int rate, unsigned int channels, diff --git a/src/simpleaudio_internal.h b/src/simpleaudio_internal.h index 1613aca..6928a51 100644 --- a/src/simpleaudio_internal.h +++ b/src/simpleaudio_internal.h @@ -43,6 +43,7 @@ struct simpleaudio_backend { int /* boolean 'ok' value */ (*simpleaudio_open_stream)( simpleaudio * sa, + const char *backend_device, sa_direction_t sa_stream_direction, sa_format_t sa_format, unsigned int rate, unsigned int channels,