1
Fork 0

Handle sender reports for down tracks.

In principle, we should be receiving receiver reports only, but let's
be robust.
This commit is contained in:
Juliusz Chroboczek 2020-06-01 00:35:37 +02:00
parent 8fda40b544
commit 303d15539c
1 changed files with 13 additions and 10 deletions

View File

@ -866,16 +866,13 @@ func rtcpDownListener(conn *rtpDownConnection, track *rtpDownTrack, s *webrtc.RT
case *rtcp.ReceiverReport:
for _, r := range p.Reports {
if r.SSRC == track.track.SSRC() {
now := mono.Microseconds()
track.stats.Set(
r.FractionLost,
r.Jitter,
now,
)
track.updateRate(
r.FractionLost,
now,
)
handleReport(track, r)
}
}
case *rtcp.SenderReport:
for _, r := range p.Reports {
if r.SSRC == track.track.SSRC() {
handleReport(track, r)
}
}
case *rtcp.TransportLayerNack:
@ -891,6 +888,12 @@ func rtcpDownListener(conn *rtpDownConnection, track *rtpDownTrack, s *webrtc.RT
}
}
func handleReport(track *rtpDownTrack, report rtcp.ReceptionReport) {
now := mono.Microseconds()
track.stats.Set(report.FractionLost, report.Jitter, now)
track.updateRate(report.FractionLost, now)
}
func trackKinds(down *rtpDownConnection) (audio bool, video bool) {
if down.pc == nil {
return