diff options
author | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2015-06-10 11:39:01 -0400 |
---|---|---|
committer | Nicolas Dufresne <nicolas.dufresne@collabora.com> | 2015-06-12 17:10:29 -0400 |
commit | 91cbaa5ac7bedfb00d3144f37d2c2bb67f581c14 (patch) | |
tree | a202fd96cda6dcb3a6cf2fb25d46f6c177905452 /gst/mpegtsmux/mpegtsmux.c | |
parent | b23e4452a2366490a6203e616adf74eb97aab327 (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.c | 9 |
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; } } |