diff --git a/rtp.c b/rtp.c index 75979d8215b6696ad4aee03be90705da87a158ac..653355e08d4417cb9a7af9eed841d7404a29aa2d 100755 --- a/rtp.c +++ b/rtp.c @@ -1098,6 +1098,8 @@ static unsigned int calc_txstamp(struct ast_rtp *rtp, struct timeval *delivery) /* Use previous txcore if available */ t = (delivery && !ast_tvzero(*delivery)) ? *delivery : ast_tvnow(); ms = ast_tvdiff_ms(t, rtp->txcore); + if (ms < 0) + ms = 0; /* Use what we just got for next time */ rtp->txcore = t; return (unsigned int) ms; @@ -1226,14 +1228,14 @@ static int ast_rtp_raw_write(struct ast_rtp *rtp, struct ast_frame *f, int codec char iabuf[INET_ADDRSTRLEN]; int hdrlen = 12; int res; - int ms; + unsigned int ms; int pred; int mark = 0; ms = calc_txstamp(rtp, &f->delivery); /* Default prediction */ if (f->subclass < AST_FORMAT_MAX_AUDIO) { - pred = rtp->lastts + f->samples; + pred = rtp->lastts + f->samples; /* Re-calculate last TS */ rtp->lastts = rtp->lastts + ms * 8;