Commit Graph

1044 Commits

Author SHA1 Message Date
Robbert van der Helm 62f376d952 Allow the module to be properly unloaded
Terminating the host process will cause all sockets to be closed so we
can join the threads.
2020-12-14 22:49:20 +01:00
Robbert van der Helm c815b3903b Implement IAudioProcessor::getTailSamples() 2020-12-14 21:43:38 +01:00
Robbert van der Helm 007aa1e707 Implement IAudioProcessor::setProcessing() 2020-12-14 21:31:50 +01:00
Robbert van der Helm b1bcfd3873 Implement IAudioProcessor::setupProcessing() 2020-12-14 21:25:05 +01:00
Robbert van der Helm cb7413c521 Add implicit conversion for UniversalTResult 2020-12-14 18:32:18 +01:00
Robbert van der Helm 2becd420b2 Take PrimitiveWrapper<T> value by rvalue 2020-12-14 18:22:12 +01:00
Robbert van der Helm bb110e8cbb Add PrimitiveWrapper<T> response logging 2020-12-14 18:08:16 +01:00
Robbert van der Helm e282f8c572 Fix IComponent::getBusCount() 2020-12-14 18:03:20 +01:00
Robbert van der Helm 0f59d6429d Implement IAudioProcessor::getLatencySamples() 2020-12-14 17:53:50 +01:00
Robbert van der Helm 6979dafa06 Add a wrapper for serializing primitives 2020-12-14 17:53:38 +01:00
Robbert van der Helm d9585fac78 Implement IAudioProcessor::canProcessSampleSize() 2020-12-14 17:12:49 +01:00
Robbert van der Helm b26c2e08a7 Implement IAudioProcessor::getBusArrangement() 2020-12-14 16:55:21 +01:00
Robbert van der Helm e3b442de57 Implement IAudioProcessor::setBusArrangements() 2020-12-14 16:40:40 +01:00
Robbert van der Helm b87c3fe790 Add a todo about non-separated controllers 2020-12-14 16:10:56 +01:00
Robbert van der Helm 49a87371bc Add todos for logging successful interface queries 2020-12-14 13:23:27 +01:00
Robbert van der Helm 143d795c0b Unify log message format for initialize() 2020-12-14 13:21:28 +01:00
Robbert van der Helm e2ba9c13f1 Add IAudioProcessor instance to ComponentInstance
So we don't have to these expensive casts every time.
2020-12-14 13:18:47 +01:00
Robbert van der Helm e0dd4ab22d Add IAudioProcessor query interface to YaComponent 2020-12-14 13:17:10 +01:00
Robbert van der Helm 0668a785b0 Add stubs for implementing IAudioProcessor 2020-12-14 13:06:02 +01:00
Robbert van der Helm 096171bb96 Use the known_iids mechanism for IComponent 2020-12-14 12:48:21 +01:00
Robbert van der Helm e653142e45 Implement IComponent::getState()
With this the basic IComponent interface is fully implemented. Next will
be `IAudioProcessor` and `IConnectionPoint` as additions to IComponent.
We'll use the same `known_iids` mechanism as used in the plugin factory.
2020-12-14 12:38:35 +01:00
Robbert van der Helm 02e6fb1ba8 Add a way to write a VectorStream back 2020-12-14 12:24:09 +01:00
Robbert van der Helm 816d1c1501 Implement IComponent::setState() 2020-12-14 12:09:47 +01:00
Robbert van der Helm c463543ac9 Implement a serializable vector based IBStream
We can now use this for implementing reading and writing preset data.
2020-12-14 00:02:31 +01:00
Robbert van der Helm 42664be378 Use std::copy_n instead of pointer arithmetic 2020-12-13 23:19:37 +01:00
Robbert van der Helm 7341fab0ea Implement IComponent::setActive() 2020-12-13 22:17:06 +01:00
Robbert van der Helm 43296675f6 Implement IComponent::activateBus() 2020-12-13 22:07:45 +01:00
Robbert van der Helm 16b949bccf Log all function calls kwargs-style 2020-12-13 21:53:08 +01:00
Robbert van der Helm 5b6a8ebfac Implement IComponent::getRoutingInfo() 2020-12-13 21:51:56 +01:00
Robbert van der Helm 583645bb46 Add a holder for component contexts and pointers
When implementing the other component interfaces we want to be able to
store the `FUnknownPtrs`.
2020-12-13 21:31:59 +01:00
Robbert van der Helm 6adeb1987d Log function arguments kwargs-style
This would make everything a bit clearer since the SDK uses bitfields
everywhere.
2020-12-13 16:59:16 +01:00
Robbert van der Helm 9df812952e Implement IComponent::GetBusInfo() 2020-12-13 16:56:09 +01:00
Robbert van der Helm 34b2fa8905 Implement IComponent::getBusCount() 2020-12-13 16:18:13 +01:00
Robbert van der Helm 116b618ac5 Implement IComponent::setIoMode() 2020-12-13 16:12:30 +01:00
Robbert van der Helm 3f3759e5fc Log calls to unimplemented functions 2020-12-13 16:01:52 +01:00
Robbert van der Helm 32c1028736 Implement IPluginFactory3::setHostContext()
Now the plugin factories are fully implemented (at least, functionality
wise, we still can't create most kinds of objects).
2020-12-13 15:53:39 +01:00
Robbert van der Helm 7c5f7a2e0e Fully implement IPluginBase::initialize()
We can now pass host contexts around.
2020-12-13 15:16:11 +01:00
Robbert van der Helm 0c64aabeea Add a partial YaHostApplication implementation 2020-12-13 14:46:17 +01:00
Robbert van der Helm e21ee31ee8 Implement plugin side of IPluginBase::initialize() 2020-12-13 14:30:51 +01:00
Robbert van der Helm e8929e5e43 Make the UTF-16 conversion a bit safer 2020-12-13 13:53:53 +01:00
Robbert van der Helm 919987298c Add the base for YaHostApplication 2020-12-13 13:46:00 +01:00
Robbert van der Helm ca91cf041d List the progress of interface implementations 2020-12-13 12:47:18 +01:00
Robbert van der Helm d9989fe856 Update the VST3 architecture document 2020-12-13 12:32:49 +01:00
Robbert van der Helm cd92b7a976 Log failed calls to IComponent::queryInterface() 2020-12-12 22:25:25 +01:00
Robbert van der Helm 0ad56874e2 Abstract away logging unknown interfaces 2020-12-12 22:22:27 +01:00
Robbert van der Helm 39984ad442 Use the new approach for creating plugin factory
Directly serializing and deserializing into objects was and more
boilerplate heavy (since we now need two implementations even though we
only use one), and also much less flexible because we can't wrap
payloads in structs or provide optional values that way.
2020-12-12 21:53:38 +01:00
Robbert van der Helm 1b30000147 Keep track of active YaComponentPluginImpls
So we can do host callbacks later.
2020-12-12 21:24:11 +01:00
Robbert van der Helm efc840a51a Log unknown interfaces in IComponent::initialize() 2020-12-12 16:53:44 +01:00
Robbert van der Helm f637e6ad18 Rename Create/Destroy to Construct/Destruct
This is less likely to clash with names used by interfaces and it's a
bit clearer what's going on (since they are basically proxies for
constructors and destructors).
2020-12-12 16:18:47 +01:00
Robbert van der Helm 1088483f15 Mention destructors in VST3 implementation docs 2020-12-12 16:18:47 +01:00