Skip to content

Commit e26c7f6

Browse files
committed
Add pacer to tests
1 parent 740873f commit e26c7f6

File tree

4 files changed

+32
-14
lines changed

4 files changed

+32
-14
lines changed

bwe_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ func TestBWE(t *testing.T) {
126126
setVNet(network.right, []string{"10.0.2.1"}),
127127
registerPacketLogger(logger.With("vantage-point", "sender")),
128128
registerRTPFB(),
129+
registerPacer(),
129130
initGCC(func(rate int) {
130131
logger.Info("setting codec target bitrate", "rate", rate)
131132
codec.setTargetBitrate(rate)

go.mod

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/pion/bwe
22

3-
go 1.24
3+
go 1.24.0
44

55
require (
66
github.com/pion/interceptor v0.1.42-0.20251016092317-ce5124bd6cdf
@@ -20,15 +20,20 @@ require (
2020
github.com/pion/ice/v4 v4.0.10 // indirect
2121
github.com/pion/mdns/v2 v2.0.7 // indirect
2222
github.com/pion/randutil v0.1.0 // indirect
23-
github.com/pion/sctp v1.8.39 // indirect
24-
github.com/pion/sdp/v3 v3.0.15 // indirect
25-
github.com/pion/srtp/v3 v3.0.7 // indirect
23+
github.com/pion/sctp v1.8.40 // indirect
24+
github.com/pion/sdp/v3 v3.0.16 // indirect
25+
github.com/pion/srtp/v3 v3.0.8 // indirect
2626
github.com/pion/stun/v3 v3.0.0 // indirect
2727
github.com/pion/turn/v4 v4.1.1 // indirect
2828
github.com/pmezard/go-difflib v1.0.0 // indirect
2929
github.com/wlynxg/anet v0.0.5 // indirect
3030
golang.org/x/crypto v0.33.0 // indirect
3131
golang.org/x/net v0.35.0 // indirect
3232
golang.org/x/sys v0.30.0 // indirect
33+
golang.org/x/time v0.14.0 // indirect
3334
gopkg.in/yaml.v3 v3.0.1 // indirect
3435
)
36+
37+
replace github.com/pion/interceptor v0.1.42-0.20251016092317-ce5124bd6cdf => ../interceptor
38+
39+
replace github.com/pion/webrtc/v4 v4.1.4 => ../webrtc

go.sum

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ github.com/pion/dtls/v3 v3.0.7 h1:bItXtTYYhZwkPFk4t1n3Kkf5TDrfj6+4wG+CZR8uI9Q=
1212
github.com/pion/dtls/v3 v3.0.7/go.mod h1:uDlH5VPrgOQIw59irKYkMudSFprY9IEFCqz/eTz16f8=
1313
github.com/pion/ice/v4 v4.0.10 h1:P59w1iauC/wPk9PdY8Vjl4fOFL5B+USq1+xbDcN6gT4=
1414
github.com/pion/ice/v4 v4.0.10/go.mod h1:y3M18aPhIxLlcO/4dn9X8LzLLSma84cx6emMSu14FGw=
15-
github.com/pion/interceptor v0.1.42-0.20251016092317-ce5124bd6cdf h1:/I4PY/suu+TndWEIdHBke29M58QIxUR3neZndVxVUzA=
16-
github.com/pion/interceptor v0.1.42-0.20251016092317-ce5124bd6cdf/go.mod h1:sn0zW8AhYpX24aDub5BumnPp0Zr2nHk6gS2fxXSfFD0=
1715
github.com/pion/logging v0.2.4 h1:tTew+7cmQ+Mc1pTBLKH2puKsOvhm32dROumOZ655zB8=
1816
github.com/pion/logging v0.2.4/go.mod h1:DffhXTKYdNZU+KtJ5pyQDjvOAh/GsNSyv1lbkFbe3so=
1917
github.com/pion/mdns/v2 v2.0.7 h1:c9kM8ewCgjslaAmicYMFQIde2H9/lrZpjBkN8VwoVtM=
@@ -24,20 +22,18 @@ github.com/pion/rtcp v1.2.16 h1:fk1B1dNW4hsI78XUCljZJlC4kZOPk67mNRuQ0fcEkSo=
2422
github.com/pion/rtcp v1.2.16/go.mod h1:/as7VKfYbs5NIb4h6muQ35kQF/J0ZVNz2Z3xKoCBYOo=
2523
github.com/pion/rtp v1.8.24 h1:+ICyZXUQDv95EsHN70RrA4XKJf5MGWyC6QQc1u6/ynI=
2624
github.com/pion/rtp v1.8.24/go.mod h1:rF5nS1GqbR7H/TCpKwylzeq6yDM+MM6k+On5EgeThEM=
27-
github.com/pion/sctp v1.8.39 h1:PJma40vRHa3UTO3C4MyeJDQ+KIobVYRZQZ0Nt7SjQnE=
28-
github.com/pion/sctp v1.8.39/go.mod h1:cNiLdchXra8fHQwmIoqw0MbLLMs+f7uQ+dGMG2gWebE=
29-
github.com/pion/sdp/v3 v3.0.15 h1:F0I1zds+K/+37ZrzdADmx2Q44OFDOPRLhPnNTaUX9hk=
30-
github.com/pion/sdp/v3 v3.0.15/go.mod h1:88GMahN5xnScv1hIMTqLdu/cOcUkj6a9ytbncwMCq2E=
31-
github.com/pion/srtp/v3 v3.0.7 h1:QUElw0A/FUg3MP8/KNMZB3i0m8F9XeMnTum86F7S4bs=
32-
github.com/pion/srtp/v3 v3.0.7/go.mod h1:qvnHeqbhT7kDdB+OGB05KA/P067G3mm7XBfLaLiaNF0=
25+
github.com/pion/sctp v1.8.40 h1:bqbgWYOrUhsYItEnRObUYZuzvOMsVplS3oNgzedBlG8=
26+
github.com/pion/sctp v1.8.40/go.mod h1:SPBBUENXE6ThkEksN5ZavfAhFYll+h+66ZiG6IZQuzo=
27+
github.com/pion/sdp/v3 v3.0.16 h1:0dKzYO6gTAvuLaAKQkC02eCPjMIi4NuAr/ibAwrGDCo=
28+
github.com/pion/sdp/v3 v3.0.16/go.mod h1:9tyKzznud3qiweZcD86kS0ff1pGYB3VX+Bcsmkx6IXo=
29+
github.com/pion/srtp/v3 v3.0.8 h1:RjRrjcIeQsilPzxvdaElN0CpuQZdMvcl9VZ5UY9suUM=
30+
github.com/pion/srtp/v3 v3.0.8/go.mod h1:2Sq6YnDH7/UDCvkSoHSDNDeyBcFgWL0sAVycVbAsXFg=
3331
github.com/pion/stun/v3 v3.0.0 h1:4h1gwhWLWuZWOJIJR9s2ferRO+W3zA/b6ijOI6mKzUw=
3432
github.com/pion/stun/v3 v3.0.0/go.mod h1:HvCN8txt8mwi4FBvS3EmDghW6aQJ24T+y+1TKjB5jyU=
3533
github.com/pion/transport/v3 v3.0.9-0.20251018195250-6c2e33524ea2 h1:03XFM07X4ZukGIeIWZ7nfe0LHvqoA3tjG6DDypHugLg=
3634
github.com/pion/transport/v3 v3.0.9-0.20251018195250-6c2e33524ea2/go.mod h1:+c2eewC5WJQHiAA46fkMMzoYZSuGzA/7E2FPrOYHctQ=
3735
github.com/pion/turn/v4 v4.1.1 h1:9UnY2HB99tpDyz3cVVZguSxcqkJ1DsTSZ+8TGruh4fc=
3836
github.com/pion/turn/v4 v4.1.1/go.mod h1:2123tHk1O++vmjI5VSD0awT50NywDAq5A2NNNU4Jjs8=
39-
github.com/pion/webrtc/v4 v4.1.4 h1:/gK1ACGHXQmtyVVbJFQDxNoODg4eSRiFLB7t9r9pg8M=
40-
github.com/pion/webrtc/v4 v4.1.4/go.mod h1:Oab9npu1iZtQRMic3K3toYq5zFPvToe/QBw7dMI2ok4=
4137
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4238
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
4339
github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
@@ -50,6 +46,8 @@ golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8=
5046
golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk=
5147
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
5248
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
49+
golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
50+
golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
5351
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
5452
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
5553
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

peer_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
"github.com/pion/bwe/gcc"
1212
"github.com/pion/interceptor"
13+
"github.com/pion/interceptor/pkg/pacing"
1314
"github.com/pion/interceptor/pkg/packetdump"
1415
"github.com/pion/interceptor/pkg/rfc8888"
1516
"github.com/pion/interceptor/pkg/rtpfb"
@@ -132,6 +133,15 @@ func initGCC(onRateUpdate func(int)) option {
132133
}
133134
}
134135

136+
func registerPacer() option {
137+
return func(p *peer) error {
138+
p.pacer = pacing.NewInterceptor()
139+
p.interceptorRegistry.Add(p.pacer)
140+
141+
return nil
142+
}
143+
}
144+
135145
type peer struct {
136146
logger logging.LeveledLogger
137147
pc *webrtc.PeerConnection
@@ -143,6 +153,7 @@ type peer struct {
143153
onRemoteTrack func(*webrtc.TrackRemote)
144154
onConnected func()
145155

156+
pacer *pacing.InterceptorFactory
146157
estimator *gcc.SendSideController
147158
onRateUpdate func(int)
148159
}
@@ -324,5 +335,8 @@ func (p *peer) updateTargetRate(report rtpfb.Report) {
324335
if p.onRateUpdate != nil {
325336
p.onRateUpdate(rate)
326337
}
338+
if p.pacer != nil {
339+
p.pacer.SetRate(p.pc.ID(), rate)
340+
}
327341
}
328342
}

0 commit comments

Comments
 (0)