diff options
Diffstat (limited to 'libs/ardour/ardour')
-rw-r--r-- | libs/ardour/ardour/audio_unit.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/ladspa_plugin.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/latent.h | 13 | ||||
-rw-r--r-- | libs/ardour/ardour/luaproc.h | 2 | ||||
-rw-r--r-- | libs/ardour/ardour/lv2_plugin.h | 3 | ||||
-rw-r--r-- | libs/ardour/ardour/plugin.h | 8 | ||||
-rw-r--r-- | libs/ardour/ardour/vst_plugin.h | 2 |
7 files changed, 23 insertions, 9 deletions
diff --git a/libs/ardour/ardour/audio_unit.h b/libs/ardour/ardour/audio_unit.h index 454a7d1ce0..79f75c5ec0 100644 --- a/libs/ardour/ardour/audio_unit.h +++ b/libs/ardour/ardour/audio_unit.h @@ -70,7 +70,6 @@ class LIBARDOUR_API AUPlugin : public ARDOUR::Plugin const char * maker () const { return _info->creator.c_str(); } uint32_t parameter_count () const; float default_value (uint32_t port); - samplecnt_t signal_latency() const; void set_parameter (uint32_t which, float val); float get_parameter (uint32_t which) const; @@ -161,6 +160,7 @@ class LIBARDOUR_API AUPlugin : public ARDOUR::Plugin void do_remove_preset (std::string); private: + samplecnt_t plugin_latency() const; void find_presets (); boost::shared_ptr<CAComponent> comp; diff --git a/libs/ardour/ardour/ladspa_plugin.h b/libs/ardour/ardour/ladspa_plugin.h index ab2780e879..1557ef1ec3 100644 --- a/libs/ardour/ardour/ladspa_plugin.h +++ b/libs/ardour/ardour/ladspa_plugin.h @@ -50,7 +50,6 @@ class LIBARDOUR_API LadspaPlugin : public ARDOUR::Plugin const char* maker() const { return _descriptor->Maker; } uint32_t parameter_count() const { return _descriptor->PortCount; } float default_value (uint32_t port) { return _default_value (port); } - samplecnt_t signal_latency() const; void set_parameter (uint32_t port, float val); float get_parameter (uint32_t port) const; int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; @@ -132,6 +131,7 @@ class LIBARDOUR_API LadspaPlugin : public ARDOUR::Plugin uint32_t _index; bool _was_activated; + samplecnt_t plugin_latency() const; void find_presets (); void init (std::string module_path, uint32_t index, samplecnt_t rate); diff --git a/libs/ardour/ardour/latent.h b/libs/ardour/ardour/latent.h index b7d9a3fcd5..194dbe3a72 100644 --- a/libs/ardour/ardour/latent.h +++ b/libs/ardour/ardour/latent.h @@ -25,12 +25,18 @@ namespace ARDOUR { -class LIBARDOUR_API Latent { +class LIBARDOUR_API HasLatency { public: - Latent() : _user_latency (0) {} + virtual ~HasLatency() {} + virtual samplecnt_t signal_latency() const = 0; +}; + +class LIBARDOUR_API Latent : public HasLatency { +public: + Latent (); + Latent (Latent const&); virtual ~Latent() {} - virtual samplecnt_t signal_latency() const = 0; /* effective latency to be used while processing */ samplecnt_t effective_latency() const { @@ -77,6 +83,7 @@ protected: private: samplecnt_t _use_user_latency; samplecnt_t _user_latency; + static bool _zero_latency; }; diff --git a/libs/ardour/ardour/luaproc.h b/libs/ardour/ardour/luaproc.h index a077254179..d311ebfcf6 100644 --- a/libs/ardour/ardour/luaproc.h +++ b/libs/ardour/ardour/luaproc.h @@ -85,7 +85,6 @@ public: void cleanup () { } int set_block_size (pframes_t /*nframes*/) { return 0; } - samplecnt_t signal_latency() const { return _signal_latency; } int connect_and_run (BufferSet& bufs, samplepos_t start, samplepos_t end, double speed, @@ -129,6 +128,7 @@ public: LuaTableRef* instance_ref () { return &lref; } private: + samplecnt_t plugin_latency() const { return _signal_latency; } void find_presets (); /* END Plugin interface */ diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h index 75d07547ef..e9f6bf0d09 100644 --- a/libs/ardour/ardour/lv2_plugin.h +++ b/libs/ardour/ardour/lv2_plugin.h @@ -75,7 +75,6 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee uint32_t parameter_count () const; float default_value (uint32_t port); samplecnt_t max_latency () const; - samplecnt_t signal_latency () const; void set_parameter (uint32_t port, float val); float get_parameter (uint32_t port) const; std::string get_docs() const; @@ -350,6 +349,8 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee bool _midnam_dirty; #endif + samplecnt_t plugin_latency () const; + void latency_compute_run (); std::string do_save_preset (std::string); void do_remove_preset (std::string); diff --git a/libs/ardour/ardour/plugin.h b/libs/ardour/ardour/plugin.h index 4f619e65ba..b8d1cd76c0 100644 --- a/libs/ardour/ardour/plugin.h +++ b/libs/ardour/ardour/plugin.h @@ -67,7 +67,7 @@ typedef std::set<uint32_t> PluginOutputConfiguration; * * Plugins are not used directly in Ardour but always wrapped by a PluginInsert. */ -class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent +class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public HasLatency { public: Plugin (ARDOUR::AudioEngine&, ARDOUR::Session&); @@ -337,6 +337,10 @@ class LIBARDOUR_API Plugin : public PBD::StatefulDestructible, public Latent PBD::Signal1<void,uint32_t> StartTouch; PBD::Signal1<void,uint32_t> EndTouch; + samplecnt_t signal_latency () const { + return plugin_latency (); + } + protected: friend class PluginInsert; @@ -370,6 +374,8 @@ protected: private: + virtual samplecnt_t plugin_latency () const = 0; + /** Fill _presets with our presets */ virtual void find_presets () = 0; diff --git a/libs/ardour/ardour/vst_plugin.h b/libs/ardour/ardour/vst_plugin.h index 21ac6775ad..3c75c03490 100644 --- a/libs/ardour/ardour/vst_plugin.h +++ b/libs/ardour/ardour/vst_plugin.h @@ -61,7 +61,6 @@ public: bool load_preset (PresetRecord); int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; std::string describe_parameter (Evoral::Parameter); - samplecnt_t signal_latency() const; std::set<Evoral::Parameter> automatable() const; PBD::Signal0<void> LoadPresetProgram; @@ -119,6 +118,7 @@ protected: void do_remove_preset (std::string name); XMLTree * presets_tree () const; std::string presets_file () const; + samplecnt_t plugin_latency() const; void find_presets (); VSTHandle* _handle; |