mirror of
https://github.com/aler9/gortsplib
synced 2025-10-14 19:26:20 +08:00
rtcpsender: improve precision of NTPTime
This commit is contained in:
@@ -84,12 +84,9 @@ func (rs *RTCPSender) report(ts time.Time) rtcp.Packet {
|
||||
SSRC: *rs.senderSSRC,
|
||||
NTPTime: func() uint64 {
|
||||
// seconds since 1st January 1900
|
||||
s := (float64(ts.UnixNano()) / 1000000000) + 2208988800
|
||||
|
||||
// higher 32 bits are the integer part, lower 32 bits are the fractional part
|
||||
integerPart := uint32(s)
|
||||
fractionalPart := uint32((s - float64(integerPart)) * 0xFFFFFFFF)
|
||||
return uint64(integerPart)<<32 | uint64(fractionalPart)
|
||||
s := uint64(ts.UnixNano()) + 2208988800*1000000000
|
||||
return (s/1000000000)<<32 | (s % 1000000000)
|
||||
}(),
|
||||
RTPTime: *rs.lastRTPTimeRTP + uint32((ts.Sub(rs.lastRTPTimeTime)).Seconds()*rs.clockRate),
|
||||
PacketCount: rs.packetCount,
|
||||
|
@@ -18,7 +18,7 @@ func TestRTCPSender(t *testing.T) {
|
||||
rs := New(250*time.Millisecond, 90000, func(pkt rtcp.Packet) {
|
||||
require.Equal(t, &rtcp.SenderReport{
|
||||
SSRC: 0xba9da416,
|
||||
NTPTime: 0xcbddcc34999997ff,
|
||||
NTPTime: 14690122083862791680,
|
||||
RTPTime: 0x4d185ae8,
|
||||
PacketCount: 3,
|
||||
OctetCount: 6,
|
||||
|
Reference in New Issue
Block a user