Skip to content

Commit

Permalink
add speaker arrangement support info interface, update wayland frame …
Browse files Browse the repository at this point in the history
…interface
  • Loading branch information
jburmeister-fender committed Apr 3, 2024
1 parent 9967256 commit 91ed12b
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 4 deletions.
70 changes: 70 additions & 0 deletions ipslspeakerinfo.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
//************************************************************************************************
//
// PreSonus Plug-In Extensions
// Written and placed in the PUBLIC DOMAIN by PreSonus Software Ltd.
//
// Filename : ipslspeakerinfo.h
// Created by : PreSonus Software Ltd., 04/2024
// Description : Speaker Arrangement Support Info Interface
//
//************************************************************************************************
/*
DISCLAIMER:
PreSonus Plug-In Extensions are host-specific extensions of existing proprietary technologies,
provided to the community on an AS IS basis. They are not part of any official 3rd party SDK and
PreSonus is not affiliated with the owner of the underlying technology in any way.
*/
//************************************************************************************************

#ifndef _ipslspeakerinfo_h
#define _ipslspeakerinfo_h

#include "pluginterfaces/vst/vsttypes.h"
#include "pluginterfaces/base/funknown.h"
#include "pluginterfaces/base/falignpush.h"

namespace Presonus {

/** @defgroup speakerInfo Speaker Arrangement Support Info */

//************************************************************************************************
// ISpeakerArrangementInfo
/** Interface to query information about speaker arrangement support.
- Implemented by plug-in as extension of Steinberg::Vst::IComponent
@ingroup speakerInfo */
//************************************************************************************************

struct ISpeakerSupportInfo: Steinberg::FUnknown
{
/** Report if the speaker arrangement is supported on the a specific bus */
virtual Steinberg::TBool PLUGIN_API isArrangementSupportedOnBus (Steinberg::Vst::SpeakerArrangement arr, Steinberg::Vst::BusDirection dir, Steinberg::int32 index) = 0;

static const Steinberg::FUID iid;
};

DECLARE_CLASS_IID (ISpeakerSupportInfo, 0x7342e0eb, 0x8f5641de, 0xa5f7c503, 0x8e2ec3ef)

//************************************************************************************************
// ISpeakerArrangementHostInfo
/** Interface to query information about speaker arrangement support.
- Implemented by host as extension of Steinberg::Vst::IComponentHandler.
@ingroup speakerInfo */
//************************************************************************************************

struct ISpeakerSupportHostInfo: Steinberg::FUnknown
{
/** Report if the given speaker arrangement is supported by host. */
virtual Steinberg::TBool PLUGIN_API isSpeakerArrangementSupported (Steinberg::Vst::SpeakerArrangement arr) = 0;

static const Steinberg::FUID iid;
};

DECLARE_CLASS_IID (ISpeakerSupportHostInfo, 0x3327e14a, 0x055e4d27, 0x9a0f6b4a, 0x36316e7b)

} // namespace Presonus

#include "pluginterfaces/base/falignpop.h"

#endif // _ipslspeakerinfo_h
4 changes: 1 addition & 3 deletions ipslwaylandframe.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,7 @@ namespace Presonus {
* A native Wayland host application is both a Wayland client and a Wayland compositor.
* The host application connects to the system compositor and creates application windows etc. using this compositor connection.
* A plug-in does not connect to the system compositor, but connects to the host application by calling IWaylandHost::openWaylandConnection().
* The IWaylandHost interface can be created via IHostApplication::createInstance.
* As the interface may be required early, the host should pass IHostApplication to the plug-in using IPluginFactory3::setHostContext.
* The host application provides the IWaylandHost interface via IPluginFactory3::setHostContext. The plug-in may also query this interface using an IPlugFrame object.
* The plug-in must not perform blocking reads using functions like wl_display_roundtrip or wl_display_dispatch.
* Instead, the Steinberg::Linux::IRunLoop interface should be used to used to register an event handler using the file descriptor returned by wl_display_get_fd.
*
Expand Down Expand Up @@ -68,7 +67,6 @@ const Steinberg::FIDString kPlatformTypeWaylandSurfaceID = "WaylandSurfaceID"; /
// IWaylandHost
/** Wayland host interface.
Implemented as a singleton in the host application.
Created via IHostApplication::createInstance.
@ingroup waylandFrame */
//************************************************************************************************

Expand Down
3 changes: 2 additions & 1 deletion readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ Studio One supports audio plug-ins in VST2, VST3 and Audio Unit format. These te
- Support for embedding plug-in views into the single-window environment of Studio One
- Support for sizable plug-in editors in VST2 using a similar mimic to VST3
- Support for direct plug-in view renderering to render targets (Studio One 6.5 and later)
- Support for native Wayland plug-in views (currently being implemented)
- Support for native Wayland plug-in views (Studio One 6.6 and later)
- Query supported speaker arrangements from plug-ins (Studio One 6.6 and later)

Feel free to integrate these enhancements in your plug-in or adapt them for your host.

Expand Down

0 comments on commit 91ed12b

Please sign in to comment.