From 631b2d88262e28d6c96ec8a266536760b9e24bef Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Thu, 9 Jul 2015 18:31:34 +0200 Subject: [PATCH] mpegtsbase: Fix previous commit We only want to do a hard reset of the observations if we're working with TIME segments in push mode. For BYTE segment we want to keep the observations (in order to do seeks in push-mode). --- gst/mpegtsdemux/mpegtsbase.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c index 1836e9d83a..9b8e897a30 100644 --- a/gst/mpegtsdemux/mpegtsbase.c +++ b/gst/mpegtsdemux/mpegtsbase.c @@ -1110,7 +1110,14 @@ mpegts_base_chain (GstPad * pad, GstObject * parent, GstBuffer * buf) return res; mpegts_base_flush (base, FALSE); - mpegts_packetizer_flush (base->packetizer, base->mode == BASE_MODE_PUSHING); + /* In the case of discontinuities in push-mode with TIME segment + * we want to drop all previous observations (hard:TRUE) from + * the packetizer */ + if (base->mode == BASE_MODE_PUSHING + && base->segment.format == GST_FORMAT_TIME) + mpegts_packetizer_flush (base->packetizer, TRUE); + else + mpegts_packetizer_flush (base->packetizer, FALSE); } mpegts_packetizer_push (base->packetizer, buf);