Prepare IOPlug processing as GraphNode

This commit is contained in:
Robin Gareus 2022-05-01 15:57:03 +02:00
parent c45a6b80c7
commit af6f8abdc7
No known key found for this signature in database
GPG key ID: A090BCE02CF57F04
5 changed files with 60 additions and 1 deletions

View file

@ -25,6 +25,7 @@
#include "ardour/audio_buffer.h"
#include "ardour/audio_port.h"
#include "ardour/event_type_map.h"
#include "ardour/graph.h"
#include "ardour/io.h"
#include "ardour/io_plug.h"
#include "ardour/lv2_plugin.h"
@ -40,6 +41,7 @@ using namespace std;
IOPlug::IOPlug (Session& s, boost::shared_ptr<Plugin> p, bool pre)
: SessionObject (s, "")
, GraphNode (s._process_graph)
, _plugin (p)
, _pre (pre)
, _plugin_signal_latency (0)
@ -382,6 +384,12 @@ IOPlug::ensure_io ()
return true;
}
void
IOPlug::process ()
{
_graph->process_one_ioplug (this);
}
void
IOPlug::run (samplepos_t start, pframes_t n_samples)
{
@ -509,6 +517,17 @@ IOPlug::describe_parameter (Evoral::Parameter param)
return EventTypeMap::instance ().to_symbol (param);
}
bool
IOPlug::direct_feeds_according_to_reality (boost::shared_ptr<GraphNode> node, bool* via_send_only)
{
boost::shared_ptr<IOPlug> other (boost::dynamic_pointer_cast<IOPlug> (node));
assert (other && other->_pre == _pre);
if (via_send_only) {
*via_send_only = false;
}
return other->input()->connected_to (_output);
}
/* ****************************************************************************/
IOPlug::PluginControl::PluginControl (IOPlug* p,