Fixed: Reimplemented Voicemeeter integration (based on official examples) to fix stuttering issues.

This commit is contained in:
jthedering committed 2022-05-15 18:27:24 +00:00
1 parent da3341ed42
commit 93af3de251
5 files changed
+331 -142

No files matched your search

+29 -8
View File
@@ -1,6 +1,6 @@
/*
This file is part of Equalizer APO, a system-wide equalizer.
Copyright (C) 2017 Jonas Thedering
Copyright (C) 2022 Jonas Thedering
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -29,20 +29,41 @@ class VoicemeeterClient
public:
VoicemeeterClient(const std::vector<std::wstring>& outputs);
~VoicemeeterClient();
void start();
void stop();
void run();
void handle(long nCommand, void* lpData, long nnn);
bool restart = false;
private:
void initSoftware();
void detectVoicemeeterType();
void endSoftware();
void handleCommand(WPARAM wparam, LPARAM lparam);
bool isBufferSilent(float** sampleData, long sampleCount);
std::vector<std::wstring> outputs;
unsigned long mainThreadId;
T_VBVMR_INTERFACE vmr;
size_t wTimer = 0;
bool connected = true;
float sampleRate = 0.0f;
unsigned maxFrameCount = 0;
std::vector<FilterEngine*> engines;
std::vector<int> idleSampleCounts;
bool loggedIn = false;
long voicemeeterType = 1;
std::vector<std::wstring> outputs;
};
class InitError
{
public:
InitError(const std::wstring& message)
: message(message)
{
}
std::wstring getMessage()
{
return message;
}
private:
std::wstring message;
};