X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fardour%2Flv2_plugin.h;h=4cd34b30266ef6405c37a926c5089d5ec6480c81;hb=df59a000b79f891f17ec8a05b390982dac67e5ff;hp=6b51cb3eae8194a10c7e8c834a45a6f7ce4dd5a0;hpb=322f1c7d0de3825e673cee1819adf22d8302cd19;p=ardour.git diff --git a/libs/ardour/ardour/lv2_plugin.h b/libs/ardour/ardour/lv2_plugin.h index 6b51cb3eae..4cd34b3026 100644 --- a/libs/ardour/ardour/lv2_plugin.h +++ b/libs/ardour/ardour/lv2_plugin.h @@ -111,8 +111,6 @@ class LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee boost::shared_ptr get_scale_points(uint32_t port_index) const; - static uint32_t midi_event_type() { return _midi_event_type; } - void set_insert_info(const PluginInsert* insert); int set_state (const XMLNode& node, int version); @@ -124,9 +122,7 @@ class LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee bool has_editor () const; bool has_message_output () const; - uint32_t atom_eventTransfer() const; - - void write_from_ui(uint32_t index, + bool write_from_ui(uint32_t index, uint32_t protocol, uint32_t size, const uint8_t* body); @@ -147,14 +143,26 @@ class LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee static URIMap _uri_map; - static uint32_t _midi_event_type; - static uint32_t _chunk_type; - static uint32_t _sequence_type; - static uint32_t _event_transfer_type; - static uint32_t _path_type; - static uint32_t _log_Error; - static uint32_t _log_Warning; - static uint32_t _log_Note; + struct URIDs { + uint32_t atom_Chunk; + uint32_t atom_Path; + uint32_t atom_Sequence; + uint32_t atom_eventTransfer; + uint32_t log_Error; + uint32_t log_Note; + uint32_t log_Warning; + uint32_t midi_MidiEvent; + uint32_t time_Position; + uint32_t time_bar; + uint32_t time_barBeat; + uint32_t time_beatUnit; + uint32_t time_beatsPerBar; + uint32_t time_beatsPerMinute; + uint32_t time_frame; + uint32_t time_speed; + }; + + static URIDs urids; private: struct Impl; @@ -171,6 +179,8 @@ class LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee float* _bpm_control_port; ///< Special input set by ardour float* _freewheel_control_port; ///< Special input set by ardour 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 PBD::ID _insert_id; friend const void* lv2plugin_get_port_value(const char* port_symbol, @@ -179,18 +189,20 @@ class LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee uint32_t* type); typedef enum { - PORT_INPUT = 1, - PORT_OUTPUT = 1 << 1, - PORT_AUDIO = 1 << 2, - PORT_CONTROL = 1 << 3, - PORT_EVENT = 1 << 4, - PORT_MESSAGE = 1 << 5, - PORT_ATOM = 1 << 6 + PORT_INPUT = 1, ///< Input port + PORT_OUTPUT = 1 << 1, ///< Output port + PORT_AUDIO = 1 << 2, ///< Audio (buffer of float) + PORT_CONTROL = 1 << 3, ///< Control (single float) + PORT_EVENT = 1 << 4, ///< Old event API event port + PORT_SEQUENCE = 1 << 5, ///< New atom API event port + PORT_MIDI = 1 << 6, ///< Event port understands MIDI + PORT_POSITION = 1 << 7 ///< Event port understands position } PortFlag; typedef unsigned PortFlags; std::vector _port_flags; + std::vector _port_minimumSize; std::map _port_indices; /// Message send to/from UI via ports @@ -200,12 +212,12 @@ class LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee uint32_t size; }; - void write_to_ui(uint32_t index, + bool write_to_ui(uint32_t index, uint32_t protocol, uint32_t size, const uint8_t* body); - void write_to(RingBuffer* dest, + bool write_to(RingBuffer* dest, uint32_t index, uint32_t protocol, uint32_t size, @@ -225,7 +237,12 @@ class LV2Plugin : public ARDOUR::Plugin, public ARDOUR::Workee LV2_Feature _make_path_feature; LV2_Feature _log_feature; LV2_Feature _work_schedule_feature; - LV2_Feature _buf_size_feature; + LV2_Feature _options_feature; + LV2_Feature _def_state_feature; + + // Options passed to plugin + int32_t _block_length; + int32_t _seq_size; mutable unsigned _state_version;