It appears that it may not be just CAP_DELAY decoders that can produce extra frames...
authorCarl Hetherington <cth@carlh.net>
Wed, 6 Mar 2013 22:20:10 +0000 (22:20 +0000)
committerCarl Hetherington <cth@carlh.net>
Wed, 6 Mar 2013 22:20:10 +0000 (22:20 +0000)
src/lib/ffmpeg_decoder.cc

index 30972cbf3505aa38cfba96a55e0b98d561891bf5..e1834d7f644fbc768e28c2b19a48c4dd687d9b6f 100644 (file)
@@ -225,30 +225,24 @@ FFmpegDecoder::pass ()
                        _film->log()->log (String::compose (N_("error on av_read_frame (%1) (%2)"), buf, r));
                }
 
-               if (_video_codec->capabilities & CODEC_CAP_DELAY) {
-                       
-                       /* Get any remaining frames */
-                       
-                       _packet.data = 0;
-                       _packet.size = 0;
-                       
-                       /* XXX: should we reset _packet.data and size after each *_decode_* call? */
-                       
-                       int frame_finished;
-                       
-                       if (_opt.decode_video) {
-                               while (avcodec_decode_video2 (_video_codec_context, _frame, &frame_finished, &_packet) >= 0 && frame_finished) {
-                                       filter_and_emit_video ();
-                               }
-                       }
-                       
-                       if (_audio_stream && _opt.decode_audio) {
-                               decode_audio_packet ();
+               /* Get any remaining frames */
+               
+               _packet.data = 0;
+               _packet.size = 0;
+               
+               /* XXX: should we reset _packet.data and size after each *_decode_* call? */
+               
+               int frame_finished;
+               
+               if (_opt.decode_video) {
+                       while (avcodec_decode_video2 (_video_codec_context, _frame, &frame_finished, &_packet) >= 0 && frame_finished) {
+                               filter_and_emit_video ();
                        }
-               } else {
-                       _film->log()->log("Codec does not have CAP_DELAY");
                }
-                    
+               
+               if (_audio_stream && _opt.decode_audio) {
+                       decode_audio_packet ();
+               }
                        
                return true;
        }