diff --git a/client/client_settings.hpp b/client/client_settings.hpp index aa0156ca..4d795c32 100644 --- a/client/client_settings.hpp +++ b/client/client_settings.hpp @@ -27,13 +27,11 @@ struct ClientSettings { -#ifdef HAS_WASAPI - enum class WasapiMode + enum class SharingMode { - SHARED, - EXCLUSIVE + exclusive, + shared }; -#endif struct ServerSettings { @@ -47,9 +45,7 @@ struct ClientSettings int latency{0}; PcmDevice pcm_device; SampleFormat sample_format; -#ifdef HAS_WASAPI - WasapiMode wasapi_mode{WasapiMode::SHARED}; -#endif + SharingMode sharing_mode{SharingMode::shared}; }; struct LoggingSettings diff --git a/client/controller.cpp b/client/controller.cpp index d54192fd..aff4a89a 100644 --- a/client/controller.cpp +++ b/client/controller.cpp @@ -145,7 +145,7 @@ void Controller::onMessageReceived(ClientConnection* /*connection*/, const msg:: #endif #ifdef HAS_WASAPI if (!player_ && (player_name.empty() || (player_name == "wasapi"))) - player_ = make_unique(pcm_device, stream_, settings_.player.wasapi_mode); + player_ = make_unique(pcm_device, stream_, settings_.player.sharing_mode); #endif if (!player_) throw SnapException("No audio player support"); diff --git a/client/player/wasapi_player.cpp b/client/player/wasapi_player.cpp index 017e12c3..a9256c5b 100644 --- a/client/player/wasapi_player.cpp +++ b/client/player/wasapi_player.cpp @@ -68,7 +68,7 @@ EXTERN_C const PROPERTYKEY DECLSPEC_SELECTANY PKEY_Device_FriendlyName = {{0xa45 throw SnapException(ss.str()); \ } -WASAPIPlayer::WASAPIPlayer(const PcmDevice& pcmDevice, std::shared_ptr stream, ClientSettings::WasapiMode mode) : Player(pcmDevice, stream), mode_(mode) +WASAPIPlayer::WASAPIPlayer(const PcmDevice& pcmDevice, std::shared_ptr stream, ClientSettings::SharingMode mode) : Player(pcmDevice, stream), mode_(mode) { HRESULT hr = CoInitializeEx(NULL, COINIT_MULTITHREADED); CHECK_HR(hr); @@ -217,7 +217,7 @@ void WASAPIPlayer::worker() hr = device->Activate(IID_IAudioClient, CLSCTX_SERVER, NULL, (void**)&audioClient); CHECK_HR(hr); - if (mode_ == ClientSettings::WasapiMode::EXCLUSIVE) + if (mode_ == ClientSettings::SharingMode::exclusive) { hr = audioClient->IsFormatSupported(AUDCLNT_SHAREMODE_EXCLUSIVE, &(waveformatExtended->Format), NULL); CHECK_HR(hr); @@ -245,10 +245,10 @@ void WASAPIPlayer::worker() hr = audioClient->GetDevicePeriod(NULL, &hnsRequestedDuration); CHECK_HR(hr); - LOG(INFO, LOG_TAG) << "Initializing WASAPI in " << (mode_ == ClientSettings::WasapiMode::SHARED ? "shared" : "exclusive") << " mode\n"; + LOG(INFO, LOG_TAG) << "Initializing WASAPI in " << (mode_ == ClientSettings::SharingMode::shared ? "shared" : "exclusive") << " mode\n"; - _AUDCLNT_SHAREMODE share_mode = mode_ == ClientSettings::WasapiMode::SHARED ? AUDCLNT_SHAREMODE_SHARED : AUDCLNT_SHAREMODE_EXCLUSIVE; - DWORD stream_flags = mode_ == ClientSettings::WasapiMode::SHARED + _AUDCLNT_SHAREMODE share_mode = mode_ == ClientSettings::SharingMode::shared ? AUDCLNT_SHAREMODE_SHARED : AUDCLNT_SHAREMODE_EXCLUSIVE; + DWORD stream_flags = mode_ == ClientSettings::SharingMode::shared ? AUDCLNT_STREAMFLAGS_EVENTCALLBACK | AUDCLNT_STREAMFLAGS_AUTOCONVERTPCM | AUDCLNT_STREAMFLAGS_SRC_DEFAULT_QUALITY : AUDCLNT_STREAMFLAGS_EVENTCALLBACK; @@ -339,7 +339,7 @@ void WASAPIPlayer::worker() clock->GetPosition(&position, NULL); UINT32 padding = 0; - if (mode_ == ClientSettings::WasapiMode::SHARED) + if (mode_ == ClientSettings::SharingMode::shared) { hr = audioClient->GetCurrentPadding(&padding); CHECK_HR(hr); diff --git a/client/player/wasapi_player.h b/client/player/wasapi_player.h index 6bf9f276..0d987767 100644 --- a/client/player/wasapi_player.h +++ b/client/player/wasapi_player.h @@ -93,7 +93,7 @@ public: class WASAPIPlayer : public Player { public: - WASAPIPlayer(const PcmDevice& pcmDevice, std::shared_ptr stream, ClientSettings::WasapiMode mode); + WASAPIPlayer(const PcmDevice& pcmDevice, std::shared_ptr stream, ClientSettings::SharingMode mode); virtual ~WASAPIPlayer(); static std::vector pcm_list(void); @@ -103,7 +103,7 @@ protected: private: AudioSessionEventListener* audioEventListener_; - ClientSettings::WasapiMode mode_; + ClientSettings::SharingMode mode_; }; #endif diff --git a/client/snapclient.cpp b/client/snapclient.cpp index 2fd8585d..0a38549e 100644 --- a/client/snapclient.cpp +++ b/client/snapclient.cpp @@ -118,7 +118,7 @@ int main(int argc, char** argv) auto sample_format = op.add>("", "sampleformat", "resample audio stream to ::", ""); #endif #ifdef HAS_WASAPI - auto wasapi_mode = op.add>("", "wasapimode", "WASAPI mode to use [shared/exclusive]", "shared"); + auto sharing_mode = op.add>("", "sharingmode", "audio mode to use [shared/exclusive]", "shared"); #endif try @@ -243,10 +243,10 @@ int main(int argc, char** argv) #endif #ifdef HAS_WASAPI - if (wasapi_mode->is_set()) + if (sharing_mode->is_set()) { - settings.player.wasapi_mode = - (strcmp(wasapi_mode->value().c_str(), "exclusive") == 0) ? ClientSettings::WasapiMode::EXCLUSIVE : ClientSettings::WasapiMode::SHARED; + settings.player.sharing_mode = + (sharing_mode->value() == "exclusive") ? ClientSettings::SharingMode::exclusive : ClientSettings::SharingMode::shared; } #endif