failed loudness eq experiment
This commit is contained in:
@@ -1,15 +1,18 @@
|
||||
#include "AudioApi.h"
|
||||
#include "Util.h"
|
||||
#include "PolicyConfig.h"
|
||||
|
||||
#include <windows.h>
|
||||
#include <functiondiscoverykeys.h>
|
||||
#include <endpointvolume.h>
|
||||
|
||||
#include <initguid.h>
|
||||
#include <mmdeviceapi.h>
|
||||
|
||||
#include <array>
|
||||
#include <vector>
|
||||
#include <algorithm>
|
||||
|
||||
#include "Util.h"
|
||||
#include "AudioApi.h"
|
||||
#include "PolicyConfig.h"
|
||||
#include <iostream>
|
||||
|
||||
void initAudio(ApplicationData& appData)
|
||||
{
|
||||
@@ -184,4 +187,58 @@ bool isMuted(IAudioEndpointVolume* volumeInterface)
|
||||
void setMuted(IAudioEndpointVolume* volumeInterface, bool newState)
|
||||
{
|
||||
volumeInterface->SetMute(static_cast<BOOL>(newState), NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void CreateLoudnessEqualizationKey(PROPERTYKEY& key)
|
||||
{
|
||||
// Realtek: const wchar_t* guid = L"E0A941A0-88A2-4df5-8D6B-DD20BB06E8FB";
|
||||
const wchar_t* guid = L"FC52A749-4BE9-4510-896E-966BA6525980";
|
||||
UuidFromString((RPC_WSTR)guid, &key.fmtid);
|
||||
key.pid = 3;
|
||||
}
|
||||
|
||||
AudioProcessingState getAudioProcessing(AudioDevice& device)
|
||||
{
|
||||
return AudioProcessingState::Unknown;
|
||||
|
||||
LPWSTR pwstrEndpointId = NULL;
|
||||
HRESULT hr = device.device->GetId(&pwstrEndpointId);
|
||||
|
||||
IPolicyConfig* pPolicyConfig;
|
||||
hr = CoCreateInstance(__uuidof(CPolicyConfigClient), NULL, CLSCTX_ALL, IID_PPV_ARGS(&pPolicyConfig));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
PROPVARIANT var;
|
||||
PropVariantInit(&var);
|
||||
|
||||
PROPERTYKEY key{};
|
||||
CreateLoudnessEqualizationKey(key);
|
||||
|
||||
hr = pPolicyConfig->GetPropertyValue(pwstrEndpointId, TRUE, key, &var);
|
||||
pPolicyConfig->Release();
|
||||
return var.boolVal ? AudioProcessingState::Disabled : AudioProcessingState::Enabled;
|
||||
}
|
||||
return AudioProcessingState::Unknown;
|
||||
}
|
||||
|
||||
void setAudioProcessing(AudioDevice& device, bool newVal)
|
||||
{
|
||||
return;
|
||||
|
||||
LPWSTR pwstrEndpointId = NULL;
|
||||
HRESULT hr = device.device->GetId(&pwstrEndpointId);
|
||||
|
||||
IPolicyConfig* pPolicyConfig;
|
||||
hr = CoCreateInstance(__uuidof(CPolicyConfigClient), NULL, CLSCTX_ALL, IID_PPV_ARGS(&pPolicyConfig));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
PROPVARIANT var;
|
||||
PropVariantInit(&var);
|
||||
var.vt = VT_UI4;
|
||||
var.uintVal = newVal ? ENDPOINT_SYSFX_ENABLED : ENDPOINT_SYSFX_DISABLED;
|
||||
PROPERTYKEY key{};
|
||||
CreateLoudnessEqualizationKey(key);
|
||||
hr = pPolicyConfig->SetPropertyValue(pwstrEndpointId, TRUE, key, &var);
|
||||
pPolicyConfig->Release();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user