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);