restore support for multi-track RTCP reports

This commit is contained in:
aler9
2022-03-13 14:52:51 +01:00
parent 6f2d82328f
commit 6fad3354e9
2 changed files with 15 additions and 5 deletions

View File

@@ -671,9 +671,11 @@ func (c *Client) playRecordStart() {
switch *c.effectiveTransport { switch *c.effectiveTransport {
case TransportUDP: case TransportUDP:
for trackID, cct := range c.tracks { for trackID, cct := range c.tracks {
ctrackID := trackID
cct.rtcpReceiver = rtcpreceiver.New(c.udpReceiverReportPeriod, nil, cct.rtcpReceiver = rtcpreceiver.New(c.udpReceiverReportPeriod, nil,
cct.track.ClockRate(), func(pkt rtcp.Packet) { 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: case TransportUDPMulticast:
for trackID, cct := range c.tracks { for trackID, cct := range c.tracks {
ctrackID := trackID
cct.rtcpReceiver = rtcpreceiver.New(c.udpReceiverReportPeriod, nil, cct.rtcpReceiver = rtcpreceiver.New(c.udpReceiverReportPeriod, nil,
cct.track.ClockRate(), func(pkt rtcp.Packet) { 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 { switch *c.effectiveTransport {
case TransportUDP: case TransportUDP:
for trackID, cct := range c.tracks { for trackID, cct := range c.tracks {
ctrackID := trackID
cct.rtcpSender = rtcpsender.New(c.udpSenderReportPeriod, cct.rtcpSender = rtcpsender.New(c.udpSenderReportPeriod,
cct.track.ClockRate(), func(pkt rtcp.Packet) { 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: case TransportUDPMulticast:
for trackID, cct := range c.tracks { for trackID, cct := range c.tracks {
ctrackID := trackID
cct.rtcpSender = rtcpsender.New(c.udpSenderReportPeriod, cct.rtcpSender = rtcpsender.New(c.udpSenderReportPeriod,
cct.track.ClockRate(), func(pkt rtcp.Packet) { cct.track.ClockRate(), func(pkt rtcp.Packet) {
c.WritePacketRTCP(trackID, pkt) c.WritePacketRTCP(ctrackID, pkt)
}) })
} }

View File

@@ -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.WritePacketRTP(trackID, &rtp.Packet{Header: rtp.Header{Version: 2}})
ss.WritePacketRTCP(trackID, &rtcp.ReceiverReport{}) ss.WritePacketRTCP(trackID, &rtcp.ReceiverReport{})
ctrackID := trackID
ss.announcedTracks[trackID].rtcpReceiver = rtcpreceiver.New(ss.s.udpReceiverReportPeriod, ss.announcedTracks[trackID].rtcpReceiver = rtcpreceiver.New(ss.s.udpReceiverReportPeriod,
nil, ss.announcedTracks[trackID].track.ClockRate(), func(pkt rtcp.Packet) { 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) ss.s.udpRTPListener.addClient(ss.author.ip(), track.udpRTPPort, ss, trackID, true)