debug(renderfx): log tung buoc load VST3 de xac dinh diem treo (Ozone Pro)
This commit is contained in:
@@ -438,20 +438,27 @@ bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate,
|
||||
setPluginSearchPath(path);
|
||||
#endif
|
||||
Module::Ptr module = Module::create(path, err);
|
||||
if (!module) return false;
|
||||
if (!module) { std::cerr << "[RenderFx] STEP module.create FAILED: " << err << std::endl; return false; }
|
||||
std::cerr << "[RenderFx] STEP module.create OK" << std::endl;
|
||||
const PluginFactory& factory = module->getFactory();
|
||||
ClassInfo chosen;
|
||||
if (!pickFxClass(factory, chosen)) {
|
||||
err = "no audio-effect class in " + path;
|
||||
std::cerr << "[RenderFx] STEP pickFxClass FAILED: " << err << std::endl;
|
||||
return false;
|
||||
}
|
||||
std::cerr << "[RenderFx] STEP pickFxClass OK: " << chosen.name() << std::endl;
|
||||
IPtr<IComponent> component = factory.createInstance<IComponent>(chosen.ID());
|
||||
if (!component) { err = "createInstance<IComponent> failed"; return false; }
|
||||
if (!component) { std::cerr << "[RenderFx] STEP createInstance FAILED" << std::endl; err = "createInstance<IComponent> failed"; return false; }
|
||||
std::cerr << "[RenderFx] STEP createInstance OK" << std::endl;
|
||||
IPtr<HostApplication> hostApp = owned(new HostApplication());
|
||||
FUnknownPtr<Steinberg::IPluginBase> plugBase(component.get());
|
||||
if (!plugBase || plugBase->initialize(hostApp) != kResultOk) {
|
||||
err = "component initialize failed"; return false;
|
||||
err = "component initialize failed";
|
||||
std::cerr << "[RenderFx] STEP initialize FAILED" << std::endl;
|
||||
return false;
|
||||
}
|
||||
std::cerr << "[RenderFx] STEP initialize OK" << std::endl;
|
||||
IPtr<IEditController> controller;
|
||||
bool isSingle = false;
|
||||
if (component->queryInterface(IEditController::iid, (void**)&controller) == kResultTrue) {
|
||||
@@ -467,13 +474,15 @@ bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate,
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!controller) { err = "no edit controller"; return false; }
|
||||
if (!controller) { err = "no edit controller"; std::cerr << "[RenderFx] STEP controller FAILED" << std::endl; return false; }
|
||||
std::cerr << "[RenderFx] STEP controller OK" << std::endl;
|
||||
|
||||
s->controllerIsComponent = isSingle;
|
||||
controller->setComponentHandler(&s->componentHandler);
|
||||
FUnknownPtr<IConnectionPoint> compCP(component);
|
||||
FUnknownPtr<IConnectionPoint> ctrlCP(controller);
|
||||
if (compCP && ctrlCP) { compCP->connect(ctrlCP); ctrlCP->connect(compCP); }
|
||||
std::cerr << "[RenderFx] STEP connection points OK" << std::endl;
|
||||
|
||||
int32 numAudioInputs = component->getBusCount(kAudio, kInput);
|
||||
for (int32 i = 0; i < numAudioInputs; ++i) component->activateBus(kAudio, kInput, i, true);
|
||||
@@ -483,6 +492,7 @@ bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate,
|
||||
for (int32 i = 0; i < numEventInputs; ++i) component->activateBus(kEvent, kInput, i, true);
|
||||
int32 numEventOutputs = component->getBusCount(kEvent, kOutput);
|
||||
for (int32 i = 0; i < numEventOutputs; ++i) component->activateBus(kEvent, kOutput, i, true);
|
||||
std::cerr << "[RenderFx] STEP buses activated (ain=" << numAudioInputs << " aout=" << numAudioOutputs << ")" << std::endl;
|
||||
if (numAudioInputs < 1 || numAudioOutputs < 1) {
|
||||
err = "plugin has no audio in/out (instrument?)"; return false;
|
||||
}
|
||||
@@ -490,12 +500,18 @@ bool vst3FxLoadInner(Vst3FxState* s, const std::string& path, double sampleRate,
|
||||
FUnknownPtr<IAudioProcessor> processor(component);
|
||||
if (!processor) { err = "no IAudioProcessor"; return false; }
|
||||
ProcessSetup setup{kRealtime, kSample32, maxBlockSize, sampleRate};
|
||||
std::cerr << "[RenderFx] STEP setupProcessing begin" << std::endl;
|
||||
if (processor->setupProcessing(setup) != kResultOk) { err = "setupProcessing failed"; return false; }
|
||||
std::cerr << "[RenderFx] STEP setupProcessing OK" << std::endl;
|
||||
std::cerr << "[RenderFx] STEP setActive begin" << std::endl;
|
||||
if (component->setActive(true) != kResultOk) { err = "setActive failed"; return false; }
|
||||
std::cerr << "[RenderFx] STEP setActive OK" << std::endl;
|
||||
processor->setProcessing(true);
|
||||
std::cerr << "[RenderFx] STEP setProcessing OK" << std::endl;
|
||||
if (!s->processData.prepare(*component, maxBlockSize, kSample32)) {
|
||||
err = "processData.prepare failed"; return false;
|
||||
}
|
||||
std::cerr << "[RenderFx] STEP processData.prepare OK" << std::endl;
|
||||
|
||||
BusInfo bi = {};
|
||||
if (component->getBusInfo(kAudio, kInput, 0, bi) == kResultOk && bi.channelCount > 0)
|
||||
|
||||
Reference in New Issue
Block a user