Files
obs-studio/plugins/win-wasapi/wasapi-notify.hpp
2024-10-04 18:19:27 -04:00

32 lines
779 B
C++

#pragma once
#include <util/windows/ComPtr.hpp>
#include <Mmdeviceapi.h>
#include <unordered_map>
#include <functional>
#include <mutex>
typedef std::function<void(EDataFlow, ERole, LPCWSTR)> WASAPINotifyDefaultDeviceChangedCallback;
class NotificationClient;
class WASAPINotify {
public:
WASAPINotify();
~WASAPINotify();
void AddDefaultDeviceChangedCallback(void *handle, WASAPINotifyDefaultDeviceChangedCallback cb);
void RemoveDefaultDeviceChangedCallback(void *handle);
private:
void OnDefaultDeviceChanged(EDataFlow flow, ERole role, LPCWSTR id);
std::mutex mutex;
ComPtr<IMMDeviceEnumerator> enumerator;
ComPtr<NotificationClient> notificationClient;
std::unordered_map<void *, WASAPINotifyDefaultDeviceChangedCallback> defaultDeviceChangedCallbacks;
};