summaryrefslogtreecommitdiff
path: root/gst/mpegtsmux/mpegtsmux.c
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.com>2015-06-10 11:39:01 -0400
committerNicolas Dufresne <nicolas.dufresne@collabora.com>2015-06-12 17:10:29 -0400
commit91cbaa5ac7bedfb00d3144f37d2c2bb67f581c14 (patch)
treea202fd96cda6dcb3a6cf2fb25d46f6c177905452 /gst/mpegtsmux/mpegtsmux.c
parentb23e4452a2366490a6203e616adf74eb97aab327 (diff)
mpegtsmux: Properly detect backward DTS
There was code to detect backward dts, but the marker min_dts was never set. Setting it enable this feature that prevents potential integer overflow when generating TS. https://bugzilla.gnome.org/show_bug.cgi?id=740575
Diffstat (limited to 'gst/mpegtsmux/mpegtsmux.c')
-rw-r--r--gst/mpegtsmux/mpegtsmux.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gst/mpegtsmux/mpegtsmux.c b/gst/mpegtsmux/mpegtsmux.c
index 89750a7ea3..c1ab11bffa 100644
--- a/gst/mpegtsmux/mpegtsmux.c
+++ b/gst/mpegtsmux/mpegtsmux.c
@@ -1067,14 +1067,19 @@ mpegtsmux_clip_inc_running_time (GstCollectPads * pads,
GST_LOG_OBJECT (cdata->pad, "buffer dts %" GST_TIME_FORMAT " -> %"
GST_TIME_FORMAT " running time",
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buf)), GST_TIME_ARGS (time));
- if (GST_CLOCK_TIME_IS_VALID (pad_data->min_dts) &&
- time < pad_data->min_dts) {
+
+ if (!GST_CLOCK_TIME_IS_VALID (pad_data->min_dts))
+ pad_data->min_dts = time;
+
+ if (time < pad_data->min_dts) {
/* Ignore DTS going backward */
GST_WARNING_OBJECT (cdata->pad, "ignoring DTS going backward");
time = pad_data->min_dts;
}
+
*outbuf = gst_buffer_make_writable (buf);
GST_BUFFER_DTS (*outbuf) = time;
+ pad_data->min_dts = time;
}
}