forked from livekit/livekit
-
Notifications
You must be signed in to change notification settings - Fork 0
/
CHANGELOG
366 lines (316 loc) · 16.1 KB
/
CHANGELOG
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
# Changelog
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.4.1] - 2023-04-05
### Added
- Added prometheus metrics for internal signaling API #1571
### Fixed
- Fix regressions in RTC when using redis with psrpc signaling #1584 #1582 #1580 #1567
- Fix required bitrate assessment under channel congestion #1577
### Changed
- Improve DTLS reliability in regions with internet filters #1568
- Reduce memory usage from logging #1576
## [1.4.0] - 2023-03-27
### Added
- Added config to disable active RED encoding. Use NACK instead #1476 #1477
- Added option to skip TCP fallback if TCP RTT is high #1484
- psrpc based signaling between signal and RTC #1485
- Connection quality algorithm revamp #1490 #1491 #1493 #1496 #1497 #1500 #1505 #1507 #1509 #1516 #1520 #1521 #1527 #1528 #1536
- Support for topics in data channel messages #1489
- Added active filter to ListEgress #1517
- Handling for React Native and Rust SDK ClientInfo #1544
### Fixed
- Fixed unsubscribed speakers stuck as speaking to clients #1475
- Do not include packet in RED if timestamp is too far back #1478
- Prevent PLI layer lock getting stuck #1481
- Fix a case of changing video quality not succeeding #1483
- Resync on pub muted for audio to avoid jump in sequence numbers on unmute #1487
- Fixed a case of data race #1492
- Inform reconnecting participant about recently disconnected users #1495
- Send room update that may be missed by reconnected participant #1499
- Fixed regression for AV1 forwarding #1538
- Ensure sequence number continuity #1539
- Give proper grace period when recorder is still in the room #1547
- Fix sequence number offset on packet drop #1556
- Fix signal client message buffer size #1561
### Changed
- Reduce lock scope getting RTCP sender reports #1473
- Avoid duplicate queueReconcile in subscription manager #1474
- Do not log TURN errors with prefix "error when handling datagram" #1494
- Improvements to TCP fallback mode #1498
- Unify forwarder between dependency descriptor and no DD case. #1543
- Increase sequence number cache to handle high rate tracks #1560
## [1.3.5] - 2023-02-25
### Added
- Allow for strict ACKs to be disabled or subscriber peer connections #1410
### Fixed
- Don't error when get tc stats fails #1306
- Fixed support for Redis cluster #1415
- Fixed unpublished callback being skipped in certain cases #1418
- Fixed panic when Egress request is sent with an empty output field #1420
- Do not unsubscribe from track if it's been republished #1424 #1429 #1454 #1465
- Fixed panic when closing room #1428
- Use available layers in optimal allocation #1445 #1446 #1448 #1449
- Fixed unable to notify webhook when egress ending with status EgressStatus_EGRESS_LIMIT_REACHED #1451
- Reset subscription start timer on permission grant #1457
- Avoid panic when server receives a token without a video grant #1463
### Changed
- Updated various logging #1413 #1433 #1437 #1440 #1470
- Do not force TCP when client left before DTLS handshake #1414
- Improved performance of data packet forwarding by broadcasting in parallel #1425
- Cleaning up `availableLayers` and `exemptedLayers` #1407
- Send stream start on initial start #1456
- Switch to TLS if ICE/TCP isn't working well #1458
### Removed
- Removed signal de-duper as it has not proven to be reliable #1427
- Remove deprecated ingress rpc #1439 (breaking change for Ingress, this will require Ingress v0.0.2+)
## [1.3.4] - 2023-02-09
### Added
- Memory used and total to node stats #1293 #1296
- Reconnect response to update ICE servers after resume #1300 #1367
- Additional prometheus stats #1291
- Adopt psrpc for internal communication protocol #1295
- Enable track-level audio nack config #1306
- Telemetry events for ParticipantResumed, track requested actions #1308
- Allow disabling mDNS, which degrades performance on certain networks #1311 #1393
- Publish stream stats to prometheus #1313 #1347
- Retry initial connection attempt if it fails #1335 #1409
- Add reconnect reason and signal rtt calculation #1381
- silent frame for muted audio downtrack #1389
### Fixed
- Fixed TimedVersion handling of non-monotonic timestamps #1304
- Persist participant before firing webhook #1340
- Set IsPublisher to true for data-only publishers #1348
- Ignore inactive media in SDP #1365
- Ensure older participant session update does not go out after a newer #1372
- Fix potentially nil access in buffer #1374
- Ensure onPacket is not nil in RTCPReader callback #1390
- Fix rare panic by CreateSenderReport before bind completed #1397
### Changed
- A/V synchronization improvements #1297 #1315 #1318 #1321 #1351
- IOInfo service to handle ingress/egress updates #1305
- Subscription manager to improve subscription resilience #1317 #1358 #1369 #1379 #1382
- Enable video at low res by default when adaptive stream is enabled #1341
- Enable upstream nack for opus only audio track #1343
- Allow /rtc/validate to return room not found message #1344
- Improve connectivity check to detect DTLS failure #1366
- Simplify forwarding logic #1349 #1376 #1398
- Send stream state paused only when it is paused due to bandwidth limitation. #1391
- Do not catch panics, exit instead to prevent lockup #1392
## [1.3.3] - 2023-01-06
### Added
- Signal deduper: ignore duplicate signal messages #1243 #1247 #1257
- FPS based stream tracker #1267 #1269 #1275 #1281
- Support forwarding track encryption status #1265
- Use publisher side sender report when forwarding - improves A/V sync #1286
### Fixed
- When removing a participant, verify SID matches #1237
- Fixed rare panic when GetSelectedICECandidatePair returns nil #1253
- Prevent ParticipantUpdate to be sent before JoinResponse #1271 #1272
- Fixed Firefox connectivity issues when using UDPMux #1270 #1277
- Fixed subscribing muted track with Egress and Go SDK #1283
### Changed
- ParticipantLeft webhook would not be sent unless connected successfully #1130
- Updated to Go 1.18+ #1259
- Updated Egress RPC framework - psrpc #1252 #1256 #1266 #1273
- Track subscription operations per source track #1248
- Egress participants do not count in max_participants #1279
## [1.3.2] - 2022-12-15
### Added
- help-verbose subcommand to print out all flags #1171 #1180
- Support for Redis cluster #1181
- Allow loopback candidates to be used via config option #1185
- Support for high bitrate audio #1188
- Ability to detect publication errors and force reconnect #1214
- API secrets are validated upon startup to ensure sufficient security #1217
### Fixed
- Correctly suppress verbose pion logs #1163
- Fixed memory leak on long running room/participants #1169
- Force full reconnect when there is no previous answer #1168
- Fixed potential SSRC collision between participants #1173
- Prevent RTX buffer and forwarding path colliding #1174
- Do not set forceRelay when unset #1184
- Prevent subscription after participant close #1182
- Fixed lost RTCP packets when incorrect buffer factory was used #1195
- Fixed handling of high bitrate while adding Opus RED #1196
- Fixes a rare timing issue leading to connection failure #1208
- Fixed incorrect handling of | in participant identity #1220 #1223
- Fixed regression causing Firefox to not connect over TURN #1226
### Changed
- CreateRoom API to allocate the room on RTC node #1155 #1157
- Check forwarder started when seeding #1191
- Do not forward media until peer connection is connected #1194
- Log sampler to reduce log spam #1222
## [1.3.1] - 2022-11-09
### Fixed
- Fixed logging config causes server to fail to start #1154
## [1.3.0] - 2022-11-08
### Added
- Ingress Service support #1125
- Support for web egress #1126
- Ability to set all configuration params via command line flags #1112
- Server-side RED encoding for supported clients #1137
- Opus RED active loss recovery #1139
- Experimental: fallback to TCP when UDP is unstable #1119
- Populate memory load in node stats #1121
### Fixed
- Fixed dynacast pausing a layer due to clients (FF) not publishing layer 0 #1117
- Room.activeRecording updated correctly after users rejoin #1132
- Don't collect external candidate IP when it's filtered out #1135
- Install script to use uname without assuming /usr/bin #1138
### Changed
- Allocate packetMeta up front to reduce number of allocations #1108
- Do not log duplicate packet error. #1116
- Consolidate getMemoryStats #1122
- Seed snapshots to avoid saving/restoring in downtrack #1128
- Remove Dependency Descriptor extension when AV1 is not preferred #1129
- Always send participant updates prior to negotiation #1147
- Set track level codec settings for all pending tracks #1148
- Use Redis universal client to support clustered redis #1149
## [1.2.5] - 2022-10-19
### Added
- Ability to filter IP addresses from being used #1052
- Allow TCP fallback on multiple connection failures #1077
- Added support for track level stereo and RED setting #1086
### Fixed
- Fixed stream allocator with SVC codecs #1053
- Fixed UDPMux connectivity issues when machine has multiple interfaces #1081
- Ensure sender reports are in sync after transceiver is re-used #1080
- Fixed simulcast codec blocking track closure #1082
- Prevents multiple transport fallback in the same session #1090
### Changed
- Config validation has been enabled. Server will not start if there are invalid config values #1051
- Improves NACK stats to count as a miss only if i t's not EOF #1061
- Store track MIME type during publishing #1065
- Minor cleanup of media track & friends module #1067
- Split out shared media transport code into livekit/mediatransportutil #1071
- Cleaned up logging, improved consistency of debug vs info #1073
- Reduced memory usage with sequencer #1100
- Improved IP address mapping, handling of multiple IPs #1094
- Service API requests are logged #1091
- Default HTTP handler responds with 404 for unknown paths #1088
## [1.2.3] - 2022-09-13
### Added
- Supervisor framework to improve edge case & error handling #1005 #1006 #1010 #1017
- Support for stereo Opus tracks #1013
- Allow CORS responses to be cached to allow faster initial connection #1027
### Fixed
- Fixed SSRC mix-up for simulcasted tracks during session resume #1014
- Fixed screen corruption for non-simulcasted tracks, caused by probing packets #1020
- Fixed Handling of Simple NALU keyframes for H.264 #1016
- Fixed TCPMux & UDPMux mixup when multiple host candidates are offered #1036
### Changed
- Webhook requests are now using Content-Type application/webhook+json to avoid eager JSON parsing #1025
- Don't automatically add STUN servers when explicit Node IP has been set #1023
- Automatic TCP and TURN/TLS fallback is now enabled by default #1033
### Removed
- Fully removed references to VP9. LiveKit is focused on AV1. #1004
## [1.2.1] - 2022-09-13
### Added
- Accepts existing participant ID on reconnection attempts #988
### Fixed
- Fixed ICE restart during candidate gathering #963
- Ensure TrackInfoAvailable is fired after information is known to be ready #967
- Fixed layer handling when publisher pauses layer 0 (FireFox is has a tendency to pause lowest layer) #984
- Fixed inaccurate participant count due to storing stale data #992
### Changed
- Protect against looking up dimensions for invalid spatial layer #977
- Improvements around migration handling #979 #981 #982 #995
- Consistent mapping between VideoQuality, rid, and video layers #986
- Only enable TCP/TURN fallback for supported clients #997
## [1.2.0] - 2022-08-25
### Added
- Support for NACK with audio tracks (#829)
- Allow binding HTTP server to specific address, binds to localhost in dev mode(#831)
- Packet stats from TC (#832)
- Automatic connectivity fallback to TCP & TURN (#872 #873 #874 #901 #950)
- Support for client-side ping/pong messages (#871)
- Support for setCodecPreferences for clients that don't implement it (#916)
- Opus/RED support: redundant audio transmission is enabled by default (#938 #940)
### Fixed
- Fixed timing issue in DownTrack.Bind/Close (#833)
- Fixed TCPMux potentially blocking operations (#840)
- Fixed ICE restart while still in ICE gathering (#895)
- Fixed Websocket connection hanging if node isn't available to accept connection (#923)
- Fixed ICE restart/resume in single node mode (#930)
- Fixed client disconnected in certain conditions after ICE restart (#932)
### Changed
- Move to synchronously handle subscriber dynacast status (#834)
- Retransmit DD extension in case packets were missed (#837)
- Clean up stats workers (#836)
- Use TimedVersion for subscription permission updates (#839)
- Cleaned up logging (#843 #865 #910 #921)
- track_published event now includes the participant's ID and identity (#846)
- Improve synchronization of track publishing/unpublish path (#857)
- Don't re-use transceiver when pending negotiation (#862)
- Dynacast and media loss proxy refactor (#894 #902)
- PCTransport refactor (#907 #944)
- Improve accuracy of connection quality score (#912 #913)
- Docker image now builds with Go v1.19
## [1.1.2] - 2022-07-11
### Added
- Returns reason when server disconnects a client (#801 #806)
- Allow livekit-server to start without keys configuration (#788)
- Added recovery from negotiation failures (#807)
### Fixed
- Fixed synchronization issues with Dynacast (#779 #802)
- Fixed panic due to timing in Pion's ICE agent (#780)
- ICELite is disabled by default, improving connectivity behind NAT (#784)
- Fixed EgressService UpdateLayout (#782)
- Fixed synchronization bugs with selective subscriptions & permissions (#796 #797 #805 #813 #814 #816)
- Correctly recover from ICE Restart during an negotiation attempt (#798)
### Changed
- Improved Transceiver re-use to avoid renegotiation (#785)
- Close room if recorder is the only participant left (#787)
- Improved connection quality score stability & computation (#793 #795)
- Set layer state to stopped when paused (#818)
### Removed
- Removed deprecated RecordingService - Egress should be used instead (#811)
## [1.1.0] - 2022-06-21
### Added
- Add support for Redis Sentinel (#707)
- Track participant join total + rate in node stats (#741)
- Protocol 8 - fast connection support (#747)
- Simulate switch candidate for network connectivity with poor UDP performance (#754)
- Allow server to disable codec for certain devices (#755)
- Support for on-demand multi-codec publishing (#762)
### Fixed
- Fixed unclean DownTrack close when removed before bound. (#736)
- Do not munge VP8 header in place - fixes video corruption (#763)
### Changed
- Reintroduce audio-level quantization to dampen small changes (#732)
- Allow overshooting maximum when there are no bandwidth constraints. (#739)
- Improvements to upcoming multi-codec simulcast (#740)
- Send layer dimensions when max subscribed layers change (#746)
- Use stable TrackID after unpublishing & republishing (#751)
- Update egress RPC handler (#759)
- Improved connection quality metrics (#766 #767 #770 #771 #773 #774 #775)
## [1.0.2] - 2022-05-27
### Changed
- Fixed edge cases where streams were not allocated (#701)
- Fixed panic caused by concurrent modifications to stats worker map (#702 #704)
- Batched subscriber updates to reduce noise in large rooms (#703 #729)
- Fixed potential data race conditions (#706 #709 #711 #713 #715 #716 #717 #724 #727
- /debug/pprof endpoint when running in development mode (#708)
- When audio tracks are muted, send blank frames to induce silence (#710)
- Fixed stream allocator not upgrading streams after downgrading (#719)
- Fixed repeated AddSubscriber potentially ignored (#723)
- Fixed ListEgress API sometimes returning not found (#722)
## [1.0.1] - 2022-05-19
### Changed
- Update Egress details when changed, fixed Egress APIs (#694)
## [1.0.0] - 2022-05-17
### Added
- Improved stats around NACKs (#664)
- Internal structures in preparation for AV1 SVC support (#669)
### Changed
- Supports participant identity in permissions API (#633)
- Fixed concurrent access of stats worker map (#666 #670)
- Do not count padding packets in stream tracker (#667)
- Fixed TWCC panic under heavy packet loss (#668)
- Change state to JOINED before sending JoinResponse (#674)
- Improved frequency of stats update (#673)
- Send active speaker update during initial subscription (#676)
- Updated DTLS library to incorporate security fixes (#678)
- Improved list-nodes command (#681)
- Improved screen-share handling in StreamTracker (#683)
- Inject slience opus packets when muted (#682)