mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-06-06 07:28:53 +00:00
rtpstats: fix unsigned integer comparisons.
Callers of the API (rtpsource, rtpjitterbuffer) pass clock_rate as a signed integer, and the comparison "<= 0" is used against it, leading me to think the intention was to have the field be typed as gint32, not guint32. This led to situations where we could call scale_int with a MAX_UINT32 (-1) guint32 as the denom, thus raising an assertion. https://bugzilla.gnome.org/show_bug.cgi?id=785991
This commit is contained in:
parent
bc1c321b27
commit
5e48e85fb7
2 changed files with 4 additions and 4 deletions
|
@ -22,7 +22,7 @@
|
||||||
#include "rtpstats.h"
|
#include "rtpstats.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
gst_rtp_packet_rate_ctx_reset (RTPPacketRateCtx * ctx, guint32 clock_rate)
|
gst_rtp_packet_rate_ctx_reset (RTPPacketRateCtx * ctx, gint32 clock_rate)
|
||||||
{
|
{
|
||||||
ctx->clock_rate = clock_rate;
|
ctx->clock_rate = clock_rate;
|
||||||
ctx->probed = FALSE;
|
ctx->probed = FALSE;
|
||||||
|
@ -36,7 +36,7 @@ gst_rtp_packet_rate_ctx_update (RTPPacketRateCtx * ctx, guint16 seqnum,
|
||||||
{
|
{
|
||||||
guint64 new_ts, diff_ts;
|
guint64 new_ts, diff_ts;
|
||||||
gint diff_seqnum;
|
gint diff_seqnum;
|
||||||
guint32 new_packet_rate;
|
gint32 new_packet_rate;
|
||||||
|
|
||||||
if (ctx->clock_rate <= 0) {
|
if (ctx->clock_rate <= 0) {
|
||||||
return ctx->avg_packet_rate;
|
return ctx->avg_packet_rate;
|
||||||
|
|
|
@ -207,13 +207,13 @@ typedef struct {
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
gboolean probed;
|
gboolean probed;
|
||||||
gint clock_rate;
|
gint32 clock_rate;
|
||||||
guint16 last_seqnum;
|
guint16 last_seqnum;
|
||||||
guint64 last_ts;
|
guint64 last_ts;
|
||||||
guint32 avg_packet_rate;
|
guint32 avg_packet_rate;
|
||||||
} RTPPacketRateCtx;
|
} RTPPacketRateCtx;
|
||||||
|
|
||||||
void gst_rtp_packet_rate_ctx_reset (RTPPacketRateCtx * ctx, guint32 clock_rate);
|
void gst_rtp_packet_rate_ctx_reset (RTPPacketRateCtx * ctx, gint32 clock_rate);
|
||||||
guint32 gst_rtp_packet_rate_ctx_update (RTPPacketRateCtx *ctx, guint16 seqnum, guint32 ts);
|
guint32 gst_rtp_packet_rate_ctx_update (RTPPacketRateCtx *ctx, guint16 seqnum, guint32 ts);
|
||||||
guint32 gst_rtp_packet_rate_ctx_get (RTPPacketRateCtx *ctx);
|
guint32 gst_rtp_packet_rate_ctx_get (RTPPacketRateCtx *ctx);
|
||||||
guint32 gst_rtp_packet_rate_ctx_get_max_dropout (RTPPacketRateCtx *ctx, gint32 time_ms);
|
guint32 gst_rtp_packet_rate_ctx_get_max_dropout (RTPPacketRateCtx *ctx, gint32 time_ms);
|
||||||
|
|
Loading…
Reference in a new issue