Browse Source

alsa driver/adapter improvements to flexibly use playback/capture devices through dbus calls patch.

tags/1.9.9.5
Stephane Letz 13 years ago
parent
commit
cb88917543
3 changed files with 20 additions and 6 deletions
  1. +6
    -0
      linux/alsa/JackAlsaAdapter.cpp
  2. +8
    -2
      linux/alsa/JackAlsaAdapter.h
  3. +6
    -4
      linux/alsa/JackAlsaDriver.cpp

+ 6
- 0
linux/alsa/JackAlsaAdapter.cpp View File

@@ -54,8 +54,14 @@ namespace Jack
fPlaybackChannels = param->value.ui; fPlaybackChannels = param->value.ui;
break; break;
case 'C': case 'C':
if (strncmp(param->value.str,"none",4) != 0) {
fAudioInterface.fCaptureName = strdup ( param->value.str );
}
break; break;
case 'P': case 'P':
if (strncmp(param->value.str,"none",4) != 0) {
fAudioInterface.fPlaybackName = strdup ( param->value.str );
}
break; break;
case 'D': case 'D':
break; break;


+ 8
- 2
linux/alsa/JackAlsaAdapter.h View File

@@ -130,6 +130,8 @@ namespace Jack
snd_pcm_access_t fSampleAccess; snd_pcm_access_t fSampleAccess;


//channels //channels
const char* fCaptureName;
const char* fPlaybackName;
unsigned int fCardInputs; unsigned int fCardInputs;
unsigned int fCardOutputs; unsigned int fCardOutputs;


@@ -182,6 +184,8 @@ namespace Jack
fInputParams = 0; fInputParams = 0;
fOutputParams = 0; fOutputParams = 0;
fPeriod = 2; fPeriod = 2;
fCaptureName = NULL;
fPlaybackName = NULL;


fInputCardBuffer = 0; fInputCardBuffer = 0;
fOutputCardBuffer = 0; fOutputCardBuffer = 0;
@@ -200,6 +204,8 @@ namespace Jack
{ {
fInputCardBuffer = 0; fInputCardBuffer = 0;
fOutputCardBuffer = 0; fOutputCardBuffer = 0;
fCaptureName = NULL;
fPlaybackName = NULL;


for ( int i = 0; i < 256; i++ ) for ( int i = 0; i < 256; i++ )
{ {
@@ -216,8 +222,8 @@ namespace Jack
int open() int open()
{ {
//open input/output streams //open input/output streams
check_error ( snd_pcm_open ( &fInputDevice, fCardName, SND_PCM_STREAM_CAPTURE, 0 ) );
check_error ( snd_pcm_open ( &fOutputDevice, fCardName, SND_PCM_STREAM_PLAYBACK, 0 ) );
check_error ( snd_pcm_open ( &fInputDevice, (fCaptureName == NULL) ? fCardName : fCaptureName, SND_PCM_STREAM_CAPTURE, 0 ) );
check_error ( snd_pcm_open ( &fOutputDevice, (fPlaybackName == NULL) ? fCardName : fPlaybackName, SND_PCM_STREAM_PLAYBACK, 0 ) );


//get hardware input parameters //get hardware input parameters
check_error ( snd_pcm_hw_params_malloc ( &fInputParams ) ); check_error ( snd_pcm_hw_params_malloc ( &fInputParams ) );


+ 6
- 4
linux/alsa/JackAlsaDriver.cpp View File

@@ -859,10 +859,12 @@ SERVER_EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLocke
break; break;


case 'd': case 'd':
playback_pcm_name = strdup (param->value.str);
capture_pcm_name = strdup (param->value.str);
jack_log("playback device %s", playback_pcm_name);
jack_log("capture device %s", capture_pcm_name);
if (strcmp (param->value.str, "none") != 0) {
playback_pcm_name = strdup (param->value.str);
capture_pcm_name = strdup (param->value.str);
jack_log("playback device %s", playback_pcm_name);
jack_log("capture device %s", capture_pcm_name);
}
break; break;


case 'H': case 'H':


Loading…
Cancel
Save