summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2014-01-13 10:47:17 +0100
committerPaul Davis <paul@linuxaudiosystems.com>2014-01-13 09:39:50 -0500
commitb4dea5309d4c4b675bea6f3514bb2331d228b161 (patch)
treee28dbc8f2a9cd692e600dd4c168519b6b68ba128 /libs
parent1e4e6499e37d83b7e5a76f9d7425f4830f0d830e (diff)
ignore additional channels for AFL, PFL:
If the monitor-section has fewer-channels than the solo-listen point: ignore additional channels.
Diffstat (limited to 'libs')
-rw-r--r--libs/ardour/internal_send.cc14
-rw-r--r--libs/ardour/route.cc1
2 files changed, 14 insertions, 1 deletions
diff --git a/libs/ardour/internal_send.cc b/libs/ardour/internal_send.cc
index 8136985e1f..9716cf002c 100644
--- a/libs/ardour/internal_send.cc
+++ b/libs/ardour/internal_send.cc
@@ -128,7 +128,19 @@ InternalSend::run (BufferSet& bufs, framepos_t start_frame, framepos_t end_frame
uint32_t const bufs_audio = bufs.count().get (DataType::AUDIO);
uint32_t const mixbufs_audio = mixbufs.count().get (DataType::AUDIO);
- assert (mixbufs.available().get (DataType::AUDIO) >= bufs_audio);
+ /* monitor-section has same number of channels as master-bus (on creation).
+ *
+ * There is no clear answer what should happen when trying to PFL or AFL
+ * a track that has more channels (bufs_audio from source-track is
+ * larger than mixbufs).
+ *
+ * There are two options:
+ * 1: discard additional channels (current)
+ * OR
+ * 2: require the monitor-section to have at least as many channels
+ * as the largest count of any route
+ */
+ //assert (mixbufs.available().get (DataType::AUDIO) >= bufs_audio);
/* Copy bufs into mixbufs, going round bufs more than once if necessary
to ensure that every mixbuf gets some data.
diff --git a/libs/ardour/route.cc b/libs/ardour/route.cc
index 655ba7d53d..e86d2c5b0d 100644
--- a/libs/ardour/route.cc
+++ b/libs/ardour/route.cc
@@ -2717,6 +2717,7 @@ Route::enable_monitor_send ()
/* master never sends to monitor section via the normal mechanism */
assert (!is_master ());
+ assert (!is_monitor ());
/* make sure we have one */
if (!_monitor_send) {