From 6fad3354e98073239ea175a9c2f7fc4b521aeaad Mon Sep 17 00:00:00 2001 From: aler9 <46489434+aler9@users.noreply.github.com> Date: Sun, 13 Mar 2022 14:52:51 +0100 Subject: [PATCH] restore support for multi-track RTCP reports --- client.go | 16 ++++++++++++---- serversession.go | 4 +++- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/client.go b/client.go index 812b4ee0..f348cfa8 100644 --- a/client.go +++ b/client.go @@ -671,9 +671,11 @@ func (c *Client) playRecordStart() { switch *c.effectiveTransport { case TransportUDP: for trackID, cct := range c.tracks { + ctrackID := trackID + cct.rtcpReceiver = rtcpreceiver.New(c.udpReceiverReportPeriod, nil, cct.track.ClockRate(), func(pkt rtcp.Packet) { - c.WritePacketRTCP(trackID, pkt) + c.WritePacketRTCP(ctrackID, pkt) }) } @@ -687,9 +689,11 @@ func (c *Client) playRecordStart() { case TransportUDPMulticast: for trackID, cct := range c.tracks { + ctrackID := trackID + cct.rtcpReceiver = rtcpreceiver.New(c.udpReceiverReportPeriod, nil, cct.track.ClockRate(), func(pkt rtcp.Packet) { - c.WritePacketRTCP(trackID, pkt) + c.WritePacketRTCP(ctrackID, pkt) }) } @@ -709,9 +713,11 @@ func (c *Client) playRecordStart() { switch *c.effectiveTransport { case TransportUDP: for trackID, cct := range c.tracks { + ctrackID := trackID + cct.rtcpSender = rtcpsender.New(c.udpSenderReportPeriod, cct.track.ClockRate(), func(pkt rtcp.Packet) { - c.WritePacketRTCP(trackID, pkt) + c.WritePacketRTCP(ctrackID, pkt) }) } @@ -722,9 +728,11 @@ func (c *Client) playRecordStart() { case TransportUDPMulticast: for trackID, cct := range c.tracks { + ctrackID := trackID + cct.rtcpSender = rtcpsender.New(c.udpSenderReportPeriod, cct.track.ClockRate(), func(pkt rtcp.Packet) { - c.WritePacketRTCP(trackID, pkt) + c.WritePacketRTCP(ctrackID, pkt) }) } diff --git a/serversession.go b/serversession.go index 2a1b4743..9dc4c8f3 100644 --- a/serversession.go +++ b/serversession.go @@ -998,9 +998,11 @@ func (ss *ServerSession) handleRequest(sc *ServerConn, req *base.Request) (*base ss.WritePacketRTP(trackID, &rtp.Packet{Header: rtp.Header{Version: 2}}) ss.WritePacketRTCP(trackID, &rtcp.ReceiverReport{}) + ctrackID := trackID + ss.announcedTracks[trackID].rtcpReceiver = rtcpreceiver.New(ss.s.udpReceiverReportPeriod, nil, ss.announcedTracks[trackID].track.ClockRate(), func(pkt rtcp.Packet) { - ss.WritePacketRTCP(trackID, pkt) + ss.WritePacketRTCP(ctrackID, pkt) }) ss.s.udpRTPListener.addClient(ss.author.ip(), track.udpRTPPort, ss, trackID, true)