Browse Source

Improve default input/ouput device selection in JackCoreAudioDriver.

tags/v1.9.10
Stephane Letz 11 years ago
parent
commit
678b3cae57
1 changed files with 23 additions and 6 deletions
  1. +23
    -6
      macosx/coreaudio/JackCoreAudioDriver.cpp

+ 23
- 6
macosx/coreaudio/JackCoreAudioDriver.cpp View File

@@ -158,11 +158,10 @@ static bool CheckAvailableDeviceName(const char* device_name, AudioDeviceID* dev
return false;
}

if (strcmp(device_name_aux, device_name) == 0) {
if (strncmp(device_name_aux, device_name, strlen(device_name)) == 0) {
*device_id = devices[i];
return true;
}

}

return false;
@@ -613,8 +612,15 @@ OSStatus JackCoreAudioDriver::GetDefaultInputDevice(AudioDeviceID* id)
}

if (inDefault == 0) {
jack_error("Error default input device is 0, please select a correct one !!");
return -1;
jack_error("Error default input device is 0, will take 'Built-in'...");
if (CheckAvailableDeviceName("Built-in Microphone", id)
|| CheckAvailableDeviceName("Built-in Line", id)) {
jack_log("JackCoreAudioDriver::GetDefaultInputDevice : output = %ld", *id);
return noErr;
} else {
jack_error("Cannot find any input device to use...");
return -1;
}
}
jack_log("JackCoreAudioDriver::GetDefaultInputDevice : input = %ld ", inDefault);
*id = inDefault;
@@ -632,8 +638,14 @@ OSStatus JackCoreAudioDriver::GetDefaultOutputDevice(AudioDeviceID* id)
}

if (outDefault == 0) {
jack_error("Error default output device is 0, please select a correct one !!");
return -1;
jack_error("Error default ouput device is 0, will take 'Built-in'...");
if (CheckAvailableDeviceName("Built-in Output", id)) {
jack_log("JackCoreAudioDriver::GetDefaultOutputDevice : output = %ld", *id);
return noErr;
} else {
jack_error("Cannot find any output device to use...");
return -1;
}
}
jack_log("JackCoreAudioDriver::GetDefaultOutputDevice : output = %ld", outDefault);
*id = outDefault;
@@ -1240,6 +1252,7 @@ int JackCoreAudioDriver::SetupDevices(const char* capture_driver_uid,
return -1;
}
}
if (GetDeviceNameFromID(fDeviceID, capture_driver_name) != noErr || GetDeviceNameFromID(fDeviceID, playback_driver_name) != noErr) {
jack_error("Cannot get device name from device ID");
return -1;
@@ -1299,6 +1312,7 @@ int JackCoreAudioDriver::SetupDevices(const char* capture_driver_uid,

// Capture only
} else if (strcmp(capture_driver_uid, "") != 0) {
jack_log("JackCoreAudioDriver::SetupDevices : capture only");
if (GetDeviceIDFromUID(capture_driver_uid, &fDeviceID) != noErr) {
jack_log("JackCoreAudioDriver::SetupDevices : will take default input");
@@ -1307,6 +1321,7 @@ int JackCoreAudioDriver::SetupDevices(const char* capture_driver_uid,
return -1;
}
}
if (GetDeviceNameFromID(fDeviceID, capture_driver_name) != noErr) {
jack_error("Cannot get device name from device ID");
return -1;
@@ -1320,6 +1335,7 @@ int JackCoreAudioDriver::SetupDevices(const char* capture_driver_uid,

// Playback only
} else if (strcmp(playback_driver_uid, "") != 0) {
jack_log("JackCoreAudioDriver::SetupDevices : playback only");
if (GetDeviceIDFromUID(playback_driver_uid, &fDeviceID) != noErr) {
jack_log("JackCoreAudioDriver::SetupDevices : will take default output");
@@ -1328,6 +1344,7 @@ int JackCoreAudioDriver::SetupDevices(const char* capture_driver_uid,
return -1;
}
}
if (GetDeviceNameFromID(fDeviceID, playback_driver_name) != noErr) {
jack_error("Cannot get device name from device ID");
return -1;


Loading…
Cancel
Save