Browse Source

RTSP source: skip tracks with an invalid clock rate (#832)

pull/883/head
aler9 3 years ago
parent
commit
e611c7ddfd
  1. 2
      go.mod
  2. 4
      go.sum
  3. 36
      internal/rtcpsenderset/rtcpsenderset.go

2
go.mod

@ -4,7 +4,7 @@ go 1.17 @@ -4,7 +4,7 @@ go 1.17
require (
code.cloudfoundry.org/bytefmt v0.0.0-20211005130812-5bb3c17173e5
github.com/aler9/gortsplib v0.0.0-20220309090315-218e5ae2268d
github.com/aler9/gortsplib v0.0.0-20220315110410-f4c783bc85ed
github.com/asticode/go-astits v1.10.0
github.com/fsnotify/fsnotify v1.4.9
github.com/gin-gonic/gin v1.7.2

4
go.sum

@ -4,8 +4,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo @@ -4,8 +4,8 @@ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafo
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d h1:UQZhZ2O0vMHr2cI+DC1Mbh0TJxzA3RcLoMsFw+aXw7E=
github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho=
github.com/aler9/gortsplib v0.0.0-20220309090315-218e5ae2268d h1:gkprEVqz3Y/PJ1bfUCXJwyJDE0qIk/WFt7/DlfOgrxI=
github.com/aler9/gortsplib v0.0.0-20220309090315-218e5ae2268d/go.mod h1:4HE78w95Rqw1B2T90CHwtA4xBPPCRZ7/G8ds8ZdWcFk=
github.com/aler9/gortsplib v0.0.0-20220315110410-f4c783bc85ed h1:ldsFly4TONeKCoIiG+Vvvg07HCfIstH+pI2VmqIRuJo=
github.com/aler9/gortsplib v0.0.0-20220315110410-f4c783bc85ed/go.mod h1:4HE78w95Rqw1B2T90CHwtA4xBPPCRZ7/G8ds8ZdWcFk=
github.com/aler9/rtmp v0.0.0-20210403095203-3be4a5535927 h1:95mXJ5fUCYpBRdSOnLAQAdJHHKxxxJrVCiaqDi965YQ=
github.com/aler9/rtmp v0.0.0-20210403095203-3be4a5535927/go.mod h1:vzuE21rowz+lT1NGsWbreIvYulgBpCGnQyeTyFblUHc=
github.com/asticode/go-astikit v0.20.0 h1:+7N+J4E4lWx2QOkRdOf6DafWJMv6O4RRfgClwQokrH8=

36
internal/rtcpsenderset/rtcpsenderset.go

@ -34,41 +34,21 @@ func New( @@ -34,41 +34,21 @@ func New(
s.senders = make([]*rtcpsender.RTCPSender, len(tracks))
for i, track := range tracks {
s.senders[i] = rtcpsender.New(track.ClockRate())
}
ci := i
go s.run()
s.senders[i] = rtcpsender.New(10*time.Second,
track.ClockRate(), func(pkt rtcp.Packet) {
onPacketRTCP(ci, pkt)
})
}
return s
}
// Close closes a RTCPSenderSet.
func (s *RTCPSenderSet) Close() {
close(s.terminate)
<-s.done
}
func (s *RTCPSenderSet) run() {
defer close(s.done)
t := time.NewTicker(10 * time.Second)
defer t.Stop()
for {
select {
case <-t.C:
now := time.Now()
for i, sender := range s.senders {
r := sender.Report(now)
if r != nil {
s.onPacketRTCP(i, r)
}
}
case <-s.terminate:
return
}
for _, sender := range s.senders {
sender.Close()
}
}

Loading…
Cancel
Save