diff --git a/daemon/codec.c b/daemon/codec.c index a13a9caf5..58a793248 100644 --- a/daemon/codec.c +++ b/daemon/codec.c @@ -3771,7 +3771,9 @@ void codec_calc_jitter(struct ssrc_ctx *ssrc, unsigned long ts, unsigned int clo sec->transit = transit; if (d < 0) d = -d; - sec->jitter += d - ((sec->jitter + 8) >> 4); + // ignore implausibly large values + if (d < 100000) + sec->jitter += d - ((sec->jitter + 8) >> 4); mutex_unlock(&sec->h.lock); } static void codec_calc_lost(struct ssrc_ctx *ssrc, uint16_t seq) { diff --git a/kernel-module/xt_RTPENGINE.c b/kernel-module/xt_RTPENGINE.c index 10ef435e7..4ea418d71 100644 --- a/kernel-module/xt_RTPENGINE.c +++ b/kernel-module/xt_RTPENGINE.c @@ -4443,7 +4443,9 @@ static void rtp_stats(struct rtpengine_target *g, struct rtp_parsed *rtp, s64 ar s->transit = transit; if (d < 0) d = -d; - s->jitter += d - ((s->jitter + 8) >> 4); + // ignore implausibly large values + if (d < 100000) + s->jitter += d - ((s->jitter + 8) >> 4); spin_unlock_irqrestore(&g->ssrc_stats_lock, flags); }