Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pacer interface to send packets #1718

Draft
wants to merge 211 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
211 commits
Select commit Hold shift + click to select a range
bb9da12
Pacer interface to send packets
boks1971 May 18, 2023
f105253
notify outside lock
boks1971 May 18, 2023
06dc467
use select
boks1971 May 18, 2023
29e8f4e
use pass through pacer
boks1971 May 18, 2023
7494f99
add error to OnSent
boks1971 May 18, 2023
941a068
Remove log which could get noisy
boks1971 May 19, 2023
57e5d7c
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 19, 2023
12d7eb7
t Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 19, 2023
b2315d2
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 20, 2023
d38aaf9
Starting TWCC work (#1727)
boks1971 May 20, 2023
968cfd6
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 22, 2023
1efe39e
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 23, 2023
867ab6f
Some measurements (#1736)
boks1971 May 26, 2023
37f6040
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 26, 2023
9795102
variable name change and do not post to closed channel
boks1971 May 26, 2023
dc9db3e
unlock
boks1971 May 26, 2023
1d3afec
clean up
boks1971 May 26, 2023
2bd247d
comment
boks1971 May 26, 2023
0a69194
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 26, 2023
a016e69
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 May 26, 2023
e381bb6
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 28, 2023
8712e1a
Merge pull remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 29, 2023
ef8c4e9
Hooking up some more bits for TWCC (#1752)
boks1971 May 29, 2023
009f25d
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 May 31, 2023
6b5633f
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 2, 2023
9cd8618
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 5, 2023
50b571b
file output
boks1971 Jun 6, 2023
25d2012
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 6, 2023
60d8360
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 6, 2023
fbc9118
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 8, 2023
adc9063
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 8, 2023
8d4ba7b
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 9, 2023
e8e3e3d
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 9, 2023
ad6e7e5
wake under lock
boks1971 Jun 9, 2023
dc9d90a
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 9, 2023
4dbfa45
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 9, 2023
7751fea
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 9, 2023
29e99b4
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 9, 2023
f3ce9f7
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 9, 2023
0b27221
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 10, 2023
25b1083
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 10, 2023
4c0842a
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 10, 2023
09cfd96
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 10, 2023
38a6258
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 12, 2023
383038f
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 12, 2023
b8c1865
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 15, 2023
be624f2
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 15, 2023
0ba0228
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 16, 2023
513d938
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 16, 2023
21ab431
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 16, 2023
e98aa76
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 16, 2023
b0e82d7
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 16, 2023
02f5fb4
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 16, 2023
c983ca3
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 16, 2023
5454638
Merge branch 'raja_pacer' into raja_pacer2
boks1971 Jun 16, 2023
0862526
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 17, 2023
c248ddc
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 17, 2023
7167b10
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 17, 2023
01ebead
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 17, 2023
d93d4b4
Merge remote tracking branch 'origin/master' into raja_pacer
boks1971 Jun 17, 2023
761902b
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 17, 2023
65f41e4
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 19, 2023
c5ad83b
Merge remote tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 19, 2023
abfbccd
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 20, 2023
d930c0f
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 20, 2023
1d46495
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 20, 2023
178613f
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 20, 2023
6b5c4a7
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 21, 2023
0348acb
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 21, 2023
d9634e1
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 22, 2023
934db9a
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 22, 2023
5121e49
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 23, 2023
a9dc6cc
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 23, 2023
8265fb8
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 23, 2023
36a2a17
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 23, 2023
6e580a1
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 24, 2023
e928d5b
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 24, 2023
2f6a1ea
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 25, 2023
3c1b63e
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 25, 2023
c9418e5
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 26, 2023
303ee20
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 26, 2023
a7b2031
Merge remote tracking branch 'origin/master' into raja_pacer
boks1971 Jun 26, 2023
78d7788
Merge remote tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 26, 2023
9f44a84
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 27, 2023
be4bd8f
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 27, 2023
4d6562d
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 27, 2023
48f8751
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 27, 2023
88f86d8
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 28, 2023
a87510e
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 28, 2023
a5203d9
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 28, 2023
d309283
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 28, 2023
b6a8856
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 30, 2023
512dd08
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 30, 2023
e5da3cc
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 30, 2023
80a5ace
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 30, 2023
f8103cc
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 30, 2023
71c5bef
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jun 30, 2023
45dc743
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 1, 2023
d58630a
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 1, 2023
eedcee5
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 1, 2023
7b99d81
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 1, 2023
97c61a9
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 4, 2023
5f7e2ba
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 4, 2023
282bf5b
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 7, 2023
7c01be9
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 7, 2023
58c84c5
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 7, 2023
c649698
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 7, 2023
6df9103
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 8, 2023
b0a4cf9
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 8, 2023
daea09e
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 10, 2023
56794da
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 10, 2023
c37bb2b
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 11, 2023
19b9102
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 11, 2023
f7c21c0
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 12, 2023
d6a8397
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 12, 2023
2c1ad55
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 13, 2023
572f690
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 13, 2023
768ecce
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 14, 2023
50796cd
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 14, 2023
015d33f
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 15, 2023
c0f0133
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 15, 2023
6ea7dec
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 16, 2023
d4fc223
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 16, 2023
551308d
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 23, 2023
e9abcc9
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 23, 2023
5652998
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 25, 2023
75b0931
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 25, 2023
90ce26b
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 26, 2023
9c3466f
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 26, 2023
66459a4
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 27, 2023
6a9e4b0
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 27, 2023
5f67a4b
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 27, 2023
1a74974
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 27, 2023
aca77ff
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 27, 2023
1f3983f
Merge remote tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 27, 2023
c6096a3
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 29, 2023
c505b15
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 29, 2023
07457b9
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 30, 2023
4a6bb16
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 30, 2023
f94528f
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jul 31, 2023
d8ee6c6
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Jul 31, 2023
8e5330b
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 2, 2023
ddae752
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Aug 2, 2023
c3b4c79
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 2, 2023
c8feb6c
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Aug 2, 2023
f360173
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 4, 2023
f553e87
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Aug 4, 2023
8d649a8
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 4, 2023
a92a4b9
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Aug 4, 2023
bba2c86
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 7, 2023
87212a3
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Aug 7, 2023
58a09d7
keep track of RTX bytes separately
boks1971 Aug 7, 2023
41c6663
packet group
boks1971 Aug 7, 2023
fdb18d9
Packet group of 50ms
boks1971 Aug 7, 2023
18f2e2e
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 8, 2023
cd35d0e
Merge remote-tracking branch 'origin/raja_pacer' into raja_pacer2
boks1971 Aug 8, 2023
fc5f2f0
Minor refactoring
boks1971 Aug 8, 2023
c10c24d
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 9, 2023
ca93bc9
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 9, 2023
f189ece
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 10, 2023
3296274
rate calculator
boks1971 Aug 14, 2023
9a0b292
send bit rate
boks1971 Aug 14, 2023
f692ef8
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 18, 2023
70a0fb7
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 18, 2023
3a526e8
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 19, 2023
c2f75f7
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 20, 2023
4cb8dc7
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 21, 2023
9d1ec8e
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 25, 2023
d84da87
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 27, 2023
9fff089
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 27, 2023
ffe1849
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 28, 2023
f0cad4a
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 28, 2023
a9fed7c
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 29, 2023
35fc6a1
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 30, 2023
4512e7c
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 31, 2023
f0c107a
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Aug 31, 2023
14cb03a
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 1, 2023
e488bbe
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 3, 2023
83081bc
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 7, 2023
f4d611e
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 8, 2023
17542dd
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 8, 2023
48d3476
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 11, 2023
381e8c0
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 13, 2023
37c3333
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 15, 2023
3772ac9
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 18, 2023
134de97
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 18, 2023
9fe25d2
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 18, 2023
c25c669
Merge remote-tracking branch 'origin' into raja_pacer
boks1971 Sep 19, 2023
8baa8bd
Merge remote-tracking branch 'origin' into raja_pacer
boks1971 Sep 19, 2023
0e7c0a7
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 20, 2023
34ad4f3
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Sep 20, 2023
dff6920
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Oct 3, 2023
6f39fff
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Oct 16, 2023
60aa7f0
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Oct 18, 2023
5c7de32
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Oct 19, 2023
d92ce11
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Oct 21, 2023
ba6c597
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Oct 23, 2023
bda09f6
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Oct 23, 2023
11e31a6
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Oct 25, 2023
8191992
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Oct 26, 2023
ba554aa
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Nov 1, 2023
feda697
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Nov 8, 2023
54fb193
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Nov 22, 2023
952e14e
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Nov 30, 2023
b80ef0f
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jan 27, 2024
443f336
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jan 28, 2024
b13d835
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Feb 2, 2024
1a1d51e
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Feb 20, 2024
cea946a
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Mar 21, 2024
6031000
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Apr 26, 2024
d2269e9
Merge remote-tracking branch 'origin/master' into raja_pacer
boks1971 Jun 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ module github.com/livekit/livekit-server
go 1.18

require (
github.com/MicahParks/peakdetect v0.0.6
github.com/bep/debounce v1.2.1
github.com/d5/tengo/v2 v2.16.0
github.com/dustin/go-humanize v1.0.1
Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
github.com/MicahParks/peakdetect v0.0.6 h1:OzupTN1rWcjSCsDZrg+4w8D4FbDrR5WO4ItQOwCTwvk=
github.com/MicahParks/peakdetect v0.0.6/go.mod h1:NcgqFDGbT9/nVTFdZKY8iLS8n1BSd9eKp+rbQ73A118=
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
Expand Down
2 changes: 2 additions & 0 deletions pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ type CongestionControlConfig struct {
UseSendSideBWE bool `yaml:"send_side_bandwidth_estimation,omitempty"`
ProbeMode CongestionControlProbeMode `yaml:"padding_mode,omitempty"`
MinChannelCapacity int64 `yaml:"min_channel_capacity,omitempty"`
UseTWCC bool `yaml:"use_twcc"`
}

type AudioConfig struct {
Expand Down Expand Up @@ -272,6 +273,7 @@ func NewConfig(confString string, strictMode bool, c *cli.Context, baseFlags []c
Enabled: true,
AllowPause: false,
ProbeMode: CongestionControlProbeModePadding,
UseTWCC: true,
},
},
Audio: AudioConfig{
Expand Down
2 changes: 1 addition & 1 deletion pkg/rtc/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ func NewWebRTCConfig(conf *config.Config) (*WebRTCConfig, error) {
},
},
}
if rtcConf.CongestionControl.UseSendSideBWE {
if rtcConf.CongestionControl.UseSendSideBWE || rtcConf.CongestionControl.UseTWCC {
subscriberConfig.RTPHeaderExtension.Video = append(subscriberConfig.RTPHeaderExtension.Video, sdp.TransportCCURI)
subscriberConfig.RTCPFeedback.Video = append(subscriberConfig.RTCPFeedback.Video, webrtc.RTCPFeedback{Type: webrtc.TypeRTCPFBTransportCC})
} else {
Expand Down
1 change: 1 addition & 0 deletions pkg/rtc/mediatracksubscriptions.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ func (t *MediaTrackSubscriptions) AddSubscriber(sub types.LocalParticipant, wr *
subscriberID,
t.params.ReceiverConfig.PacketBufferSize,
sub.GetAllowTimestampAdjustment(),
sub.GetPacer(),
LoggerWithTrack(sub.GetLogger(), trackID, t.params.IsRelayed),
)
if err != nil {
Expand Down
5 changes: 5 additions & 0 deletions pkg/rtc/participant.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (
"github.com/livekit/livekit-server/pkg/sfu"
"github.com/livekit/livekit-server/pkg/sfu/buffer"
"github.com/livekit/livekit-server/pkg/sfu/connectionquality"
"github.com/livekit/livekit-server/pkg/sfu/pacer"
"github.com/livekit/livekit-server/pkg/sfu/streamallocator"
"github.com/livekit/livekit-server/pkg/telemetry"
"github.com/livekit/livekit-server/pkg/telemetry/prometheus"
Expand Down Expand Up @@ -237,6 +238,10 @@ func (p *ParticipantImpl) GetAllowTimestampAdjustment() bool {
return p.params.AllowTimestampAdjustment
}

func (p *ParticipantImpl) GetPacer() pacer.Pacer {
return p.TransportManager.GetSubscriberPacer()
}

func (p *ParticipantImpl) ID() livekit.ParticipantID {
return p.params.SID
}
Expand Down
45 changes: 27 additions & 18 deletions pkg/rtc/transport.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ import (

"github.com/livekit/livekit-server/pkg/config"
"github.com/livekit/livekit-server/pkg/rtc/types"
"github.com/livekit/livekit-server/pkg/sfu/pacer"
"github.com/livekit/livekit-server/pkg/sfu/sendsidebwe"
"github.com/livekit/livekit-server/pkg/sfu/streamallocator"
"github.com/livekit/livekit-server/pkg/telemetry"
"github.com/livekit/livekit-server/pkg/telemetry/prometheus"
Expand Down Expand Up @@ -185,6 +187,10 @@ type PCTransport struct {
// stream allocator for subscriber PC
streamAllocator *streamallocator.StreamAllocator

// only for subscriber PC
sendSideBWE *sendsidebwe.SendSideBWE
pacer pacer.Pacer

previousAnswer *webrtc.SessionDescription
// track id -> description map in previous offer sdp
previousTrackDescription map[string]*trackDescription
Expand Down Expand Up @@ -232,9 +238,7 @@ type TransportParams struct {
}

func newPeerConnection(params TransportParams, onBandwidthEstimator func(estimator cc.BandwidthEstimator)) (*webrtc.PeerConnection, *webrtc.MediaEngine, error) {
directionConfig := params.DirectionConfig

me, err := createMediaEngine(params.EnabledCodecs, directionConfig)
me, err := createMediaEngine(params.EnabledCodecs, params.DirectionConfig)
if err != nil {
return nil, nil, err
}
Expand Down Expand Up @@ -305,21 +309,7 @@ func newPeerConnection(params TransportParams, onBandwidthEstimator func(estimat

ir := &interceptor.Registry{}
if params.IsSendSide {
isSendSideBWE := false
for _, ext := range directionConfig.RTPHeaderExtension.Video {
if ext == sdp.TransportCCURI {
isSendSideBWE = true
break
}
}
for _, ext := range directionConfig.RTPHeaderExtension.Audio {
if ext == sdp.TransportCCURI {
isSendSideBWE = true
break
}
}

if isSendSideBWE {
if params.CongestionControlConfig.UseSendSideBWE && !params.CongestionControlConfig.UseTWCC {
gf, err := cc.NewInterceptor(func() (cc.BandwidthEstimator, error) {
return gcc.NewSendSideBWE(
gcc.SendSideBWEInitialBitrate(1*1000*1000),
Expand Down Expand Up @@ -376,6 +366,15 @@ func NewPCTransport(params TransportParams) (*PCTransport, error) {
Logger: params.Logger,
})
t.streamAllocator.Start()

if params.CongestionControlConfig.UseTWCC {
t.sendSideBWE = sendsidebwe.NewSendSideBWE(params.Logger)
t.pacer = pacer.NewNoQueue(params.Logger, t.sendSideBWE)

t.streamAllocator.SetSendSideBWE(t.sendSideBWE)
} else {
t.pacer = pacer.NewPassThrough(params.Logger, nil)
}
}

if err := t.createPeerConnection(); err != nil {
Expand Down Expand Up @@ -414,6 +413,10 @@ func (t *PCTransport) createPeerConnection() error {
return nil
}

func (t *PCTransport) GetPacer() pacer.Pacer {
return t.pacer
}

func (t *PCTransport) SetSignalingRTT(rtt uint32) {
t.signalingRTT.Store(rtt)
}
Expand Down Expand Up @@ -898,6 +901,12 @@ func (t *PCTransport) Close() {
if t.streamAllocator != nil {
t.streamAllocator.Stop()
}
if t.pacer != nil {
t.pacer.Stop()
}
if t.sendSideBWE != nil {
t.sendSideBWE.Stop()
}

_ = t.pc.Close()

Expand Down
5 changes: 5 additions & 0 deletions pkg/rtc/transportmanager.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import (
"github.com/livekit/livekit-server/pkg/config"
"github.com/livekit/livekit-server/pkg/rtc/types"
"github.com/livekit/livekit-server/pkg/sfu"
"github.com/livekit/livekit-server/pkg/sfu/pacer"
"github.com/livekit/livekit-server/pkg/sfu/streamallocator"
"github.com/livekit/livekit-server/pkg/telemetry"
"github.com/livekit/protocol/livekit"
Expand Down Expand Up @@ -283,6 +284,10 @@ func (t *TransportManager) WriteSubscriberRTCP(pkts []rtcp.Packet) error {
return t.subscriber.WriteRTCP(pkts)
}

func (t *TransportManager) GetSubscriberPacer() pacer.Pacer {
return t.subscriber.GetPacer()
}

func (t *TransportManager) OnPrimaryTransportInitialConnected(f func()) {
t.onPrimaryTransportInitialConnected = f
}
Expand Down
3 changes: 3 additions & 0 deletions pkg/rtc/types/interfaces.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import (
"github.com/livekit/livekit-server/pkg/routing"
"github.com/livekit/livekit-server/pkg/sfu"
"github.com/livekit/livekit-server/pkg/sfu/buffer"
"github.com/livekit/livekit-server/pkg/sfu/pacer"
)

//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 -generate
Expand Down Expand Up @@ -343,6 +344,8 @@ type LocalParticipant interface {
SetSubscriberChannelCapacity(channelCapacity int64)

GetAllowTimestampAdjustment() bool

GetPacer() pacer.Pacer
}

// Room is a container of participants, and can provide room-level actions
Expand Down
66 changes: 66 additions & 0 deletions pkg/rtc/types/typesfakes/fake_local_participant.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.