Fully implement IAudioPresentationLatency

Now we support all VST 3.1.0 interfaces.
This commit is contained in:
Robbert van der Helm
2021-01-04 22:33:44 +01:00
parent fe8211180f
commit 0e3b5af94e
4 changed files with 20 additions and 5 deletions
+1
View File
@@ -68,6 +68,7 @@ using ControlRequest =
Vst3PluginProxy::Destruct,
Vst3PluginProxy::SetState,
Vst3PluginProxy::GetState,
YaAudioPresentationLatency::SetAudioPresentationLatencySamples,
YaConnectionPoint::Connect,
YaConnectionPoint::Disconnect,
YaConnectionPoint::Notify,
@@ -43,11 +43,12 @@ tresult PLUGIN_API Vst3PluginProxyImpl::setAudioPresentationLatencySamples(
Steinberg::Vst::BusDirection dir,
int32 busIndex,
uint32 latencyInSamples) {
// TODO: Implement
bridge.logger.log(
"TODO: "
"IAudioPresentationLatency::setAudioPresentationLatencySamples()");
return Steinberg::kNotImplemented;
return bridge.send_message(
YaAudioPresentationLatency::SetAudioPresentationLatencySamples{
.instance_id = instance_id(),
.dir = dir,
.bus_index = busIndex,
.latency_in_samples = latencyInSamples});
}
tresult PLUGIN_API Vst3PluginProxyImpl::setBusArrangements(
+11
View File
@@ -36,6 +36,7 @@ InstanceInterfaces::InstanceInterfaces() {}
InstanceInterfaces::InstanceInterfaces(
Steinberg::IPtr<Steinberg::FUnknown> object)
: object(object),
audio_presentation_latency(object),
audio_processor(object),
component(object),
connection_point(object),
@@ -183,6 +184,16 @@ void Vst3Bridge::run() {
return Vst3PluginProxy::GetStateResponse{
.result = result, .updated_state = std::move(stream)};
},
[&](YaAudioPresentationLatency::SetAudioPresentationLatencySamples&
request)
-> YaAudioPresentationLatency::
SetAudioPresentationLatencySamples::Response {
return object_instances[request.instance_id]
.audio_presentation_latency
->setAudioPresentationLatencySamples(
request.dir, request.bus_index,
request.latency_in_samples);
},
[&](YaConnectionPoint::Connect& request)
-> YaConnectionPoint::Connect::Response {
// If the host directly connected the underlying objects then we
+2
View File
@@ -128,6 +128,8 @@ struct InstanceInterfaces {
// All smart pointers below are created from `component`. They will be null
// pointers if `component` did not implement the interface.
Steinberg::FUnknownPtr<Steinberg::Vst::IAudioPresentationLatency>
audio_presentation_latency;
Steinberg::FUnknownPtr<Steinberg::Vst::IAudioProcessor> audio_processor;
Steinberg::FUnknownPtr<Steinberg::Vst::IComponent> component;
Steinberg::FUnknownPtr<Steinberg::Vst::IConnectionPoint> connection_point;