summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--gst/rtpmanager/rtpjitterbuffer.c8
-rw-r--r--gst/rtpmanager/rtpjitterbuffer.h2
3 files changed, 12 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 243d58ca..04ff10bf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2007-08-21 Wim Taymans <wim.taymans@gmail.com>
+ * gst/rtpmanager/rtpjitterbuffer.c:
+ (rtp_jitter_buffer_get_ts_diff):
+ * gst/rtpmanager/rtpjitterbuffer.h:
+ Fix undefined overflow prone ts_diff handling.
+
+2007-08-21 Wim Taymans <wim.taymans@gmail.com>
+
* gst/modplug/gstmodplug.cc:
Fix compiler warning.
diff --git a/gst/rtpmanager/rtpjitterbuffer.c b/gst/rtpmanager/rtpjitterbuffer.c
index 1ba1c819..c36a25c5 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 14b5b3f2..8bff03c8 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__ */