X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Fwx_util.cc;h=dc6bbfdc15dc72de53a119cc465bda63301a54a9;hb=2b7a83a4bb3a7874444629987f992fbef78cde86;hp=074f47d61bebd2a61ff77ee4d76bbe730ee7aff5;hpb=2efbbc57d55fec1244f4ac3db949f0e7f90ceda5;p=dcpomatic.git diff --git a/src/wx/wx_util.cc b/src/wx/wx_util.cc index 074f47d61..dc6bbfdc1 100644 --- a/src/wx/wx_util.cc +++ b/src/wx/wx_util.cc @@ -42,6 +42,7 @@ LIBDCP_DISABLE_WARNINGS #include #include #include +#include LIBDCP_ENABLE_WARNINGS #include @@ -220,6 +221,13 @@ string_client_data (wxClientData* o) } +string +selection_string_client_data(wxChoice* choice) +{ + return string_client_data(choice->GetClientObject(choice->GetSelection())); +} + + void checked_set (FilePickerCtrl* widget, boost::filesystem::path value) { @@ -732,3 +740,64 @@ report_config_load_failure(wxWindow* parent, Config::LoadFailure what) } } + +static AudioAPI wasapi(_("WASAPI"), "wasapi", RtAudio::WINDOWS_WASAPI); +static AudioAPI asio(_("ASIO"), "asio", RtAudio::WINDOWS_ASIO); +static AudioAPI pulse(_("PulseAudio"), "pulse", RtAudio::LINUX_PULSE); +static AudioAPI alsa(_("ALSA"), "alsa", RtAudio::LINUX_ALSA); +static AudioAPI core(_("CoreAudio"), "core", RtAudio::MACOSX_CORE); + + +vector +audio_apis() +{ +#ifdef DCPOMATIC_WINDOWS + return { wasapi, asio }; + }; +#endif +#ifdef DCPOMATIC_LINUX + return { pulse, alsa }; +#endif +#ifdef DCPOMATIC_OSX + return { core }; +#endif +} + + +AudioAPI +id_to_audio_api(string id) +{ + const auto apis = audio_apis(); + auto iter = std::find_if(apis.begin(), apis.end(), [&id](AudioAPI const& api) { return api.id() == id; }); + if (iter == apis.end()) { + return apis[0]; + } + + return *iter; +} + + +AudioAPI +id_to_audio_api(optional id) +{ + const auto apis = audio_apis(); + if (!id) { + return apis[0]; + } + + return id_to_audio_api(*id); +} + + +AudioAPI +index_to_audio_api(int index) +{ + const auto apis = audio_apis(); + if (index < 0 || index >= static_cast(apis.size())) { + return apis[0]; + } + + return apis[index]; +} + +