summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSakari Bergen <sakari.bergen@beatwaves.net>2013-11-03 21:22:00 +0200
committerSakari Bergen <sakari.bergen@beatwaves.net>2013-11-03 21:22:00 +0200
commit3fca0306032486736dd575907c640a1702e8531f (patch)
tree1bebac34e0d57f2ef64c5d39761f29d7ef87ebe1
parentf2300164d7a89c5e433d3293dfed4c1ab77f0553 (diff)
Fix invalid silence trimmer end-of-input behavior (multiple EndOfInputs)
This caused an export bug when: a) normalizing b) adding silence to end c) having more than one channel The sound was corrupted by repeating each jack frame as many times as there were channels.
-rw-r--r--libs/audiographer/audiographer/general/silence_trimmer.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/libs/audiographer/audiographer/general/silence_trimmer.h b/libs/audiographer/audiographer/general/silence_trimmer.h
index a653bfe215..d292515eb8 100644
--- a/libs/audiographer/audiographer/general/silence_trimmer.h
+++ b/libs/audiographer/audiographer/general/silence_trimmer.h
@@ -130,6 +130,9 @@ class SilenceTrimmer
throw Exception(*this, "process() after reacing end of input");
}
in_end = c.has_flag (ProcessContext<T>::EndOfInput);
+
+ // If adding to end, delay end of input propagation
+ if (add_to_end) { c.remove_flag(ProcessContext<T>::EndOfInput); }
framecnt_t frame_index = 0;
@@ -208,7 +211,8 @@ class SilenceTrimmer
// Finally, if in end, add silence to end
if (in_end && add_to_end) {
-
+ c.set_flag (ProcessContext<T>::EndOfInput);
+
if (debug_level (DebugVerbose)) {
debug_stream () << DebugUtils::demangled_name (*this) <<
" adding to end" << std::endl;