avauddec: If decoding a frame failed, skip it
authorSebastian Dröge <sebastian@centricular.com>
Fri, 29 Apr 2016 09:55:19 +0000 (12:55 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 29 Apr 2016 09:55:19 +0000 (12:55 +0300)
Otherwise the next successfully decoded frame will get its timestamp and we
will slowly let a/v sync drift apart.

https://bugzilla.gnome.org/show_bug.cgi?id=765797

ext/libav/gstavauddec.c

index 6f0417c..f2a400e 100644 (file)
@@ -819,6 +819,9 @@ gst_ffmpegauddec_handle_frame (GstAudioDecoder * decoder, GstBuffer * inbuf)
     ret =
         gst_audio_decoder_finish_frame (GST_AUDIO_DECODER (ffmpegdec),
         ffmpegdec->outbuf, 1);
+  else if (len < 0)
+    ret =
+        gst_audio_decoder_finish_frame (GST_AUDIO_DECODER (ffmpegdec), NULL, 1);
   ffmpegdec->outbuf = NULL;
 
   if (bsize > 0) {