Fix zero-sized buffers coming out of audio merger.
authorCarl Hetherington <cth@carlh.net>
Mon, 27 Feb 2017 11:50:06 +0000 (11:50 +0000)
committerCarl Hetherington <cth@carlh.net>
Wed, 19 Apr 2017 22:04:32 +0000 (23:04 +0100)
src/lib/audio_filter_graph.cc
src/lib/audio_merger.cc

index afbcf4921e9dde165e04914c81777697229cf275..0eeeb3c4ae5858b094ffd4f5da58ab659f9d3b75 100644 (file)
@@ -26,10 +26,12 @@ extern "C" {
 #include <libavfilter/buffersrc.h>
 #include <libavutil/channel_layout.h>
 }
+#include <iostream>
 
 #include "i18n.h"
 
 using std::string;
+using std::cout;
 using boost::shared_ptr;
 
 AudioFilterGraph::AudioFilterGraph (int sample_rate, int channels)
@@ -105,6 +107,7 @@ AudioFilterGraph::sink_name () const
 void
 AudioFilterGraph::process (shared_ptr<const AudioBuffers> buffers)
 {
+       DCPOMATIC_ASSERT (buffers->frames() > 0);
        int const process_channels = av_get_channel_layout_nb_channels (_channel_layout);
        DCPOMATIC_ASSERT (process_channels >= buffers->channels());
 
index 5e0589bb12941e39481e74ac104700ab7a711ce7..10a71535b4794e7e80cebe792898d5deab03ed17 100644 (file)
@@ -51,7 +51,7 @@ AudioMerger::pull (DCPTime time)
        list<Buffer> new_buffers;
 
        BOOST_FOREACH (Buffer i, _buffers) {
-               if (i.period().to < time) {
+               if (i.period().to <= time) {
                        /* Completely within the pull period */
                        out.push_back (make_pair (i.audio, i.time));
                } else if (i.time < time) {