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,
|
SSRC: *rs.senderSSRC,
|
||||||
NTPTime: func() uint64 {
|
NTPTime: func() uint64 {
|
||||||
// seconds since 1st January 1900
|
// 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
|
// higher 32 bits are the integer part, lower 32 bits are the fractional part
|
||||||
integerPart := uint32(s)
|
s := uint64(ts.UnixNano()) + 2208988800*1000000000
|
||||||
fractionalPart := uint32((s - float64(integerPart)) * 0xFFFFFFFF)
|
return (s/1000000000)<<32 | (s % 1000000000)
|
||||||
return uint64(integerPart)<<32 | uint64(fractionalPart)
|
|
||||||
}(),
|
}(),
|
||||||
RTPTime: *rs.lastRTPTimeRTP + uint32((ts.Sub(rs.lastRTPTimeTime)).Seconds()*rs.clockRate),
|
RTPTime: *rs.lastRTPTimeRTP + uint32((ts.Sub(rs.lastRTPTimeTime)).Seconds()*rs.clockRate),
|
||||||
PacketCount: rs.packetCount,
|
PacketCount: rs.packetCount,
|
||||||
|
@@ -18,7 +18,7 @@ func TestRTCPSender(t *testing.T) {
|
|||||||
rs := New(250*time.Millisecond, 90000, func(pkt rtcp.Packet) {
|
rs := New(250*time.Millisecond, 90000, func(pkt rtcp.Packet) {
|
||||||
require.Equal(t, &rtcp.SenderReport{
|
require.Equal(t, &rtcp.SenderReport{
|
||||||
SSRC: 0xba9da416,
|
SSRC: 0xba9da416,
|
||||||
NTPTime: 0xcbddcc34999997ff,
|
NTPTime: 14690122083862791680,
|
||||||
RTPTime: 0x4d185ae8,
|
RTPTime: 0x4d185ae8,
|
||||||
PacketCount: 3,
|
PacketCount: 3,
|
||||||
OctetCount: 6,
|
OctetCount: 6,
|
||||||
|
Reference in New Issue
Block a user