X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Flv2_plugin.h;h=202ddbb2401a4cba328c5c42fd618c24016f06f7;hb=08fffeffec10beb708610fd35eb9e7c35365d446;hp=f1907e80ae53dadf0d9adf9e3669de4d4ba51a56;hpb=752662051a1d7217ce842ded78d1ee8e041a112f;p=ardour.git diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h index f1907e80ae..202ddbb240 100644 --- a/libs/ardour/ardour/lv2_plugin.h +++ b/libs/ardour/ardour/lv2_plugin.h @@ -20,6 +20,7 @@ #ifndef __ardour_lv2_plugin_h__ #define __ardour_lv2_plugin_h__ +#include #include #include #include @@ -62,6 +63,8 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee LV2Plugin (const LV2Plugin &); ~LV2Plugin (); + static bool force_state_save; + std::string unique_id () const; const char* uri () const; const char* label () const; @@ -79,8 +82,9 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee std::string get_parameter_docs(uint32_t which) const; int get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const; uint32_t nth_parameter (uint32_t port, bool& ok) const; + bool get_layout (uint32_t which, UILayoutHint&) const; - IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id); + IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id) const; const void* extension_data (const char* uri) const; @@ -108,6 +112,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee bool requires_fixed_sized_buffers () const; int connect_and_run (BufferSet& bufs, + framepos_t start, framepos_t end, double speed, ChanMapping in, ChanMapping out, pframes_t nframes, framecnt_t offset); @@ -125,6 +130,8 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee bool parameter_is_output (uint32_t) const; bool parameter_is_toggled (uint32_t) const; + uint32_t designated_bypass_port (); + boost::shared_ptr get_scale_points(uint32_t port_index) const; @@ -159,7 +166,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee URIMap& uri_map() { return _uri_map; } const URIMap& uri_map() const { return _uri_map; } - int work(uint32_t size, const void* data); + int work(Worker& worker, uint32_t size, const void* data); int work_response(uint32_t size, const void* data); void set_property(uint32_t key, const Variant& value); @@ -173,6 +180,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee void* _module; LV2_Feature** _features; Worker* _worker; + Worker* _state_worker; framecnt_t _sample_rate; float* _control_data; float* _shadow_data; @@ -184,6 +192,8 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee float* _latency_control_port; ///< Special output set by ardour framepos_t _next_cycle_start; ///< Expected start frame of next run cycle double _next_cycle_speed; ///< Expected start frame of next run cycle + double _next_cycle_beat; ///< Expected bar_beat of next run cycle + double _current_bpm; PBD::ID _insert_id; std::string _plugin_state_dir; uint32_t _patch_port_in_index; @@ -210,7 +220,9 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee PORT_POSITION = 1 << 7, ///< Event port understands position PORT_PATCHMSG = 1 << 8, ///< Event port supports patch:Message PORT_AUTOCTRL = 1 << 9, ///< Event port supports auto:AutomationControl - PORT_CTRLED = 1 << 10 ///< Port prop auto:AutomationControlled (can be self controlled) + PORT_CTRLED = 1 << 10, ///< Port prop auto:AutomationControlled (can be self controlled) + PORT_CTRLER = 1 << 11, ///< Port prop auto:AutomationController (can be self set) + PORT_NOAUTO = 1 << 12 ///< Port don't allow to automate } PortFlag; typedef unsigned PortFlags; @@ -262,8 +274,11 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee RingBuffer* _to_ui; RingBuffer* _from_ui; + Glib::Threads::Mutex _work_mutex; + #ifdef LV2_EXTENDED const LV2_Inline_Display_Interface* _display_interface; + const LV2_Midnam_Interface* _midname_interface; #endif typedef struct { @@ -280,6 +295,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee LV2_Feature _def_state_feature; #ifdef LV2_EXTENDED LV2_Feature _queue_draw_feature; + LV2_Feature _midnam_feature; #endif // Options passed to plugin @@ -300,13 +316,17 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee void init (const void* c_plugin, framecnt_t rate); void allocate_atom_event_buffers (); - void run (pframes_t nsamples); + void run (pframes_t nsamples, bool sync_work = false); void load_supported_properties(PropertyDescriptors& descs); #ifdef LV2_EXTENDED bool has_inline_display (); Plugin::Display_Image_Surface* render_inline_display (uint32_t, uint32_t); + + bool has_midnam (); + bool read_midnam (); + std::string midnam_model (); #endif void latency_compute_run ();