From: Jan Alexander Steffens (heftig) Date: Mon, 12 Oct 2020 12:15:49 +0000 (+0200) Subject: srtsrc: Prevent `delay` from being negative X-Git-Tag: 1.19.3~507^2~1269 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4eeff95f92bb92dd8ad992fd94cd416eff8de3b9;p=platform%2Fupstream%2Fgstreamer.git srtsrc: Prevent `delay` from being negative `delay` should be a GstClockTimeDiff since SRT time is int64_t. All values are in local time so we should never see a srctime that's in the future. If we do, clamp the delay to 0 and warn about it. Part-of: --- diff --git a/ext/srt/gstsrtsrc.c b/ext/srt/gstsrtsrc.c index c5e0a93..a6f2740 100644 --- a/ext/srt/gstsrtsrc.c +++ b/ext/srt/gstsrtsrc.c @@ -124,7 +124,7 @@ gst_srt_src_fill (GstPushSrc * src, GstBuffer * outbuf) GstClock *clock; GstClockTime base_time; GstClockTime capture_time; - GstClockTime delay; + GstClockTimeDiff delay; int64_t srt_time; SRT_MSGCTRL mctrl; @@ -166,7 +166,7 @@ gst_srt_src_fill (GstPushSrc * src, GstBuffer * outbuf) GST_LOG_OBJECT (src, "recv_len:%" G_GSIZE_FORMAT " pktseq:%d msgno:%d srctime:%" - G_GUINT64_FORMAT, recv_len, mctrl.pktseq, mctrl.msgno, mctrl.srctime); + G_GINT64_FORMAT, recv_len, mctrl.pktseq, mctrl.msgno, mctrl.srctime); if (g_cancellable_is_cancelled (self->cancellable)) { ret = GST_FLOW_FLUSHING; @@ -198,6 +198,15 @@ gst_srt_src_fill (GstPushSrc * src, GstBuffer * outbuf) else delay = 0; + GST_LOG_OBJECT (src, "delay: %" GST_STIME_FORMAT, GST_STIME_ARGS (delay)); + + if (delay < 0) { + GST_WARNING_OBJECT (src, + "Calculated SRT delay %" GST_STIME_FORMAT " is negative, clamping to 0", + GST_STIME_ARGS (delay)); + delay = 0; + } + /* Subtract the base_time (since the pipeline started) ... */ if (capture_time > base_time) capture_time -= base_time; @@ -210,8 +219,6 @@ gst_srt_src_fill (GstPushSrc * src, GstBuffer * outbuf) capture_time = 0; GST_BUFFER_TIMESTAMP (outbuf) = capture_time; - GST_DEBUG_OBJECT (src, "delay:%" GST_TIME_FORMAT, GST_TIME_ARGS (delay)); - gst_buffer_resize (outbuf, 0, recv_len); GST_LOG_OBJECT (src,