changeset 100:3236a2a75b42

Fix buffer underrun
author Chris Cannam <c.cannam@qmul.ac.uk>
date Tue, 13 May 2014 11:46:50 +0100
parents 54c4b7719ff2
children 4ad90a51a067
files cpp-qm-dsp/processfile.cpp
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/cpp-qm-dsp/processfile.cpp	Sat May 10 13:44:24 2014 +0100
+++ b/cpp-qm-dsp/processfile.cpp	Tue May 13 11:46:50 2014 +0100
@@ -146,7 +146,9 @@
 
 	if (doDiff) {
 	    for (int i = 0; i < (int)cqout.size(); ++i) {
-		cqout[i] -= buffer[outframe + i - latency];
+		if (outframe + i >= latency) {
+		    cqout[i] -= buffer[outframe + i - latency];
+		}
 	    }
 	    
 	    if (outframe >= latency) {
@@ -181,7 +183,9 @@
     sf_writef_double(sndfileOut, r.data(), r.size());
     if (doDiff) {
 	for (int i = 0; i < (int)r.size(); ++i) {
-	    r[i] -= buffer[outframe + i - latency];
+	    if (outframe + i >= latency) {
+		r[i] -= buffer[outframe + i - latency];
+	    }
 	}
 	sf_writef_double(sndDiffFile, r.data(), r.size());
     }