From e58a00b2a2ec637b61cea808537d469b3649a116 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Mon, 20 Jan 2014 16:25:51 +0100 Subject: mpegpsmux: fix timestamp handling If the first buffer that we handle for a stream has no timestamp, we would never consider this pad again for muxing which causes queues to fill up and pipelines to stall. Instead, try to mux pads with -1 timestamps as soon as possible. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=722330 --- gst/mpegpsmux/mpegpsmux.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) (limited to 'gst/mpegpsmux') diff --git a/gst/mpegpsmux/mpegpsmux.c b/gst/mpegpsmux/mpegpsmux.c index a6e9ce1df..b5529d3ec 100644 --- a/gst/mpegpsmux/mpegpsmux.c +++ b/gst/mpegpsmux/mpegpsmux.c @@ -456,21 +456,14 @@ mpegpsmux_choose_best_stream (MpegPsMux * mux) ps_data->eos = TRUE; continue; } - - /* Choose a stream we've never seen a timestamp for to ensure - * we push enough buffers from it to reach a timestamp */ - if (ps_data->last_ts == GST_CLOCK_TIME_NONE) { - best = ps_data; - c_best = c_data; - } } /* If we don't yet have a best pad, take this one, otherwise take * whichever has the oldest timestamp */ if (best != NULL) { - if (ps_data->last_ts != GST_CLOCK_TIME_NONE && - best->last_ts != GST_CLOCK_TIME_NONE && - ps_data->last_ts < best->last_ts) { + if (ps_data->last_ts == GST_CLOCK_TIME_NONE || + (best->last_ts != GST_CLOCK_TIME_NONE && + ps_data->last_ts < best->last_ts)) { best = ps_data; c_best = c_data; } -- cgit v1.2.1