summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/chan_mapping.h14
-rw-r--r--libs/ardour/ardour/plugin_insert.h20
-rw-r--r--libs/ardour/luabindings.cc4
3 files changed, 34 insertions, 4 deletions
diff --git a/libs/ardour/ardour/chan_mapping.h b/libs/ardour/ardour/chan_mapping.h
index 4b0b930b02..730ecadc72 100644
--- a/libs/ardour/ardour/chan_mapping.h
+++ b/libs/ardour/ardour/chan_mapping.h
@@ -97,6 +97,20 @@ public:
return ! (*this == other);
}
+ ChanMapping operator+=(const ChanMapping& other) {
+ const ChanMapping::Mappings& mp (other.mappings());
+ for (Mappings::const_iterator tm = mp.begin(); tm != mp.end(); ++tm) {
+ for (TypeMapping::const_iterator i = tm->second.begin(); i != tm->second.end(); ++i) {
+#if 0
+ bool valid; uint32_t x = get (tm->first, i->first, &valid);
+ assert (!valid || x == i->second);
+#endif
+ set (tm->first, i->first, i->second);
+ }
+ }
+ return *this;
+ }
+
private:
Mappings _mappings;
};
diff --git a/libs/ardour/ardour/plugin_insert.h b/libs/ardour/ardour/plugin_insert.h
index 1441dfadb0..d64ee8f31d 100644
--- a/libs/ardour/ardour/plugin_insert.h
+++ b/libs/ardour/ardour/plugin_insert.h
@@ -69,7 +69,7 @@ class LIBARDOUR_API PluginInsert : public Processor
int set_block_size (pframes_t nframes);
- ChanMapping input_map (uint32_t num=0) const {
+ ChanMapping input_map (uint32_t num) const {
if (num < _in_map.size()) {
return _in_map.find (num)->second;
} else {
@@ -77,7 +77,7 @@ class LIBARDOUR_API PluginInsert : public Processor
}
}
- ChanMapping output_map (uint32_t num=0) const {
+ ChanMapping output_map (uint32_t num) const {
if (num < _out_map.size()) {
return _out_map.find (num)->second;
} else {
@@ -85,6 +85,22 @@ class LIBARDOUR_API PluginInsert : public Processor
}
}
+ ChanMapping input_map () const {
+ ChanMapping rv;
+ for (PinMappings::const_iterator i = _in_map.begin (); i != _in_map.end (); ++i) {
+ rv += i->second;
+ }
+ return rv;
+ }
+
+ ChanMapping output_map () const {
+ ChanMapping rv;
+ for (PinMappings::const_iterator i = _out_map.begin (); i != _out_map.end (); ++i) {
+ rv += i->second;
+ }
+ return rv;
+ }
+
void set_input_map (uint32_t, ChanMapping);
void set_output_map (uint32_t, ChanMapping);
diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc
index dfcdfaec61..d7b9410bfc 100644
--- a/libs/ardour/luabindings.cc
+++ b/libs/ardour/luabindings.cc
@@ -374,8 +374,8 @@ LuaBindings::common (lua_State* L)
.addFunction ("deactivate", &PluginInsert::deactivate)
.addFunction ("strict_io_configured", &PluginInsert::strict_io_configured)
.addFunction ("no_inplace", &PluginInsert::no_inplace)
- .addFunction ("input_map", &PluginInsert::input_map)
- .addFunction ("output_map", &PluginInsert::output_map)
+ .addFunction ("input_map", (ARDOUR::ChanMapping (PluginInsert::*)(uint32_t) const)&PluginInsert::input_map)
+ .addFunction ("output_map", (ARDOUR::ChanMapping (PluginInsert::*)(uint32_t) const)&PluginInsert::output_map)
.addFunction ("set_no_inplace", &PluginInsert::set_no_inplace) // XXX
.addFunction ("set_input_map", &PluginInsert::set_input_map)
.addFunction ("set_output_map", &PluginInsert::set_output_map)