X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fconfig_dialog.cc;fp=src%2Fwx%2Fconfig_dialog.cc;h=104835f4a772e6338c1d5e71e5251c355ec1eaa7;hb=595d3ce932864fa5fb35cf9f52ac50178b8bd173;hp=00ae80a4c8f1f30079efa58d555ced06cb7cb803;hpb=a467249e1eb0dd1c19be19d040b9ded2eee42ef9;p=dcpomatic.git diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc index 00ae80a4c..104835f4a 100644 --- a/src/wx/config_dialog.cc +++ b/src/wx/config_dialog.cc @@ -880,6 +880,14 @@ SoundPage::setup () _sound_output_details->SetFont (font); RtAudio audio (DCPOMATIC_RTAUDIO_API); +#if (RTAUDIO_VERSION_MAJOR >= 6) + for (auto device_id: audio.getDeviceIds()) { + auto dev = audio.getDeviceInfo(device_id); + if (dev.outputChannels > 0) { + _sound_output->Append(std_to_wx(dev.name)); + } + } +#else for (unsigned int i = 0; i < audio.getDeviceCount(); ++i) { try { auto dev = audio.getDeviceInfo (i); @@ -890,6 +898,7 @@ SoundPage::setup () /* Something went wrong so let's just ignore that device */ } } +#endif _sound->bind(&SoundPage::sound_changed, this); _sound_output->Bind (wxEVT_CHOICE, bind(&SoundPage::sound_output_changed, this)); @@ -921,11 +930,15 @@ SoundPage::sound_output_changed () RtAudio audio (DCPOMATIC_RTAUDIO_API); auto const so = get_sound_output(); string default_device; +#if (RTAUDIO_VERSION_MAJOR >= 6) + default_device = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name; +#else try { default_device = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name; } catch (RtAudioError&) { /* Never mind */ } +#endif if (!so || *so == default_device) { Config::instance()->unset_sound_output (); } else { @@ -948,11 +961,15 @@ SoundPage::config_changed () } else { /* No configured output means we should use the default */ RtAudio audio (DCPOMATIC_RTAUDIO_API); +#if (RTAUDIO_VERSION_MAJOR >= 6) + configured_so = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name; +#else try { configured_so = audio.getDeviceInfo(audio.getDefaultOutputDevice()).name; } catch (RtAudioError&) { /* Probably no audio devices at all */ } +#endif } if (configured_so && current_so != configured_so) { @@ -982,6 +999,14 @@ SoundPage::config_changed () int channels = 0; if (configured_so) { +#if (RTAUDIO_VERSION_MAJOR >= 6) + for (auto device_id: audio.getDeviceIds()) { + auto info = audio.getDeviceInfo(device_id); + if (info.name == *configured_so && info.outputChannels > 0) { + channels = info.outputChannels; + } + } +#else for (unsigned int i = 0; i < audio.getDeviceCount(); ++i) { try { auto info = audio.getDeviceInfo(i); @@ -992,6 +1017,7 @@ SoundPage::config_changed () /* Never mind */ } } +#endif } _sound_output_details->SetLabel (