diff --git a/gst/mpegtsdemux/Makefile.am b/gst/mpegtsdemux/Makefile.am index fb68be4635..ced0eacee5 100644 --- a/gst/mpegtsdemux/Makefile.am +++ b/gst/mpegtsdemux/Makefile.am @@ -1,8 +1,5 @@ plugin_LTLIBRARIES = libgstmpegtsdemux.la -# FIXME 0.11: ignore GValueArray warnings for now until this is sorted -ERROR_CFLAGS= - libgstmpegtsdemux_la_SOURCES = \ gsttsdemux.c \ gstmpegdesc.c \ diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index 345357a418..7193429d95 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -1399,9 +1399,11 @@ mpegts_base_chain (GstPad * pad, GstBuffer * buf) based = mpegts_base_handle_psi (base, §ion); gst_buffer_unref (section.buffer); - if (G_UNLIKELY (!based)) + if (G_UNLIKELY (!based)) { + gst_buffer_unref (packet.buffer); /* bad PSI table */ goto next; + } } /* we need to push section packet downstream */ res = mpegts_base_push (base, &packet, §ion); diff --git a/gst/mpegtsdemux/mpegtspacketizer.c b/gst/mpegtsdemux/mpegtspacketizer.c index 6e0335a280..41ff6dd370 100644 --- a/gst/mpegtsdemux/mpegtspacketizer.c +++ b/gst/mpegtsdemux/mpegtspacketizer.c @@ -2375,8 +2375,13 @@ MpegTSPacketizerPacketReturn mpegts_packetizer_process_next_packet (MpegTSPacketizer2 * packetizer) { MpegTSPacketizerPacket packet; + MpegTSPacketizerPacketReturn ret; - return mpegts_packetizer_next_packet (packetizer, &packet); + ret = mpegts_packetizer_next_packet (packetizer, &packet); + if (packet.buffer) + gst_buffer_unref (packet.buffer); + + return ret; } void diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c index 54318f03b0..8b97b8e432 100644 --- a/gst/mpegtsdemux/tsdemux.c +++ b/gst/mpegtsdemux/tsdemux.c @@ -1032,6 +1032,16 @@ gst_ts_demux_stream_flush (TSDemuxStream * stream) memset (stream->pendingbuffers, 0, TS_MAX_PENDING_BUFFERS); stream->nbpending = 0; + if (stream->current) { + gst_buffer_list_unref (stream->current); + stream->current = NULL; + } + + if (stream->currentit) { + gst_buffer_list_iterator_free (stream->currentit); + stream->currentit = NULL; + } + if (stream->currentlist) { g_list_foreach (stream->currentlist, (GFunc) gst_buffer_unref, NULL); g_list_free (stream->currentlist);