- if (!b_alive) {
- msg_Warn(p_aout, "selected audio device is not alive, switching to default device with id %i", p_sys->i_default_dev);
- p_sys->i_selected_dev = p_sys->i_default_dev;
- p_sys->b_selected_dev_is_digital = false;
+ if (!b_alive || p_sys->i_selected_dev == 0) {
+ msg_Warn(p_aout, "selected audio device is not alive, switching to default device");
+
+ AudioObjectID defaultDeviceID = 0;
+ UInt32 propertySize = 0;
+ AudioObjectPropertyAddress defaultDeviceAddress = { kAudioHardwarePropertyDefaultOutputDevice, kAudioDevicePropertyScopeOutput, kAudioObjectPropertyElementMaster };
+ propertySize = sizeof(AudioObjectID);
+ err = AudioObjectGetPropertyData(kAudioObjectSystemObject, &defaultDeviceAddress, 0, NULL, &propertySize, &defaultDeviceID);
+ if (err != noErr) {
+ msg_Err(p_aout, "could not get default audio device [%4.4s]", (char *)&err);
+ goto error;
+ }
+ else
+ msg_Dbg(p_aout, "using default audio device %i", defaultDeviceID);
+
+ p_sys->i_selected_dev = defaultDeviceID;