X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fardour%2Fluaproc.h;h=a07725417983d693da8a288d9f88d90e2ede6a42;hb=6b1b72a247bf04c81292fc41af4f69c9b7f90379;hp=39afb72c96ce6469cfa2e59573983b61e805ab50;hpb=91ab5e31751105d59386aab6a6e16ac5582904dc;p=ardour.git diff --git a/libs/ardour/ardour/luaproc.h b/libs/ardour/ardour/luaproc.h index 39afb72c96..a077254179 100644 --- a/libs/ardour/ardour/luaproc.h +++ b/libs/ardour/ardour/luaproc.h @@ -17,6 +17,13 @@ 675 Mass Ave, Cambridge, MA 02139, USA. */ +/* print runtime and garbage-collection timing statistics */ +//#define WITH_LUAPROC_STATS + +/* memory allocation system, default: ReallocPool */ +//#define USE_TLSF // use TLSF instead of ReallocPool +//#define USE_MALLOC // or plain OS provided realloc (no mlock) -- if USE_TLSF isn't defined + #ifndef __ardour_luaproc_h__ #define __ardour_luaproc_h__ @@ -24,7 +31,12 @@ #include #include -#include "pbd/reallocpool.h" +#ifdef USE_TLSF +# include "pbd/tlsf.h" +#else +# include "pbd/reallocpool.h" +#endif + #include "pbd/stateful.h" #include "ardour/types.h" @@ -73,12 +85,12 @@ public: void cleanup () { } int set_block_size (pframes_t /*nframes*/) { return 0; } - framecnt_t signal_latency() const { return 0; } + samplecnt_t signal_latency() const { return _signal_latency; } int connect_and_run (BufferSet& bufs, - framepos_t start, framepos_t end, double speed, - ChanMapping in, ChanMapping out, - pframes_t nframes, framecnt_t offset); + samplepos_t start, samplepos_t end, double speed, + ChanMapping const& in, ChanMapping const& out, + pframes_t nframes, samplecnt_t offset); std::string describe_parameter (Evoral::Parameter); void print_parameter (uint32_t, char*, uint32_t len) const; @@ -89,6 +101,10 @@ public: bool parameter_is_input (uint32_t) const; bool parameter_is_output (uint32_t) const; + uint32_t designated_bypass_port () { + return _designated_bypass_port; + } + std::string state_node_name() const { return "luaproc"; } void add_state (XMLNode *) const; int set_state (const XMLNode&, int version); @@ -109,29 +125,43 @@ public: bool has_inline_display () { return _lua_has_inline_display; } void setup_lua_inline_gui (LuaState *lua_gui); + DSP::DspShm* instance_shm () { return &lshm; } + LuaTableRef* instance_ref () { return &lref; } + private: void find_presets (); /* END Plugin interface */ + +public: + void set_origin (std::string& path) { _origin = path; } + protected: const std::string& script() const { return _script; } + const std::string& origin() const { return _origin; } private: +#ifdef USE_TLSF + PBD::TLSF _mempool; +#else PBD::ReallocPool _mempool; +#endif LuaState lua; luabridge::LuaRef * _lua_dsp; + luabridge::LuaRef * _lua_latency; std::string _script; + std::string _origin; std::string _docs; bool _lua_does_channelmapping; bool _lua_has_inline_display; void queue_draw () { QueueDraw(); /* EMIT SIGNAL */ } - DSP::DspShm* instance_shm () { return &lshm; } DSP::DspShm lshm; - LuaTableRef* instance_ref () { return &lref; } LuaTableRef lref; + boost::weak_ptr route () const; + void init (); bool load_script (); void lua_print (std::string s); @@ -145,17 +175,27 @@ private: std::vector > _ctrl_params; std::map _param_desc; std::map _param_doc; + uint32_t _designated_bypass_port; + + samplecnt_t _signal_latency; float* _control_data; float* _shadow_data; ChanCount _configured_in; ChanCount _configured_out; + + bool _configured; + + ChanCount _selected_in; + ChanCount _selected_out; + PluginOutputConfiguration _output_configs; bool _has_midi_input; bool _has_midi_output; + #ifdef WITH_LUAPROC_STATS int64_t _stats_avg[2]; int64_t _stats_max[2]; @@ -172,13 +212,7 @@ class LIBARDOUR_API LuaPluginInfo : public PluginInfo PluginPtr load (Session& session); std::vector get_presets (bool user_only) const; - bool in_category (const std::string &c) const { - return (category == c); - } - bool is_instrument () const { return _is_instrument; } bool reconfigurable_io() const { return true; } - - bool _is_instrument; }; typedef boost::shared_ptr LuaPluginInfoPtr;