diff --git a/go.mod b/go.mod index 757adaef5..c9cd8c521 100644 --- a/go.mod +++ b/go.mod @@ -14,21 +14,22 @@ require ( github.com/lucsky/cuid v1.0.2 github.com/pion/interceptor v0.0.5 github.com/pion/ion-log v1.0.0 + github.com/pion/quic v0.1.4 // indirect github.com/pion/rtcp v1.2.6 github.com/pion/rtp v1.6.1 github.com/pion/sdp/v3 v3.0.3 github.com/pion/srtp v1.5.2 // indirect - github.com/pion/webrtc/v3 v3.0.0-beta.14.0.20201204195248-3d9a7ede1a90 + github.com/pion/webrtc/v3 v3.0.0-beta.15.0.20201209023348-63401a8837fb github.com/rs/cors v1.7.0 // indirect github.com/sirupsen/logrus v1.2.0 // indirect github.com/soheilhy/cmux v0.1.4 github.com/sourcegraph/jsonrpc2 v0.0.0-20200429184054-15c2290dcb37 github.com/spf13/viper v1.7.1 github.com/stretchr/testify v1.6.1 - golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c // indirect - golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb // indirect + golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 // indirect + golang.org/x/net v0.0.0-20201207224615-747e23833adb // indirect golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e - golang.org/x/sys v0.0.0-20201202213521-69691e467435 // indirect + golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d // indirect google.golang.org/grpc v1.33.2 google.golang.org/protobuf v1.25.0 gopkg.in/ini.v1 v1.51.1 // indirect diff --git a/go.sum b/go.sum index 5f5975d4d..955e3b7f2 100644 --- a/go.sum +++ b/go.sum @@ -218,9 +218,11 @@ github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+W github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.14.0 h1:2mOpI4JVVPBN+WQRa0WKH2eXR+Ey+uK4n7Zj0aYpIQA= github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.14.2/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1 h1:o0+MgICZLuZ7xjH7Vx6zS/zcu93/BEp1VwkIW1mEXCE= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= @@ -287,6 +289,8 @@ github.com/pion/webrtc/v3 v3.0.0-beta.12.0.20201115002753-64bbf7eea97d h1:31CZJr github.com/pion/webrtc/v3 v3.0.0-beta.12.0.20201115002753-64bbf7eea97d/go.mod h1:UbmDN5G82nXLXAiSIo0HYU68GN6z09jeKSNEaDUzFvY= github.com/pion/webrtc/v3 v3.0.0-beta.14.0.20201204195248-3d9a7ede1a90 h1:bLaB4Xk7gruH8zXTp2oefQcqQKzpMAVlGabcDmlNOwc= github.com/pion/webrtc/v3 v3.0.0-beta.14.0.20201204195248-3d9a7ede1a90/go.mod h1:hOmBE3qtEEtF3LYzMXJ/jex+QhVBYG8CtJRA/C8isI0= +github.com/pion/webrtc/v3 v3.0.0-beta.15.0.20201209023348-63401a8837fb h1:odlj6CPofUlcqGpFZyRbCCBHEv9WJaPWUIqO/IPiTuk= +github.com/pion/webrtc/v3 v3.0.0-beta.15.0.20201209023348-63401a8837fb/go.mod h1:549ITPqIAp16O7ZtSRPAhj+CSteoM3Yjcb5xpDoT3vY= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -407,6 +411,8 @@ golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 h1:umElSU9WZirRdgu2yFHY0a golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c h1:9HhBz5L/UjnK9XLtiZhYAdue5BVKep3PMmS2LuPDt8k= golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9 h1:sYNJzB4J8toYPQTM6pAkcmBRgw9SnQKP9oXCHfgy604= +golang.org/x/crypto v0.0.0-20201208171446-5f87f3452ae9/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -451,6 +457,7 @@ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81R golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201002202402-0a1ea396d57c/go.mod h1:iQL9McJNjoIa5mjH6nYTCTZXUN6RP+XW3eib7Ya3XcI= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102 h1:42cLlJJdEh+ySyeUUbEQ5bsTiq8voBeTuweGVkY6Puw= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME= @@ -459,6 +466,8 @@ golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7 h1:3uJsdck53FDIpWwLeAXlia9p4 golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201207224615-747e23833adb h1:xj2oMIbduz83x7tzglytWT7spn6rP+9hvKjTpro6/pM= +golang.org/x/net v0.0.0-20201207224615-747e23833adb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -500,6 +509,8 @@ golang.org/x/sys v0.0.0-20201113233024-12cec1faf1ba h1:xmhUJGQGbxlod18iJGqVEp9cH golang.org/x/sys v0.0.0-20201113233024-12cec1faf1ba/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201202213521-69691e467435 h1:25AvDqqB9PrNqj1FLf2/70I4W0L19qqoaFq3gjNwbKk= golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d h1:MiWWjyhUzZ+jvhZvloX6ZrUsdEghn8a64Upd8EMHglE= +golang.org/x/sys v0.0.0-20201207223542-d4d67f95c62d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= diff --git a/pkg/buffer/buffer.go b/pkg/buffer/buffer.go index 1ac219be7..a225d2cef 100644 --- a/pkg/buffer/buffer.go +++ b/pkg/buffer/buffer.go @@ -149,8 +149,7 @@ func (b *Buffer) push(p *rtp.Packet) { b.feedbackTWCC(rtpTCC.TransportSequence, b.lastPacketTime, p.Marker) } } - // a := p.GetExtension(4) - // fmt.Printf("%b,%v", a, p.Header.ExtensionProfile == 0x1000) + if b.lastPacketTime-b.lastReport >= reportDelta { b.feedbackCB(b.getRTCP()) b.lastReport = b.lastPacketTime diff --git a/pkg/sfu/downtrack.go b/pkg/sfu/downtrack.go index 25672fac6..84031c395 100644 --- a/pkg/sfu/downtrack.go +++ b/pkg/sfu/downtrack.go @@ -227,8 +227,6 @@ func (d *DownTrack) writeSimpleRTP(pkt rtp.Packet) error { pkt.Timestamp = newTS pkt.SequenceNumber = newSN pkt.SSRC = d.ssrc - pkt.Header.Extension = false - pkt.Header.Extensions = nil _, err := d.writeStream.WriteRTP(&pkt.Header, pkt.Payload) if err != nil { diff --git a/pkg/sfu/mediaengine.go b/pkg/sfu/mediaengine.go index 3a8aaaa0a..c88ffb547 100644 --- a/pkg/sfu/mediaengine.go +++ b/pkg/sfu/mediaengine.go @@ -51,10 +51,6 @@ func getPublisherMediaEngine() (*webrtc.MediaEngine, error) { RTPCodecCapability: webrtc.RTPCodecCapability{MimeType: mimeTypeH264, ClockRate: 90000, SDPFmtpLine: "level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f", RTCPFeedback: videoRTCPFeedback}, PayloadType: 108, }, - { - RTPCodecCapability: webrtc.RTPCodecCapability{MimeType: mimeTypeH264, ClockRate: 90000, SDPFmtpLine: "level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f", RTCPFeedback: videoRTCPFeedback}, - PayloadType: 127, - }, { RTPCodecCapability: webrtc.RTPCodecCapability{MimeType: mimeTypeH264, ClockRate: 90000, SDPFmtpLine: "level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032", RTCPFeedback: videoRTCPFeedback}, PayloadType: 123, diff --git a/pkg/sfu/router.go b/pkg/sfu/router.go index f5eb31029..463987706 100644 --- a/pkg/sfu/router.go +++ b/pkg/sfu/router.go @@ -197,7 +197,7 @@ func (r *router) loopDownTrackRTCP(track *DownTrack) { } case *rtcp.ReceiverReport: if len(p.Reports) > 0 && p.Reports[0].FractionLost > 25 { - log.Tracef("Slow link for sender %s, fraction packet lost %.2f", track.id, float64(p.Reports[0].FractionLost)/256) + log.Tracef("Slow link for sender %s, fraction packet lost %.2f", track.peerID, float64(p.Reports[0].FractionLost)/256) } case *rtcp.TransportLayerNack: log.Tracef("sender got nack: %+v", p) @@ -208,7 +208,7 @@ func (r *router) loopDownTrackRTCP(track *DownTrack) { track.tsOffset, track.nList.getNACKSeqNo(pair.PacketList())) { pt := pt - _ = track.WriteRTP(&pt) + _, _ = track.writeStream.WriteRTP(&pt.Header, pt.Payload) } } }