The VST2.x implementation used by OBS is incomplete, and is closer to VST1.x behavior instead. Many important "dispatcher" calls are not made in the right order, resulting in additional initialization ("opening") work, or outright cause VST effects to fail processing.
Platform
Not applicable (any).
Expected Behavior
The sample rate and block size should be set before the first "open" call, in order to minimize reinitializations (or outright remove them).
The User Interface should not be offered if the flag for it is not set.
A call to "close" should be performed before OBS Studio is fully closed.
Current Behavior
Host sets Sample Rate and Block Size after calling "Open", which results in reinitializations.
Host just assumes that UI is available, resulting in blank windows.
The call to "Close" only happens when manually deleting the filter, not when OBS Studio closes.
Steps to Reproduce
Not applicable. Affects all VST2 plugins.
Additional information
Block Size should ideally match the actual processing size by the host, not be an arbitrary fixed number.
The first bit of the flags field in the VST2 structure is used to notify the host about the presence of an "Editor", otherwise the UI should fall back to VST1.x UIs instead if num_params is greater than 0.
Problem 3 seems to be due to the deleteLater() call never happening, as the event loop has already terminated.
The VST2.x implementation used by OBS is incomplete, and is closer to VST1.x behavior instead. Many important "dispatcher" calls are not made in the right order, resulting in additional initialization ("opening") work, or outright cause VST effects to fail processing.
Platform
Not applicable (any).
Expected Behavior
Current Behavior
Steps to Reproduce
Not applicable. Affects all VST2 plugins.
Additional information