Timestamp fixes for RTP
This commit is contained in:
parent
70b0f94552
commit
7a5f5d5855
1 changed files with 7 additions and 6 deletions
13
lib/rtp.cpp
13
lib/rtp.cpp
|
@ -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);
|
||||||
|
|
Loading…
Add table
Reference in a new issue