Skip to content

Commit 8a3c802

Browse files
authored
Use RTPConverter from protocol/utils. (#779)
1 parent dfca0cf commit 8a3c802

File tree

4 files changed

+44
-84
lines changed

4 files changed

+44
-84
lines changed

go.mod

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,27 +10,25 @@ require (
1010
github.com/livekit/mageutil v0.0.0-20250511045019-0f1ff63f7731
1111
github.com/livekit/media-sdk v0.0.0-20250927154350-bd99739b439b
1212
github.com/livekit/mediatransportutil v0.0.0-20250825135402-7bc31f107ade
13-
github.com/livekit/protocol v1.42.2-0.20251016024155-8cf58ff15ac6
13+
github.com/livekit/protocol v1.42.3-0.20251022070801-a1e0e55a5c55
1414
github.com/magefile/mage v1.15.0
1515
github.com/pion/dtls/v3 v3.0.7
1616
github.com/pion/interceptor v0.1.41
17-
github.com/pion/rtcp v1.2.15
18-
github.com/pion/rtp v1.8.23
17+
github.com/pion/rtcp v1.2.16
18+
github.com/pion/rtp v1.8.24
1919
github.com/pion/sdp/v3 v3.0.16
2020
github.com/pion/webrtc/v4 v4.1.6
2121
github.com/stretchr/testify v1.11.1
2222
github.com/twitchtv/twirp v8.1.3+incompatible
2323
go.uber.org/atomic v1.11.0
2424
golang.org/x/crypto v0.43.0
25-
golang.org/x/exp v0.0.0-20251009144603-d2f985daa21b
25+
golang.org/x/exp v0.0.0-20251017212417-90e834f514db
2626
google.golang.org/protobuf v1.36.10
2727
)
2828

2929
require (
3030
github.com/moby/buildkit v0.25.1
3131
github.com/moby/patternmatcher v0.6.0
32-
github.com/pelletier/go-toml v1.9.5
33-
github.com/schollz/progressbar/v3 v3.18.0
3432
golang.org/x/mod v0.29.0
3533
)
3634

@@ -60,7 +58,6 @@ require (
6058
github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 // indirect
6159
github.com/in-toto/in-toto-golang v0.9.0 // indirect
6260
github.com/maxbrunsfeld/counterfeiter/v6 v6.11.3 // indirect
63-
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
6461
github.com/moby/locker v1.0.1 // indirect
6562
github.com/moby/sys/signal v0.7.1 // indirect
6663
github.com/morikuni/aec v1.0.0 // indirect
@@ -69,7 +66,6 @@ require (
6966
github.com/opencontainers/runc v1.2.3 // indirect
7067
github.com/pkg/errors v0.9.1 // indirect
7168
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect
72-
github.com/rivo/uniseg v0.4.7 // indirect
7369
github.com/secure-systems-lab/go-securesystemslib v0.6.0 // indirect
7470
github.com/shibumi/go-pathspec v1.3.0 // indirect
7571
github.com/sirupsen/logrus v1.9.3 // indirect
@@ -87,7 +83,6 @@ require (
8783
go.opentelemetry.io/otel/sdk v1.37.0 // indirect
8884
go.opentelemetry.io/otel/trace v1.37.0 // indirect
8985
go.opentelemetry.io/proto/otlp v1.5.0 // indirect
90-
golang.org/x/term v0.36.0 // indirect
9186
golang.org/x/time v0.12.0 // indirect
9287
golang.org/x/tools v0.38.0 // indirect
9388
)
@@ -114,7 +109,7 @@ require (
114109
github.com/jfreymuth/vorbis v1.0.2 // indirect
115110
github.com/joho/godotenv v1.5.1
116111
github.com/jxskiss/base62 v1.1.0 // indirect
117-
github.com/klauspost/compress v1.18.0 // indirect
112+
github.com/klauspost/compress v1.18.1 // indirect
118113
github.com/klauspost/cpuid/v2 v2.3.0 // indirect
119114
github.com/lithammer/shortuuid/v4 v4.2.0 // indirect
120115
github.com/livekit/psrpc v0.7.0 // indirect
@@ -133,7 +128,7 @@ require (
133128
github.com/pion/turn/v4 v4.1.1 // indirect
134129
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
135130
github.com/puzpuzpuz/xsync/v3 v3.5.1 // indirect
136-
github.com/redis/go-redis/v9 v9.14.0 // indirect
131+
github.com/redis/go-redis/v9 v9.14.1 // indirect
137132
github.com/stoewer/go-strcase v1.3.1 // indirect
138133
github.com/wlynxg/anet v0.0.5 // indirect
139134
github.com/zeebo/xxh3 v1.0.2 // indirect
@@ -144,8 +139,8 @@ require (
144139
golang.org/x/sync v0.17.0
145140
golang.org/x/sys v0.37.0 // indirect
146141
golang.org/x/text v0.30.0 // indirect
147-
google.golang.org/genproto/googleapis/api v0.0.0-20251014184007-4626949a642f // indirect
148-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251014184007-4626949a642f // indirect
142+
google.golang.org/genproto/googleapis/api v0.0.0-20251020155222-88f65dc88635 // indirect
143+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251020155222-88f65dc88635 // indirect
149144
google.golang.org/grpc v1.76.0 // indirect
150145
gopkg.in/hraban/opus.v2 v2.0.0-20230925203106-0188a62cb302 // indirect
151146
gopkg.in/yaml.v3 v3.0.1 // indirect

go.sum

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,6 @@ github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK3
3636
github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
3737
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
3838
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
39-
github.com/chengxilo/virtualterm v1.0.4 h1:Z6IpERbRVlfB8WkOmtbHiDbBANU7cimRIof7mk9/PwM=
40-
github.com/chengxilo/virtualterm v1.0.4/go.mod h1:DyxxBZz/x1iqJjFxTFcr6/x+jSpqN0iwWCOK1q10rlY=
4139
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb h1:EDmT6Q9Zs+SbUoc7Ik9EfrFqcylYqgPZ9ANSbTAntnE=
4240
github.com/codahale/rfc6979 v0.0.0-20141003034818-6a90f24967eb/go.mod h1:ZjrT6AXHbDs86ZSdt/osfBi5qfexBrKUdONk989Wnk4=
4341
github.com/containerd/cgroups/v3 v3.0.5 h1:44na7Ud+VwyE7LIoJ8JTNQOa549a8543BmzaJHo6Bzo=
@@ -141,8 +139,8 @@ github.com/jxskiss/base62 v1.1.0 h1:A5zbF8v8WXx2xixnAKD2w+abC+sIzYJX+nxmhA6HWFw=
141139
github.com/jxskiss/base62 v1.1.0/go.mod h1:HhWAlUXvxKThfOlZbcuFzsqwtF5TcqS9ru3y5GfjWAc=
142140
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
143141
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
144-
github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
145-
github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
142+
github.com/klauspost/compress v1.18.1 h1:bcSGx7UbpBqMChDtsF28Lw6v/G94LPrrbMbdC3JH2co=
143+
github.com/klauspost/compress v1.18.1/go.mod h1:ZQFFVG+MdnR0P+l6wpXgIL4NTtwiKIdBnrBd8Nrxr+0=
146144
github.com/klauspost/cpuid/v2 v2.3.0 h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
147145
github.com/klauspost/cpuid/v2 v2.3.0/go.mod h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
148146
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -157,18 +155,14 @@ github.com/livekit/media-sdk v0.0.0-20250927154350-bd99739b439b h1:dPf9i0JPyf0Sg
157155
github.com/livekit/media-sdk v0.0.0-20250927154350-bd99739b439b/go.mod h1:7ssWiG+U4xnbvLih9WiZbhQP6zIKMjgXdUtIE1bm/E8=
158156
github.com/livekit/mediatransportutil v0.0.0-20250825135402-7bc31f107ade h1:lpxPcglwzUWNB4J0S2qZuyMehzmR7vW9whzSwV4IGoI=
159157
github.com/livekit/mediatransportutil v0.0.0-20250825135402-7bc31f107ade/go.mod h1:mSNtYzSf6iY9xM3UX42VEI+STHvMgHmrYzEHPcdhB8A=
160-
github.com/livekit/protocol v1.42.2-0.20251016024155-8cf58ff15ac6 h1:Tby1v0yn0XCXl9nBVnZI9M1cQW/0o4E/ejzRgcaMETI=
161-
github.com/livekit/protocol v1.42.2-0.20251016024155-8cf58ff15ac6/go.mod h1:vhMS30QoEyH2p34vi6X1eWkC4EMV72ZGZwQb74ajY7A=
158+
github.com/livekit/protocol v1.42.3-0.20251022070801-a1e0e55a5c55 h1:bWD8TWLbI+t+DIVUSyqKrxtTQHIkRQoY5Tkw5JpTwMQ=
159+
github.com/livekit/protocol v1.42.3-0.20251022070801-a1e0e55a5c55/go.mod h1:m8IMgMd9FUi3HnCBQMDExVumbmVfiJy9/xKOifDAQtY=
162160
github.com/livekit/psrpc v0.7.0 h1:rtfqfjYN06WJYloE/S0nmkJ/Y04x4pxLQLe8kQ4FVHU=
163161
github.com/livekit/psrpc v0.7.0/go.mod h1:AuDC5uOoEjQJEc69v4Li3t77Ocz0e0NdjQEuFfO+vfk=
164162
github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg=
165163
github.com/magefile/mage v1.15.0/go.mod h1:z5UZb/iS3GoOSn0JgWuiw7dxlurVYTu+/jHXqQg881A=
166-
github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
167-
github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
168164
github.com/maxbrunsfeld/counterfeiter/v6 v6.11.3 h1:Eaq36EIyJNp7b3qDhjV7jmDVq/yPeW2v4pTqzGbOGB4=
169165
github.com/maxbrunsfeld/counterfeiter/v6 v6.11.3/go.mod h1:6KKUoQBZBW6PDXJtNfqeEjPXMj/ITTk+cWK9t9uS5+E=
170-
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db h1:62I3jR2EmQ4l5rM/4FEfDWcRD+abF5XlKShorW5LRoQ=
171-
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db/go.mod h1:l0dey0ia/Uv7NcFFVbCLtqEBQbrT4OCwCSKTEv6enCw=
172166
github.com/moby/buildkit v0.25.1 h1:j7IlVkeNbEo+ZLoxdudYCHpmTsbwKvhgc/6UJ/mY/o8=
173167
github.com/moby/buildkit v0.25.1/go.mod h1:phM8sdqnvgK2y1dPDnbwI6veUCXHOZ6KFSl6E164tkc=
174168
github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
@@ -227,10 +221,10 @@ github.com/pion/mdns/v2 v2.0.7 h1:c9kM8ewCgjslaAmicYMFQIde2H9/lrZpjBkN8VwoVtM=
227221
github.com/pion/mdns/v2 v2.0.7/go.mod h1:vAdSYNAT0Jy3Ru0zl2YiW3Rm/fJCwIeM0nToenfOJKA=
228222
github.com/pion/randutil v0.1.0 h1:CFG1UdESneORglEsnimhUjf33Rwjubwj6xfiOXBa3mA=
229223
github.com/pion/randutil v0.1.0/go.mod h1:XcJrSMMbbMRhASFVOlj/5hQial/Y8oH/HVo7TBZq+j8=
230-
github.com/pion/rtcp v1.2.15 h1:LZQi2JbdipLOj4eBjK4wlVoQWfrZbh3Q6eHtWtJBZBo=
231-
github.com/pion/rtcp v1.2.15/go.mod h1:jlGuAjHMEXwMUHK78RgX0UmEJFV4zUKOFHR7OP+D3D0=
232-
github.com/pion/rtp v1.8.23 h1:kxX3bN4nM97DPrVBGq5I/Xcl332HnTHeP1Swx3/MCnU=
233-
github.com/pion/rtp v1.8.23/go.mod h1:rF5nS1GqbR7H/TCpKwylzeq6yDM+MM6k+On5EgeThEM=
224+
github.com/pion/rtcp v1.2.16 h1:fk1B1dNW4hsI78XUCljZJlC4kZOPk67mNRuQ0fcEkSo=
225+
github.com/pion/rtcp v1.2.16/go.mod h1:/as7VKfYbs5NIb4h6muQ35kQF/J0ZVNz2Z3xKoCBYOo=
226+
github.com/pion/rtp v1.8.24 h1:+ICyZXUQDv95EsHN70RrA4XKJf5MGWyC6QQc1u6/ynI=
227+
github.com/pion/rtp v1.8.24/go.mod h1:rF5nS1GqbR7H/TCpKwylzeq6yDM+MM6k+On5EgeThEM=
234228
github.com/pion/sctp v1.8.40 h1:bqbgWYOrUhsYItEnRObUYZuzvOMsVplS3oNgzedBlG8=
235229
github.com/pion/sctp v1.8.40/go.mod h1:SPBBUENXE6ThkEksN5ZavfAhFYll+h+66ZiG6IZQuzo=
236230
github.com/pion/sdp/v3 v3.0.16 h1:0dKzYO6gTAvuLaAKQkC02eCPjMIi4NuAr/ibAwrGDCo=
@@ -256,14 +250,10 @@ github.com/prometheus/procfs v0.16.1 h1:hZ15bTNuirocR6u0JZ6BAHHmwS1p8B4P6MRqxtzM
256250
github.com/prometheus/procfs v0.16.1/go.mod h1:teAbpZRB1iIAJYREa1LsoWUXykVXA1KlTmWl8x/U+Is=
257251
github.com/puzpuzpuz/xsync/v3 v3.5.1 h1:GJYJZwO6IdxN/IKbneznS6yPkVC+c3zyY/j19c++5Fg=
258252
github.com/puzpuzpuz/xsync/v3 v3.5.1/go.mod h1:VjzYrABPabuM4KyBh1Ftq6u8nhwY5tBPKP9jpmh0nnA=
259-
github.com/redis/go-redis/v9 v9.14.0 h1:u4tNCjXOyzfgeLN+vAZaW1xUooqWDqVEsZN0U01jfAE=
260-
github.com/redis/go-redis/v9 v9.14.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
261-
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
262-
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
253+
github.com/redis/go-redis/v9 v9.14.1 h1:nDCrEiJmfOWhD76xlaw+HXT0c9hfNWeXgl0vIRYSDvQ=
254+
github.com/redis/go-redis/v9 v9.14.1/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw=
263255
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
264256
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
265-
github.com/schollz/progressbar/v3 v3.18.0 h1:uXdoHABRFmNIjUfte/Ex7WtuyVslrw2wVPQmCN62HpA=
266-
github.com/schollz/progressbar/v3 v3.18.0/go.mod h1:IsO3lpbaGuzh8zIMzgY3+J8l4C8GjO0Y9S69eFvNsec=
267257
github.com/sclevine/spec v1.4.0 h1:z/Q9idDcay5m5irkZ28M7PtQM4aOISzOpj4bUPkDee8=
268258
github.com/sclevine/spec v1.4.0/go.mod h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM=
269259
github.com/secure-systems-lab/go-securesystemslib v0.6.0 h1:T65atpAVCJQK14UA57LMdZGpHi4QYSH/9FZyNGqMYIA=
@@ -356,8 +346,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
356346
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
357347
golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04=
358348
golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0=
359-
golang.org/x/exp v0.0.0-20251009144603-d2f985daa21b h1:18qgiDvlvH7kk8Ioa8Ov+K6xCi0GMvmGfGW0sgd/SYA=
360-
golang.org/x/exp v0.0.0-20251009144603-d2f985daa21b/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
349+
golang.org/x/exp v0.0.0-20251017212417-90e834f514db h1:by6IehL4BH5k3e3SJmcoNbOobMey2SLpAF79iPOEBvw=
350+
golang.org/x/exp v0.0.0-20251017212417-90e834f514db/go.mod h1:j/pmGrbnkbPtQfxEe5D0VQhZC6qKbfKifgD0oM7sR70=
361351
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
362352
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
363353
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
@@ -426,10 +416,10 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T
426416
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
427417
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
428418
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
429-
google.golang.org/genproto/googleapis/api v0.0.0-20251014184007-4626949a642f h1:OiFuztEyBivVKDvguQJYWq1yDcfAHIID/FVrPR4oiI0=
430-
google.golang.org/genproto/googleapis/api v0.0.0-20251014184007-4626949a642f/go.mod h1:kprOiu9Tr0JYyD6DORrc4Hfyk3RFXqkQ3ctHEum3ZbM=
431-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251014184007-4626949a642f h1:1FTH6cpXFsENbPR5Bu8NQddPSaUUE6NA2XdZdDSAJK4=
432-
google.golang.org/genproto/googleapis/rpc v0.0.0-20251014184007-4626949a642f/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
419+
google.golang.org/genproto/googleapis/api v0.0.0-20251020155222-88f65dc88635 h1:1wvBeYv+A2zfEbxROscJl69OP0m74S8wGEO+Syat26o=
420+
google.golang.org/genproto/googleapis/api v0.0.0-20251020155222-88f65dc88635/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo=
421+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251020155222-88f65dc88635 h1:3uycTxukehWrxH4HtPRtn1PDABTU331ViDjyqrUbaog=
422+
google.golang.org/genproto/googleapis/rpc v0.0.0-20251020155222-88f65dc88635/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk=
433423
google.golang.org/grpc v1.76.0 h1:UnVkv1+uMLYXoIz6o7chp59WfQUYA2ex/BXQ9rHZu7A=
434424
google.golang.org/grpc v1.76.0/go.mod h1:Ju12QI8M6iQJtbcsV+awF5a4hfJMLi4X0JLo94ULZ6c=
435425
google.golang.org/protobuf v1.36.10 h1:AYd7cD/uASjIL6Q9LiTjz8JLcrh/88q5UObnmY3aOOE=

pkg/synchronizer/track.go

Lines changed: 11 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import (
2929
"github.com/livekit/media-sdk/jitter"
3030
"github.com/livekit/mediatransportutil"
3131
"github.com/livekit/protocol/logger"
32+
"github.com/livekit/protocol/utils"
3233
"github.com/livekit/protocol/utils/mono"
3334
)
3435

@@ -58,7 +59,7 @@ type TrackSynchronizer struct {
5859
sync *Synchronizer
5960
track TrackRemote
6061
logger logger.Logger
61-
*rtpConverter
62+
*utils.RTPConverter
6263
startGate startGate
6364

6465
// config
@@ -116,7 +117,7 @@ func newTrackSynchronizer(s *Synchronizer, track TrackRemote) *TrackSynchronizer
116117
sync: s,
117118
track: track,
118119
logger: logger.GetLogger().WithValues("trackID", track.ID(), "codec", track.Codec().MimeType),
119-
rtpConverter: newRTPConverter(int64(track.Codec().ClockRate)),
120+
RTPConverter: utils.NewRTPConverter(int64(track.Codec().ClockRate)),
120121
maxTsDiff: s.config.MaxTsDiff,
121122
maxDriftAdjustment: s.config.MaxDriftAdjustment,
122123
driftAdjustmentWindowPercent: s.config.DriftAdjustmentWindowPercent,
@@ -304,7 +305,7 @@ func (t *TrackSynchronizer) getPTSWithoutRebase(pkt jitter.ExtPacket) (time.Dura
304305
// start with estimated PTS to absorb any start latency
305306
pts = max(time.Nanosecond, estimatedPTS) // prevent lastPTS from being stuck at 0
306307
} else {
307-
pts = t.lastPTS + t.toDuration(ts-t.lastTS)
308+
pts = t.lastPTS + t.ToDuration(ts-t.lastTS)
308309
}
309310

310311
if pts < t.lastPTS || !t.acceptable(pts-estimatedPTS) {
@@ -435,7 +436,7 @@ func (t *TrackSynchronizer) getPTSWithRebase(pkt jitter.ExtPacket) (time.Duratio
435436
// start with estimated PTS to absorb any start latency
436437
pts = max(time.Nanosecond, estimatedPTS) // prevent lastPTS from being stuck at 0
437438
} else {
438-
pts = t.lastPTS + t.toDuration(ts-t.lastTS)
439+
pts = t.lastPTS + t.ToDuration(ts-t.lastTS)
439440
}
440441

441442
if pts < t.lastPTS || !t.acceptable(pts-estimatedPTS) {
@@ -543,9 +544,9 @@ func (t *TrackSynchronizer) onSenderReportWithoutRebase(pkt *rtcp.SenderReport)
543544

544545
var pts time.Duration
545546
if pkt.RTPTime > t.lastTS {
546-
pts = t.lastPTS + t.toDuration(pkt.RTPTime-t.lastTS)
547+
pts = t.lastPTS + t.ToDuration(pkt.RTPTime-t.lastTS)
547548
} else {
548-
pts = t.lastPTS - t.toDuration(t.lastTS-pkt.RTPTime)
549+
pts = t.lastPTS - t.ToDuration(t.lastTS-pkt.RTPTime)
549550
}
550551
if !t.acceptable(pts - time.Since(t.startTime)) {
551552
t.logger.Infow(
@@ -615,9 +616,9 @@ func (t *TrackSynchronizer) onSenderReportWithRebase(pkt *rtcp.SenderReport) {
615616

616617
var ptsSR time.Duration
617618
if (pkt.RTPTime - t.lastTS) < (1 << 31) {
618-
ptsSR = t.lastPTS + t.toDuration(pkt.RTPTime-t.lastTS)
619+
ptsSR = t.lastPTS + t.ToDuration(pkt.RTPTime-t.lastTS)
619620
} else {
620-
ptsSR = t.lastPTS - t.toDuration(t.lastTS-pkt.RTPTime)
621+
ptsSR = t.lastPTS - t.ToDuration(t.lastTS-pkt.RTPTime)
621622
}
622623
if !t.acceptable(ptsSR - time.Since(t.startTime)) {
623624
t.logger.Infow(
@@ -701,7 +702,7 @@ func (t *TrackSynchronizer) maybeAdjustStartTime(asr *augmentedSenderReport) int
701702
// in some network element along the way), push back first time
702703
// to an earlier instance.
703704
timeSinceReceive := time.Duration(nowNano - asr.receivedAtAdjusted)
704-
nowTS := asr.RTPTime + t.toRTP(timeSinceReceive)
705+
nowTS := asr.RTPTime + t.ToRTP(timeSinceReceive)
705706
samplesDiff := nowTS - t.startRTP
706707
if int32(samplesDiff) < 0 {
707708
// out-of-order, pre-start, skip
@@ -716,7 +717,7 @@ func (t *TrackSynchronizer) maybeAdjustStartTime(asr *augmentedSenderReport) int
716717
return 0
717718
}
718719

719-
samplesDuration := t.toDuration(samplesDiff)
720+
samplesDuration := t.ToDuration(samplesDiff)
720721
timeSinceStart := time.Duration(nowNano - startTimeNano)
721722
now := startTimeNano + timeSinceStart.Nanoseconds()
722723
adjustedStartTimeNano := now - samplesDuration.Nanoseconds()
@@ -931,33 +932,6 @@ func (t *TrackSynchronizer) MarshalLogObject(e zapcore.ObjectEncoder) error {
931932

932933
// ---------------------------
933934

934-
type rtpConverter struct {
935-
ts uint64
936-
rtp uint64
937-
}
938-
939-
func newRTPConverter(clockRate int64) *rtpConverter {
940-
ts := time.Second.Nanoseconds()
941-
for _, i := range []int64{10, 3, 2} {
942-
for ts%i == 0 && clockRate%i == 0 {
943-
ts /= i
944-
clockRate /= i
945-
}
946-
}
947-
948-
return &rtpConverter{ts: uint64(ts), rtp: uint64(clockRate)}
949-
}
950-
951-
func (c *rtpConverter) toDuration(rtpDuration uint32) time.Duration {
952-
return time.Duration(uint64(rtpDuration) * c.ts / c.rtp)
953-
}
954-
955-
func (c *rtpConverter) toRTP(duration time.Duration) uint32 {
956-
return uint32(duration.Nanoseconds() * int64(c.rtp) / int64(c.ts))
957-
}
958-
959-
// -----------------------------
960-
961935
type augmentedSenderReport struct {
962936
*rtcp.SenderReport
963937
receivedAt int64

0 commit comments

Comments
 (0)