From ce70e0f43e12a4efbdf7e92ce223005ae41386c4 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 21 Aug 2007 16:04:47 +0000 Subject: [PATCH] gst/rtpmanager/rtpjitterbuffer.*: Fix undefined overflow prone ts_diff handling. Original commit message from CVS: * gst/rtpmanager/rtpjitterbuffer.c: (rtp_jitter_buffer_get_ts_diff): * gst/rtpmanager/rtpjitterbuffer.h: Fix undefined overflow prone ts_diff handling. --- gst/rtpmanager/rtpjitterbuffer.c | 8 +++++--- gst/rtpmanager/rtpjitterbuffer.h | 2 -- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/gst/rtpmanager/rtpjitterbuffer.c b/gst/rtpmanager/rtpjitterbuffer.c index 1ba1c8195e..c36a25c5fe 100644 --- a/gst/rtpmanager/rtpjitterbuffer.c +++ b/gst/rtpmanager/rtpjitterbuffer.c @@ -215,8 +215,9 @@ rtp_jitter_buffer_num_packets (RTPJitterBuffer * jbuf) guint32 rtp_jitter_buffer_get_ts_diff (RTPJitterBuffer * jbuf) { - guint32 high_ts, low_ts; + guint64 high_ts, low_ts; GstBuffer *high_buf, *low_buf; + guint32 result; g_return_val_if_fail (jbuf != NULL, 0); @@ -231,8 +232,9 @@ rtp_jitter_buffer_get_ts_diff (RTPJitterBuffer * jbuf) /* it needs to work if ts wraps */ if (high_ts >= low_ts) { - return high_ts - low_ts; + result = (guint32) (high_ts - low_ts); } else { - return high_ts + G_MAXUINT32 + 1 - low_ts; + result = (guint32) (high_ts + G_MAXUINT32 + 1 - low_ts); } + return result; } diff --git a/gst/rtpmanager/rtpjitterbuffer.h b/gst/rtpmanager/rtpjitterbuffer.h index 14b5b3f2b6..8bff03c89b 100644 --- a/gst/rtpmanager/rtpjitterbuffer.h +++ b/gst/rtpmanager/rtpjitterbuffer.h @@ -62,6 +62,4 @@ void rtp_jitter_buffer_flush (RTPJitterBuffer *jbuf); guint rtp_jitter_buffer_num_packets (RTPJitterBuffer *jbuf); guint32 rtp_jitter_buffer_get_ts_diff (RTPJitterBuffer *jbuf); - - #endif /* __RTP_JITTER_BUFFER_H__ */