mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 01:30:38 +00:00
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
This commit is contained in:
parent
4e10667aad
commit
e58a00b2a2
1 changed files with 3 additions and 10 deletions
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue