diff --git a/src/tabcontrollers/AudioTabController.cpp b/src/tabcontrollers/AudioTabController.cpp index d13541e..c6a92a6 100644 --- a/src/tabcontrollers/AudioTabController.cpp +++ b/src/tabcontrollers/AudioTabController.cpp @@ -412,7 +412,7 @@ QString AudioTabController::getPlaybackDeviceName( int index ) if ( index >= 0 && static_cast( index ) < m_playbackDevices.size() ) { return QString::fromStdString( - m_playbackDevices[static_cast( index )].second ); + m_playbackDevices[static_cast( index )].name() ); } else { @@ -424,7 +424,7 @@ std::string AudioTabController::getPlaybackDeviceID( int index ) { if ( index >= 0 && static_cast( index ) < m_playbackDevices.size() ) { - return m_playbackDevices[static_cast( index )].first; + return m_playbackDevices[static_cast( index )].id(); } else { @@ -447,7 +447,7 @@ std::string AudioTabController::getRecordingDeviceID( int index ) { if ( index >= 0 && static_cast( index ) < m_playbackDevices.size() ) { - return m_recordingDevices[static_cast( index )].first; + return m_recordingDevices[static_cast( index )].id(); } else { @@ -461,7 +461,7 @@ QString AudioTabController::getRecordingDeviceName( int index ) if ( index >= 0 && static_cast( index ) < m_playbackDevices.size() ) { return QString::fromStdString( - m_recordingDevices[static_cast( index )].second ); + m_recordingDevices[static_cast( index )].name() ); } else { @@ -494,7 +494,7 @@ void AudioTabController::setPlaybackDeviceIndex( int index, bool notify ) { // Code to only change the Device and not apply changes to SteamVR audioManager->setPlaybackDevice( - m_playbackDevices[static_cast( index )].first, notify ); + m_playbackDevices[static_cast( index )].id(), notify ); } else if ( notify ) { @@ -538,7 +538,7 @@ void AudioTabController::setMirrorDeviceIndex( int index, bool notify ) vr::VRSettings()->SetString( vr::k_pch_audio_Section, vr::k_pch_audio_PlaybackMirrorDevice_String, - m_playbackDevices[static_cast( index )].first.c_str(), + m_playbackDevices[static_cast( index )].id().c_str(), &vrSettingsError ); if ( vrSettingsError != vr::VRSettingsError_None ) { @@ -553,7 +553,7 @@ void AudioTabController::setMirrorDeviceIndex( int index, bool notify ) { vr::VRSettings()->Sync(); audioManager->setMirrorDevice( - m_playbackDevices[static_cast( index )].first, + m_playbackDevices[static_cast( index )].id(), notify ); } } @@ -583,8 +583,7 @@ void AudioTabController::setMicDeviceIndex( int index, bool notify ) setMicMuted( false, true ); // code to just change Mic audioManager->setMicDevice( - m_recordingDevices[static_cast( index )].first, - notify ); + m_recordingDevices[static_cast( index )].id(), notify ); if ( tempProx ) { setMicProximitySensorCanMute( true ); @@ -603,7 +602,7 @@ void AudioTabController::findPlaybackDeviceIndex( std::string id, bool notify ) bool deviceFound = false; for ( auto d : m_playbackDevices ) { - if ( d.first.compare( id ) == 0 ) + if ( d.id().compare( id ) == 0 ) { deviceFound = true; break; @@ -629,7 +628,7 @@ void AudioTabController::findMirrorDeviceIndex( std::string id, bool notify ) bool deviceFound = false; for ( auto d : m_playbackDevices ) { - if ( d.first.compare( id ) == 0 ) + if ( d.id().compare( id ) == 0 ) { deviceFound = true; break; @@ -655,7 +654,7 @@ void AudioTabController::findMicDeviceIndex( std::string id, bool notify ) bool deviceFound = false; for ( auto d : m_recordingDevices ) { - if ( d.first.compare( id ) == 0 ) + if ( d.id().compare( id ) == 0 ) { deviceFound = true; break; @@ -1085,7 +1084,7 @@ int AudioTabController::getPlaybackIndex( std::string str ) // increment it. for ( unsigned int i = 0; i < m_playbackDevices.size(); i++ ) { - if ( str.compare( m_playbackDevices[i].first ) == 0 ) + if ( str.compare( m_playbackDevices[i].id() ) == 0 ) { return static_cast( i ); } @@ -1099,7 +1098,7 @@ int AudioTabController::getRecordingIndex( std::string str ) // increment it. for ( unsigned int i = 0; i < m_recordingDevices.size(); i++ ) { - if ( str.compare( m_recordingDevices[i].first ) == 0 ) + if ( str.compare( m_recordingDevices[i].id() ) == 0 ) { return static_cast( i ); } @@ -1113,7 +1112,7 @@ int AudioTabController::getMirrorIndex( std::string str ) // increment it. for ( unsigned int i = 0; i < m_playbackDevices.size(); i++ ) { - if ( str.compare( m_playbackDevices[i].first ) == 0 ) + if ( str.compare( m_playbackDevices[i].id() ) == 0 ) { return static_cast( i ); } @@ -1137,7 +1136,7 @@ void AudioTabController::setDefaultPlayback( int index, bool notify ) vr::VRSettings()->SetString( vr::k_pch_audio_Section, vr::k_pch_audio_PlaybackDeviceOverrideName_String, - m_playbackDevices[static_cast( index )].first.c_str(), + m_playbackDevices[static_cast( index )].id().c_str(), &vrSettingsError ); if ( vrSettingsError != vr::VRSettingsError_None ) { @@ -1151,7 +1150,7 @@ void AudioTabController::setDefaultPlayback( int index, bool notify ) { vr::VRSettings()->Sync(); audioManager->setPlaybackDevice( - m_playbackDevices[static_cast( index )].first, notify ); + m_playbackDevices[static_cast( index )].id(), notify ); } } @@ -1161,7 +1160,7 @@ void AudioTabController::setDefaultMic( int index, bool notify ) vr::VRSettings()->SetString( vr::k_pch_audio_Section, vr::k_pch_audio_RecordingDeviceOverrideName_String, - m_recordingDevices[static_cast( index )].first.c_str(), + m_recordingDevices[static_cast( index )].id().c_str(), &vrSettingsError ); if ( vrSettingsError != vr::VRSettingsError_None ) { @@ -1175,7 +1174,7 @@ void AudioTabController::setDefaultMic( int index, bool notify ) { vr::VRSettings()->Sync(); audioManager->setMicDevice( - m_recordingDevices[static_cast( index )].first, notify ); + m_recordingDevices[static_cast( index )].id(), notify ); } } @@ -1208,7 +1207,7 @@ void AudioTabController::setDefaultMirror( int index, bool notify ) vr::VRSettings()->SetString( vr::k_pch_audio_Section, vr::k_pch_audio_PlaybackMirrorDevice_String, - m_playbackDevices[static_cast( index )].first.c_str(), + m_playbackDevices[static_cast( index )].id().c_str(), &vrSettingsError ); if ( vrSettingsError != vr::VRSettingsError_None ) { @@ -1222,7 +1221,7 @@ void AudioTabController::setDefaultMirror( int index, bool notify ) { vr::VRSettings()->Sync(); audioManager->setMirrorDevice( - m_playbackDevices[static_cast( index )].first, notify ); + m_playbackDevices[static_cast( index )].id(), notify ); } } } diff --git a/src/tabcontrollers/AudioTabController.h b/src/tabcontrollers/AudioTabController.h index 368807d..2f6950f 100644 --- a/src/tabcontrollers/AudioTabController.h +++ b/src/tabcontrollers/AudioTabController.h @@ -91,8 +91,8 @@ private: bool m_pttActive = false; std::unique_ptr audioManager; - std::vector> m_recordingDevices; - std::vector> m_playbackDevices; + std::vector m_recordingDevices; + std::vector m_playbackDevices; std::string lastMirrorDevId; std::recursive_mutex eventLoopMutex; diff --git a/src/tabcontrollers/audiomanager/AudioManager.h b/src/tabcontrollers/audiomanager/AudioManager.h index db33cd5..0a16948 100644 --- a/src/tabcontrollers/audiomanager/AudioManager.h +++ b/src/tabcontrollers/audiomanager/AudioManager.h @@ -8,6 +8,29 @@ namespace advsettings { class AudioTabController; +class AudioDevice +{ +public: + AudioDevice( const std::string id, const std::string name ) + : m_id( id ), m_name( name ) + { + } + + [[nodiscard]] std::string id() const noexcept + { + return m_id; + } + + [[nodiscard]] std::string name() const noexcept + { + return m_name; + } + +private: + const std::string m_id; + const std::string m_name; +}; + class AudioManager { public: @@ -39,10 +62,8 @@ public: virtual bool getMicMuted() = 0; virtual bool setMicMuted( bool value ) = 0; - virtual std::vector> - getRecordingDevices() = 0; - virtual std::vector> - getPlaybackDevices() = 0; + virtual std::vector getRecordingDevices() = 0; + virtual std::vector getPlaybackDevices() = 0; }; } // namespace advsettings diff --git a/src/tabcontrollers/audiomanager/AudioManagerDummy.h b/src/tabcontrollers/audiomanager/AudioManagerDummy.h index 7302c25..185e7c3 100644 --- a/src/tabcontrollers/audiomanager/AudioManagerDummy.h +++ b/src/tabcontrollers/audiomanager/AudioManagerDummy.h @@ -36,10 +36,8 @@ public: virtual bool getMicMuted() override; virtual bool setMicMuted( bool value ) override; - virtual std::vector> - getRecordingDevices() override; - virtual std::vector> - getPlaybackDevices() override; + virtual std::vector getRecordingDevices() override; + virtual std::vector getPlaybackDevices() override; }; } // namespace advsettings diff --git a/src/tabcontrollers/audiomanager/AudioManagerWindows.cpp b/src/tabcontrollers/audiomanager/AudioManagerWindows.cpp index 5e1fa93..7387a89 100644 --- a/src/tabcontrollers/audiomanager/AudioManagerWindows.cpp +++ b/src/tabcontrollers/audiomanager/AudioManagerWindows.cpp @@ -354,14 +354,12 @@ bool AudioManagerWindows::setMicMuted( bool value ) return false; } -std::vector> - AudioManagerWindows::getRecordingDevices() +std::vector AudioManagerWindows::getRecordingDevices() { return getDevices( audioDeviceEnumerator, eCapture ); } -std::vector> - AudioManagerWindows::getPlaybackDevices() +std::vector AudioManagerWindows::getPlaybackDevices() { return getDevices( audioDeviceEnumerator, eRender ); } @@ -505,11 +503,11 @@ std::string AudioManagerWindows::getDeviceId( IMMDevice* device ) return ""; } -std::vector> +std::vector AudioManagerWindows::getDevices( IMMDeviceEnumerator* deviceEnumerator, EDataFlow dataFlow ) { - std::vector> retval; + std::vector retval; IMMDeviceCollection* ppDevices = nullptr; if ( deviceEnumerator->EnumAudioEndpoints( dataFlow, DEVICE_STATE_ACTIVE, &ppDevices ) @@ -523,8 +521,8 @@ std::vector> ppDevices->Item( i, &device ); if ( device ) { - retval.emplace_back( getDeviceId( device ), - getDeviceName( device ) ); + retval.emplace_back( AudioDevice( getDeviceId( device ), + getDeviceName( device ) ) ); } } ppDevices->Release(); diff --git a/src/tabcontrollers/audiomanager/AudioManagerWindows.h b/src/tabcontrollers/audiomanager/AudioManagerWindows.h index e996418..967c4ae 100644 --- a/src/tabcontrollers/audiomanager/AudioManagerWindows.h +++ b/src/tabcontrollers/audiomanager/AudioManagerWindows.h @@ -56,10 +56,8 @@ public: virtual bool getMicMuted() override; virtual bool setMicMuted( bool value ) override; - virtual std::vector> - getRecordingDevices() override; - virtual std::vector> - getPlaybackDevices() override; + virtual std::vector getRecordingDevices() override; + virtual std::vector getPlaybackDevices() override; void deleteMirrorDevice(); @@ -91,8 +89,8 @@ private: IAudioEndpointVolume* getAudioEndpointVolume( IMMDevice* device ); std::string getDeviceName( IMMDevice* device ); std::string getDeviceId( IMMDevice* device ); - std::vector> - getDevices( IMMDeviceEnumerator* deviceEnumerator, EDataFlow dataFlow ); + std::vector getDevices( IMMDeviceEnumerator* deviceEnumerator, + EDataFlow dataFlow ); }; } // namespace advsettings