Commit 678b3cae authored by Stephane Letz's avatar Stephane Letz
Browse files

Improve default input/ouput device selection in JackCoreAudioDriver.

parent b9ff177d
......@@ -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;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment