mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-05 02:53:32 +00:00
Compare commits
2 commits
d76491f879
...
bab1614dc8
Author | SHA1 | Date | |
---|---|---|---|
|
bab1614dc8 | ||
|
bb14630d94 |
|
@ -372,6 +372,11 @@ void VSTPlugin::closeEditor()
|
||||||
editorWidget->close();
|
editorWidget->close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int32_t VSTPlugin::getUniqueID()
|
||||||
|
{
|
||||||
|
return effect ? effect->uniqueID : 0;
|
||||||
|
}
|
||||||
|
|
||||||
std::string VSTPlugin::getEffectPath()
|
std::string VSTPlugin::getEffectPath()
|
||||||
{
|
{
|
||||||
return pluginPath;
|
return pluginPath;
|
||||||
|
|
|
@ -99,6 +99,7 @@ public:
|
||||||
obs_audio_data *process(struct obs_audio_data *audio);
|
obs_audio_data *process(struct obs_audio_data *audio);
|
||||||
bool openInterfaceWhenActive = false;
|
bool openInterfaceWhenActive = false;
|
||||||
bool vstLoaded();
|
bool vstLoaded();
|
||||||
|
int32_t getUniqueID();
|
||||||
|
|
||||||
bool isEditorOpen();
|
bool isEditorOpen();
|
||||||
void onEditorClosed();
|
void onEditorClosed();
|
||||||
|
|
|
@ -130,14 +130,25 @@ static void vst_update(void *data, obs_data_t *settings)
|
||||||
}
|
}
|
||||||
vstPlugin->loadEffectFromPath(std::string(path));
|
vstPlugin->loadEffectFromPath(std::string(path));
|
||||||
|
|
||||||
std::string hash = getFileMD5(path);
|
const int32_t unique_id = vstPlugin->getUniqueID();
|
||||||
const char *chunkHash = obs_data_get_string(settings, "chunk_hash");
|
const int32_t chunk_unique_id =
|
||||||
|
obs_data_get_int(settings, "chunk_unique_id");
|
||||||
const char *chunkData = obs_data_get_string(settings, "chunk_data");
|
const char *chunkData = obs_data_get_string(settings, "chunk_data");
|
||||||
|
|
||||||
bool chunkHashesMatch = chunkHash && *chunkHash &&
|
bool isChunkMatch =
|
||||||
hash.compare(chunkHash) == 0;
|
(0 != chunk_unique_id && unique_id == chunk_unique_id);
|
||||||
if (chunkData && *chunkData &&
|
|
||||||
(chunkHashesMatch || !chunkHash || !*chunkHash)) {
|
// Fall back to support older sessions saved with MD5 hash.
|
||||||
|
if (!isChunkMatch) {
|
||||||
|
std::string hash = getFileMD5(path);
|
||||||
|
const char *chunkHash =
|
||||||
|
obs_data_get_string(settings, "chunk_hash");
|
||||||
|
|
||||||
|
isChunkMatch = chunkHash && *chunkHash &&
|
||||||
|
hash.compare(chunkHash) == 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (chunkData && *chunkData && isChunkMatch) {
|
||||||
vstPlugin->setChunk(std::string(chunkData));
|
vstPlugin->setChunk(std::string(chunkData));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -155,9 +166,7 @@ static void vst_save(void *data, obs_data_t *settings)
|
||||||
VSTPlugin *vstPlugin = (VSTPlugin *)data;
|
VSTPlugin *vstPlugin = (VSTPlugin *)data;
|
||||||
obs_data_set_string(settings, "chunk_data",
|
obs_data_set_string(settings, "chunk_data",
|
||||||
vstPlugin->getChunk().c_str());
|
vstPlugin->getChunk().c_str());
|
||||||
obs_data_set_string(
|
obs_data_set_int(settings, "chunk_unique_id", vstPlugin->getUniqueID());
|
||||||
settings, "chunk_hash",
|
|
||||||
getFileMD5(vstPlugin->getEffectPath().c_str()).c_str());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct obs_audio_data *vst_filter_audio(void *data,
|
static struct obs_audio_data *vst_filter_audio(void *data,
|
||||||
|
|
Loading…
Reference in a new issue