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;
break;
case 'C':
if (strncmp(param->value.str,"none",4) != 0) {
fAudioInterface.fCaptureName = strdup ( param->value.str );
}
break;
case 'P':
if (strncmp(param->value.str,"none",4) != 0) {
fAudioInterface.fPlaybackName = strdup ( param->value.str );
}
break;
case 'D':
break;


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

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

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

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

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

for ( int i = 0; i < 256; i++ )
{
@@ -216,8 +222,8 @@ namespace Jack
int open()
{
//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
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;

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;

case 'H':


Loading…
Cancel
Save