fix(bridge): VST2 iZotope wrapper 0x7E — add Cores dirs to PATH; skip Ozone Pro fastfail
This commit is contained in:
@@ -456,16 +456,18 @@ bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate,
|
||||
int32 maxBlockSize, std::string& err) {
|
||||
using namespace VST3::Hosting;
|
||||
#ifdef _WIN32
|
||||
// Ozone 11 (iZotope) tự __fastfail (c0000409, license/anti-tamper) khi
|
||||
// load — KHÔNG bị SEH chặn → giết cả bridge process (scan + render +
|
||||
// realtime). Không load: trả lỗi sạch cho chain. Ozone Pro vẫn load OK.
|
||||
// ponytail: muốn chạy Ozone 11 → SandboxVst3Host (mỗi module 1 process).
|
||||
// Ozone 11 / Ozone Pro (iZotope) tự __fastfail (c0000409, license/anti-
|
||||
// tamper) khi load — KHÔNG bị SEH chặn → giết cả bridge process (scan +
|
||||
// render + realtime). Không load: trả lỗi sạch cho chain. WER: Ozone
|
||||
// Pro.vst3 (v9.11.0.1955) cũng crash c0000409 trên fx_vst_bridge.
|
||||
// ponytail: muốn chạy Ozone → SandboxVst3Host (mỗi module 1 process).
|
||||
{
|
||||
std::string low = path;
|
||||
for (auto& c : low) c = (char)std::tolower((unsigned char)c);
|
||||
if (low.find("ozone 11") != std::string::npos) {
|
||||
err = "Ozone 11 not loadable (license fastfail) - use Ozone Pro";
|
||||
std::cerr << "[RenderFx] skip (Ozone 11): " << path << std::endl;
|
||||
if (low.find("ozone 11") != std::string::npos ||
|
||||
low.find("ozone pro") != std::string::npos) {
|
||||
err = "Ozone not loadable (license fastfail) - use another module";
|
||||
std::cerr << "[RenderFx] skip (Ozone fastfail): " << path << std::endl;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -2092,14 +2094,16 @@ int run_scan_dir(const std::string& dirPath) {
|
||||
#ifdef HAVE_VST3SDK
|
||||
for (const auto& p : vst3Paths) {
|
||||
std::vector<ScanEntry> entries;
|
||||
// Ozone 11 (iZotope) tự __fastfail (c0000409, license/anti-tamper)
|
||||
// khi load trong --scan — không bị SEH chặn → chết cả process → mất
|
||||
// TOÀN BỘ dir → FX list rỗng. Không load: emit UNKNOWN (giống skip
|
||||
// module lỗi). ponytail: SandboxVst3Host (mỗi module 1 process).
|
||||
// Ozone 11 / Ozone Pro (iZotope) tự __fastfail (c0000409, license/
|
||||
// anti-tamper) khi load trong --scan — không bị SEH chặn → chết cả
|
||||
// process → mất TOÀN BỘ dir → FX list rỗng. Không load: emit UNKNOWN
|
||||
// (giống skip module lỗi). ponytail: SandboxVst3Host (mỗi module 1
|
||||
// process).
|
||||
{
|
||||
std::string low = p;
|
||||
for (auto& c : low) c = (char)std::tolower((unsigned char)c);
|
||||
if (low.find("ozone 11") != std::string::npos) {
|
||||
if (low.find("ozone 11") != std::string::npos ||
|
||||
low.find("ozone pro") != std::string::npos) {
|
||||
emit(p, p.substr(p.find_last_of("/\\") + 1), false, false, "VST3");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
|
||||
#include "vestige/aeffect.h"
|
||||
|
||||
#include "VstDllSearch.h"
|
||||
|
||||
#include <windows.h>
|
||||
|
||||
#include <cstring>
|
||||
@@ -301,6 +303,11 @@ Vst2Instrument::~Vst2Instrument() {
|
||||
}
|
||||
|
||||
bool Vst2Instrument::loadPlugin(const std::string& path, double sampleRate) {
|
||||
// iZotope VST2 wrapper DLL (iZOzonePro.dll...) LoadLibrary companion core
|
||||
// DLL (iZOzone11Core.dll) ở C:\Program Files\iZotope\<Product>\Cores —
|
||||
// không cạnh wrapper → iZotope SDK tự hiện MessageBox "Fatal Error 0x7E".
|
||||
// Append Cores dirs vào PATH trước khi LoadLibraryA.
|
||||
vstAddDllSearchPath(vstDllSearchExtras());
|
||||
HMODULE h = LoadLibraryA(path.c_str());
|
||||
if (!h) {
|
||||
std::cerr << "[Vst2Instrument] LoadLibraryA failed: " << path
|
||||
|
||||
Reference in New Issue
Block a user