diff --git a/connclient.go b/connclient.go index e9109ee8..13529998 100644 --- a/connclient.go +++ b/connclient.go @@ -506,7 +506,7 @@ func (c *ConnClient) Setup(u *base.URL, mode headers.TransportMode, proto base.S c.tracks = append(c.tracks, track) if mode == headers.TransportModePlay { - c.rtcpReceivers[track.Id] = rtcpreceiver.New() + c.rtcpReceivers[track.Id] = rtcpreceiver.New(nil) if proto == StreamProtocolUDP { v := time.Now().Unix() diff --git a/pkg/rtcpreceiver/rtcpreceiver_test.go b/pkg/rtcpreceiver/rtcpreceiver_test.go index 80f404ff..d7add5ca 100644 --- a/pkg/rtcpreceiver/rtcpreceiver_test.go +++ b/pkg/rtcpreceiver/rtcpreceiver_test.go @@ -28,14 +28,14 @@ func TestRtcpReceiver(t *testing.T) { byts, _ := rtpPkt.Marshal() rr.OnFrame(base.StreamTypeRtp, byts) - rtcpPkt := rtcp.SenderReport{ + srPkt := rtcp.SenderReport{ SSRC: 0xba9da416, NTPTime: 0xe363887a17ced916, RTPTime: 1287981738, PacketCount: 714, OctetCount: 859127, } - byts, _ = rtcpPkt.Marshal() + byts, _ = srPkt.Marshal() rr.OnFrame(base.StreamTypeRtcp, byts) res := rr.Report() @@ -51,6 +51,34 @@ func TestRtcpReceiver(t *testing.T) { }, } expected, _ := expectedPkt.Marshal() + require.Equal(t, expected, res) + rtpPkt = rtp.Packet{ + Header: rtp.Header{ + Version: 2, + Marker: true, + PayloadType: 96, + SequenceNumber: 945, + Timestamp: 1287987768, + SSRC: 0xba9da416, + }, + Payload: []byte("\x00\x00"), + } + byts, _ = rtpPkt.Marshal() + rr.OnFrame(base.StreamTypeRtp, byts) + + res = rr.Report() + + expectedPkt = rtcp.ReceiverReport{ + SSRC: 0x65f83afb, + Reports: []rtcp.ReceptionReport{ + { + SSRC: 0xba9da416, + LastSequenceNumber: uint32(1<<16 | 945), + LastSenderReport: uint32(0x887a17ce), + }, + }, + } + expected, _ = expectedPkt.Marshal() require.Equal(t, expected, res) }