[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