From 7a5f5d5855460a4c8ac0b41f251338e2dd7b14dc Mon Sep 17 00:00:00 2001 From: Thulinma Date: Tue, 2 Jun 2020 12:01:58 +0200 Subject: [PATCH] Timestamp fixes for RTP --- lib/rtp.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/rtp.cpp b/lib/rtp.cpp index de1b6fe5..5d2072d0 100644 --- a/lib/rtp.cpp +++ b/lib/rtp.cpp @@ -640,17 +640,18 @@ namespace RTP{ INFO_MSG("RTP timestamp rollover expected in " PRETTY_PRINT_TIME, PRETTY_ARG_TIME((0xFFFFFFFFul - firstTime) / multiplier / 1000)); }else{ - if (prevTime > pTime && pTime < 0x40000000lu && prevTime > 0x80000000lu){ - ++wrapArounds; - recentWrap = true; - } if (recentWrap){ if (pTime < 0x80000000lu && pTime > 0x40000000lu){recentWrap = false;} - if (pTime > 0x80000000lu){pTime -= 0xFFFFFFFFll;} + if (pTime > 0x80000000lu){pTime -= 0x100000000ll;} + }else{ + if (prevTime > pTime && pTime < 0x40000000lu && prevTime > 0x80000000lu){ + ++wrapArounds; + recentWrap = true; + } } } prevTime = pkt.getTimeStamp(); - uint64_t msTime = ((uint64_t)pTime - firstTime + 1 + 0xFFFFFFFFull * wrapArounds) / multiplier; + uint64_t msTime = ((uint64_t)pTime - firstTime + 1 + 0x100000000ull * wrapArounds) / multiplier; char *pl = (char *)pkt.getPayload(); uint32_t plSize = pkt.getPayloadSize(); bool missed = lastSeq != (pkt.getSequence() - 1);