fix another logic error in PresentationInfo::flag_match()
[ardour.git] / libs / ardour / ardour / lv2_plugin.h
index aacef82e5b6b6ac4488f4fc457a36347f075a85e..9d4e2d1f68719ad308b31fcd20971b7732604ec6 100644 (file)
@@ -71,6 +71,7 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
        uint32_t    num_ports () const;
        uint32_t    parameter_count () const;
        float       default_value (uint32_t port);
+       framecnt_t  max_latency () const;
        framecnt_t  signal_latency () const;
        void        set_parameter (uint32_t port, float val);
        float       get_parameter (uint32_t port) const;
@@ -79,6 +80,8 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
        int         get_parameter_descriptor (uint32_t which, ParameterDescriptor&) const;
        uint32_t    nth_parameter (uint32_t port, bool& ok) const;
 
+       IOPortDescription describe_io_port (DataType dt, bool input, uint32_t id) const;
+
        const void* extension_data (const char* uri) const;
 
        const void* c_plugin();
@@ -105,6 +108,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);
 
@@ -188,6 +192,8 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
        URIMap&       _uri_map;
        bool          _no_sample_accurate_ctrl;
        bool          _can_write_automation;
+       framecnt_t    _max_latency;
+       framecnt_t    _current_latency;
 
        friend const void* lv2plugin_get_port_value(const char* port_symbol,
                                                    void*       user_data,
@@ -205,7 +211,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;
@@ -257,6 +265,10 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
        RingBuffer<uint8_t>* _to_ui;
        RingBuffer<uint8_t>* _from_ui;
 
+#ifdef LV2_EXTENDED
+       const LV2_Inline_Display_Interface* _display_interface;
+#endif
+
        typedef struct {
                const void* (*extension_data) (const char* uri);
        } LV2_DataAccess;
@@ -269,6 +281,9 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
        LV2_Feature    _work_schedule_feature;
        LV2_Feature    _options_feature;
        LV2_Feature    _def_state_feature;
+#ifdef LV2_EXTENDED
+       LV2_Feature    _queue_draw_feature;
+#endif
 
        // Options passed to plugin
        int32_t _seq_size;
@@ -292,6 +307,11 @@ class LIBARDOUR_API LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee
 
        void load_supported_properties(PropertyDescriptors& descs);
 
+#ifdef LV2_EXTENDED
+       bool has_inline_display ();
+       Plugin::Display_Image_Surface* render_inline_display (uint32_t, uint32_t);
+#endif
+
        void latency_compute_run ();
        std::string do_save_preset (std::string);
        void do_remove_preset (std::string);