From b82263384686b4966e2818649030ef909c846c2c Mon Sep 17 00:00:00 2001 From: sletz Date: Wed, 25 Feb 2009 09:06:29 +0000 Subject: [PATCH] For audio device reservation, add card_to_num function. git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@3348 0c269be4-1314-0410-8aa9-9f06e86f4224 --- ChangeLog | 3 ++- dbus/audio_reserve.c | 1 + linux/alsa/JackAlsaDriver.cpp | 21 ++++++++++++++++++--- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index 2e42e82d..e872a9cb 100644 --- a/ChangeLog +++ b/ChangeLog @@ -22,10 +22,11 @@ Michael Voigt --------------------------- Jackdmp changes log --------------------------- - + 2009-02-25 Stephane Letz * Fix JackNetDriver::Close method. + * For audio device reservation, add card_to_num function. 2009-02-23 Stephane Letz diff --git a/dbus/audio_reserve.c b/dbus/audio_reserve.c index 023931d6..cae5eac9 100644 --- a/dbus/audio_reserve.c +++ b/dbus/audio_reserve.c @@ -47,6 +47,7 @@ SERVER_EXPORT int audio_reservation_finish() { if (connection) dbus_connection_unref(connection); + return 0; } SERVER_EXPORT void* audio_acquire(int num) diff --git a/linux/alsa/JackAlsaDriver.cpp b/linux/alsa/JackAlsaDriver.cpp index dc538bdc..379e871e 100644 --- a/linux/alsa/JackAlsaDriver.cpp +++ b/linux/alsa/JackAlsaDriver.cpp @@ -2138,6 +2138,21 @@ int JackAlsaDriver::Detach() return JackAudioDriver::Detach(); } +static int card_to_num(const char *device) +{ + const char* t; + int i; + + if ((t = strchr(device, ':'))) + device = t+1; + + if ((i = snd_card_get_index(device)) < 0) { + i = atoi(device); + } + + return i; +} + int JackAlsaDriver::Open(jack_nframes_t nframes, jack_nframes_t user_nperiods, jack_nframes_t samplerate, @@ -2174,18 +2189,18 @@ int JackAlsaDriver::Open(jack_nframes_t nframes, if (audio_reservation_init() < 0) { jack_error("Audio reservation sevice not available...."); } else if (strcmp(capture_driver_name, playback_driver_name) == 0) { // Same device for input and output - fReservedCaptureDevice = audio_acquire(0); + fReservedCaptureDevice = audio_acquire(card_to_num(capture_driver_name)); if (fReservedCaptureDevice == NULL) { jack_error("Error audio device %s not available...", capture_driver_name); return -1; } } else { - fReservedCaptureDevice = audio_acquire(0); + fReservedCaptureDevice = audio_acquire(card_to_num(capture_driver_name)); if (fReservedCaptureDevice == NULL) { jack_error("Error capture audio device %s not available...", capture_driver_name); return -1; } - fReservedPlaybackDevice = audio_acquire(0); + fReservedPlaybackDevice = audio_acquire(card_to_num(playback_driver_name)); if (fReservedPlaybackDevice == NULL) { jack_error("Error playback audio device %s not available...", playback_driver_name); return -1;