Added combo-boxes to allow audio device selection.

This commit is contained in:
2017-02-13 22:19:42 +01:00
parent 22af8b9633
commit c8d089957d
7 changed files with 699 additions and 134 deletions
@@ -5,6 +5,7 @@
#include <Mmdeviceapi.h>
#include <Functiondiscoverykeys_devpkey.h>
#include <Endpointvolume.h>
#include "IPolicyConfig.h"
// application namespace
@@ -15,32 +16,45 @@ friend class AudioNotificationClient;
private:
AudioTabController* controller = nullptr;
IMMDeviceEnumerator* audioDeviceEnumerator = nullptr;
IMMDevice* playbackAudioDevice = nullptr;
IMMDevice* mirrorAudioDevice = nullptr;
IAudioEndpointVolume* mirrorAudioEndpointVolume = nullptr;
IMMDevice* micAudioDevice = nullptr;
IAudioEndpointVolume* micAudioEndpointVolume = nullptr;
IPolicyConfig* policyConfig = nullptr;
public:
~AudioManagerWindows();
virtual void init(AudioTabController* controller) override;
virtual void setMirrorDevice(const std::string& id) override;
virtual void deleteMirrorDevice() override;
virtual void setPlaybackDevice(const std::string& id, bool notify = true) override;
virtual std::string getPlaybackDevName() override;
virtual std::string getPlaybackDevId() override;
virtual void setMirrorDevice(const std::string& id, bool notify = true) override;
virtual bool isMirrorValid() override;
virtual std::string getMirrorDevName() override;
virtual std::string getMirrorDevId() override;
virtual float getMirrorVolume() override;
virtual bool setMirrorVolume(float value) override;
virtual bool getMirrorMuted() override;
virtual bool setMirrorMuted(bool value) override;
virtual bool isMicValid() override;
virtual void setMicDevice(const std::string& id, bool notify = true) override;
virtual std::string getMicDevName() override;
virtual std::string getMicDevId() override;
virtual float getMicVolume() override;
virtual bool setMicVolume(float value) override;
virtual bool getMicMuted() override;
virtual bool setMicMuted(bool value) override;
virtual std::vector<std::pair<std::string, std::string>> getRecordingDevices() override;
virtual std::vector<std::pair<std::string, std::string>> getPlaybackDevices() override;
void deleteMirrorDevice();
// from IMMNotificationClient
virtual HRESULT QueryInterface(REFIID riid, void ** ppvObject) override;
virtual ULONG AddRef(void) override;
@@ -53,11 +67,15 @@ public:
private:
IMMDeviceEnumerator* getAudioDeviceEnumerator();
IPolicyConfig* getPolicyConfig();
IMMDevice* getDefaultRecordingDevice(IMMDeviceEnumerator* deviceEnumerator);
IMMDevice* getDefaultPlaybackDevice(IMMDeviceEnumerator* deviceEnumerator);
IMMDevice* getDevice(IMMDeviceEnumerator* deviceEnumerator, const std::string& id);
IMMDevice* getDevice(IMMDeviceEnumerator* deviceEnumerator, LPCWSTR id);
IAudioEndpointVolume* getAudioEndpointVolume(IMMDevice* device);
std::string getDeviceName(IMMDevice* device);
std::string getDeviceId(IMMDevice* device);
std::vector<std::pair<std::string, std::string>> getDevices(IMMDeviceEnumerator* deviceEnumerator, EDataFlow dataFlow);
};
}