Fix various bugs.
authorCarl Hetherington <cth@carlh.net>
Sun, 4 Nov 2012 21:32:55 +0000 (21:32 +0000)
committerCarl Hetherington <cth@carlh.net>
Sun, 4 Nov 2012 21:32:55 +0000 (21:32 +0000)
src/lib/decoder.cc
src/lib/delay_line.cc
src/lib/util.cc

index 5860f339ef650a6090b51e03c23e9d57e9974791..17e26905efa64ed0280492834bdb8fde5d270c2a 100644 (file)
@@ -320,6 +320,8 @@ Decoder::process_video (AVFrame* frame)
 
                emit_video (*i, sub);
        }
+
+       ++_video_frames_in;
 }
 
 void
@@ -337,7 +339,7 @@ void
 Decoder::emit_video (shared_ptr<Image> image, shared_ptr<Subtitle> sub)
 {
        TIMING ("Decoder emits %1", _video_frames_out);
-       Video (image, _video_frames_out, sub);
+       Video (image, _video_frames_in, sub);
        ++_video_frames_out;
        _last_image = image;
        _last_subtitle = sub;
index 8aa43e293fee97a036c8df2c542c01493e23ffc1..e7cd8dc94d70d14fd9e8ad8ce37d7a11d472ec56 100644 (file)
@@ -31,6 +31,7 @@ using boost::shared_ptr;
  *  @param frames Delay in frames, +ve to move audio later.
  */
 DelayLine::DelayLine (int channels, int frames)
+       : _negative_delay_remaining (0)
 {
        if (frames > 0) {
                /* We need a buffer to keep some data in */
index 26b2877f70f92544c38db219fd43304899a0be93..5dd39c0e837a18e4432594ba33daf688a2d9c966 100644 (file)
@@ -792,6 +792,19 @@ AudioBuffers::copy_from (AudioBuffers* from, int frames_to_copy, int read_offset
 void
 AudioBuffers::move (int from, int to, int frames)
 {
+       if (frames == 0) {
+               return;
+       }
+       
+       assert (from >= 0);
+       assert (from < _frames);
+       assert (to >= 0);
+       assert (to < _frames);
+       assert (frames > 0);
+       assert (frames <= _frames);
+       assert ((from + frames) <= _frames);
+       assert ((to + frames) <= _frames);
+       
        for (int i = 0; i < _channels; ++i) {
                memmove (_data[i] + to, _data[i] + from, frames * sizeof(float));
        }