diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index 7193429d95..cf1e26d9c4 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -1311,12 +1311,12 @@ mpegts_base_sink_event (GstPad * pad, GstEvent * event) break; case GST_EVENT_EOS: res = gst_mpegts_base_handle_eos (base); + gst_event_unref (event); break; case GST_EVENT_FLUSH_START: mpegts_packetizer_flush (base->packetizer); mpegts_base_flush (base); res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event); - gst_event_unref (event); break; case GST_EVENT_FLUSH_STOP: gst_segment_init (&base->segment, GST_FORMAT_UNDEFINED); @@ -1324,7 +1324,6 @@ mpegts_base_sink_event (GstPad * pad, GstEvent * event) /* Passthrough */ default: res = GST_MPEGTS_BASE_GET_CLASS (base)->push_event (base, event); - gst_event_unref (event); } gst_object_unref (base); @@ -1426,7 +1425,7 @@ static GstFlowReturn mpegts_base_scan (MpegTSBase * base) { GstFlowReturn ret; - GstBuffer *buf; + GstBuffer *buf = NULL; guint i; gboolean done = FALSE; MpegTSPacketizerPacketReturn pret; @@ -1447,6 +1446,7 @@ mpegts_base_scan (MpegTSBase * base) /* Push to packetizer */ mpegts_packetizer_push (base->packetizer, buf); + buf = NULL; if (mpegts_packetizer_has_packets (base->packetizer)) { if (base->seek_offset == -1) { @@ -1496,6 +1496,7 @@ mpegts_base_scan (MpegTSBase * base) /* Push to packetizer */ mpegts_packetizer_push (base->packetizer, buf); + buf = NULL; if (mpegts_packetizer_has_packets (base->packetizer)) { while (1) { @@ -1545,7 +1546,7 @@ mpegts_base_loop (MpegTSBase * base) break; case BASE_MODE_STREAMING: { - GstBuffer *buf; + GstBuffer *buf = NULL; GST_DEBUG ("Pulling data from %" G_GUINT64_FORMAT, base->seek_offset); diff --git a/gst/mpegtsdemux/mpegtsparse.c b/gst/mpegtsdemux/mpegtsparse.c index 37b6da6e98..f15a8bd69f 100644 --- a/gst/mpegtsdemux/mpegtsparse.c +++ b/gst/mpegtsdemux/mpegtsparse.c @@ -251,6 +251,9 @@ push_event (MpegTSBase * base, GstEvent * event) gst_pad_push_event (pad, event); } } + + gst_event_unref (event); + return TRUE; } diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index 51aebd9d23..9b69f5b393 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -598,8 +598,10 @@ push_event (MpegTSBase * base, GstEvent * event) GstTSDemux *demux = (GstTSDemux *) base; GList *tmp; - if (G_UNLIKELY (demux->program == NULL)) + if (G_UNLIKELY (demux->program == NULL)) { + gst_event_unref (event); return FALSE; + } for (tmp = demux->program->stream_list; tmp; tmp = tmp->next) { TSDemuxStream *stream = (TSDemuxStream *) tmp->data; @@ -609,6 +611,8 @@ push_event (MpegTSBase * base, GstEvent * event) } } + gst_event_unref (event); + return TRUE; } @@ -947,7 +951,8 @@ create_pad_for_stream (MpegTSBase * base, MpegTSBaseStream * bstream, if (name) g_free (name); - + if (template) + gst_object_unref (template); if (caps) gst_caps_unref (caps);