[gstreamer-bugs] [Bug 635020] New: Flushing everything on a discont produces worse result than just ignoring the discont flag

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Nov 16 12:32:28 PST 2010


https://bugzilla.gnome.org/show_bug.cgi?id=635020
  GStreamer | gst-ffmpeg | git

           Summary: Flushing everything on a discont produces worse result
                    than just ignoring the discont flag
    Classification: Desktop
           Product: GStreamer
           Version: git
        OS/Version: Linux
            Status: UNCONFIRMED
          Severity: normal
          Priority: Normal
         Component: gst-ffmpeg
        AssignedTo: gstreamer-bugs at lists.sourceforge.net
        ReportedBy: olivier.crete at ocrete.ca
         QAContact: gstreamer-bugs at lists.sourceforge.net
      GNOME target: ---
     GNOME version: ---


Currently, when a gst-ffmpeg decoder gets a buffer with DISCONT set, it flushes
all of its state. This is wrong for the RTP case where we want to just continue
decoding as-is until the next keyframe. The flushing after a discont should
probably be delayed into a keyframe is received (and I guess the decoders will
full their state internally on a keyframe anyway), so I suggest we just drop it
from there.

--- a/ext/ffmpeg/gstffmpegdec.c
+++ b/ext/ffmpeg/gstffmpegdec.c
@@ -2439,10 +2439,7 @@ gst_ffmpegdec_chain (GstPad * pad, GstBuffer * inbuf)
    * case of a network error, better show the errors than to drop all data..
*/
   if (G_UNLIKELY (discont)) {
     GST_DEBUG_OBJECT (ffmpegdec, "received DISCONT");
-    /* drain what we have queued */
-    gst_ffmpegdec_drain (ffmpegdec);
     gst_ffmpegdec_flush_pcache (ffmpegdec);
-    avcodec_flush_buffers (ffmpegdec->context);
     ffmpegdec->discont = TRUE;
     gst_ffmpegdec_reset_ts (ffmpegdec);
   }

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.




More information about the Gstreamer-bugs mailing list