From 0b040b71318a033a3fbc048f799c862412be8ffb Mon Sep 17 00:00:00 2001 From: Matthieu Bouron Date: Fri, 24 Oct 2014 16:52:42 +0200 Subject: [PATCH] mpegtsbase: do not remove programs on EOS As a consequence, tsdemux won't remove its pads anymore on EOS. Fixes the case when mpegtsbase is not able to process new packets after EOS as the corresponding pids aren't known anymore because the programs were removed and the pes/psi were kept, preventing the PAT to be parsed again. https://bugzilla.gnome.org/show_bug.cgi?id=738695 --- gst/mpegtsdemux/mpegtsbase.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index 82243370ca..cb35c83f49 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -1016,15 +1016,6 @@ remove_each_program (gpointer key, MpegTSBaseProgram * program, return TRUE; } -static gboolean -gst_mpegts_base_handle_eos (MpegTSBase * base) -{ - g_hash_table_foreach_remove (base->programs, (GHRFunc) remove_each_program, - base); - /* finally remove */ - return TRUE; -} - static inline GstFlowReturn mpegts_base_drain (MpegTSBase * base) { @@ -1075,10 +1066,6 @@ mpegts_base_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) case GST_EVENT_STREAM_START: gst_event_unref (event); break; - case GST_EVENT_EOS: - res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event); - res &= gst_mpegts_base_handle_eos (base); - break; case GST_EVENT_CAPS: /* FIXME, do something */ gst_event_unref (event);