Timestamp fixes for RTP

This commit is contained in:
Thulinma 2020-06-02 12:01:58 +02:00
parent 70b0f94552
commit 7a5f5d5855

View file

@ -640,17 +640,18 @@ namespace RTP{
INFO_MSG("RTP timestamp rollover expected in " PRETTY_PRINT_TIME, INFO_MSG("RTP timestamp rollover expected in " PRETTY_PRINT_TIME,
PRETTY_ARG_TIME((0xFFFFFFFFul - firstTime) / multiplier / 1000)); PRETTY_ARG_TIME((0xFFFFFFFFul - firstTime) / multiplier / 1000));
}else{ }else{
if (prevTime > pTime && pTime < 0x40000000lu && prevTime > 0x80000000lu){
++wrapArounds;
recentWrap = true;
}
if (recentWrap){ if (recentWrap){
if (pTime < 0x80000000lu && pTime > 0x40000000lu){recentWrap = false;} 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(); 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(); char *pl = (char *)pkt.getPayload();
uint32_t plSize = pkt.getPayloadSize(); uint32_t plSize = pkt.getPayloadSize();
bool missed = lastSeq != (pkt.getSequence() - 1); bool missed = lastSeq != (pkt.getSequence() - 1);