mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-01 13:49:58 +00:00
splitmuxsink: Catch invalid DTS to avoid running into problems later
DTS > PTS makes no sense, so we clamp DTS to the PTS. Also if there's a PTS but no DTS, then assume that PTS=DTS to make sure we're not working with a much older DTS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4515>
This commit is contained in:
parent
0e8b726843
commit
35322de964
1 changed files with 9 additions and 3 deletions
|
@ -2947,10 +2947,16 @@ handle_mq_input (GstPad * pad, GstPadProbeInfo * info, MqStreamCtx * ctx)
|
|||
else
|
||||
running_time_pts = GST_CLOCK_STIME_NONE;
|
||||
|
||||
if (GST_CLOCK_TIME_IS_VALID (dts))
|
||||
if (GST_CLOCK_TIME_IS_VALID (dts)) {
|
||||
running_time_dts = my_segment_to_running_time (&ctx->in_segment, dts);
|
||||
else
|
||||
running_time_dts = GST_CLOCK_STIME_NONE;
|
||||
|
||||
/* DTS > PTS makes conceptually no sense so catch such invalid DTS here
|
||||
* by clamping to the PTS */
|
||||
running_time_dts = MIN (running_time_pts, running_time_dts);
|
||||
} else {
|
||||
/* If there is no DTS then assume PTS=DTS */
|
||||
running_time_dts = running_time_pts;
|
||||
}
|
||||
|
||||
/* Try to make sure we have a valid running time */
|
||||
if (!GST_CLOCK_STIME_IS_VALID (ctx->in_running_time)) {
|
||||
|
|
Loading…
Reference in a new issue