mediasoup 3.21.0 → 3.21.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/CHANGELOG.md +1882 -0
  2. package/node/lib/test/test-Consumer.js +111 -0
  3. package/node/lib/test/test-Producer.js +54 -0
  4. package/npm-scripts.mjs +0 -5
  5. package/package.json +9 -8
  6. package/worker/fuzzer/src/RTC/SCTP/association/FuzzerStateCookie.cpp +4 -6
  7. package/worker/include/RTC/NEW_RTCP/packet/ByePacket.hpp +165 -0
  8. package/worker/include/RTC/NEW_RTCP/packet/CompoundPacket.hpp +183 -0
  9. package/worker/include/RTC/NEW_RTCP/packet/Packet.hpp +354 -0
  10. package/worker/include/RTC/NEW_RTCP/packet/TODO_NEW_RTCP.md +17 -0
  11. package/worker/include/RTC/RTP/Codecs/Tools.hpp +2 -0
  12. package/worker/include/RTC/Router.hpp +4 -4
  13. package/worker/include/RTC/SCTP/association/Capabilities.hpp +73 -0
  14. package/worker/include/RTC/SCTP/association/NegotiatedCapabilities.hpp +7 -9
  15. package/worker/include/RTC/SCTP/association/StateCookie.hpp +38 -28
  16. package/worker/include/RTC/SCTP/packet/Chunk.hpp +11 -7
  17. package/worker/include/RTC/SCTP/packet/ErrorCause.hpp +11 -4
  18. package/worker/include/RTC/SCTP/packet/Packet.hpp +1 -1
  19. package/worker/include/RTC/SCTP/packet/Parameter.hpp +11 -4
  20. package/worker/include/RTC/SCTP/packet/TLV.hpp +2 -2
  21. package/worker/include/RTC/SCTP/packet/parameters/StateCookieParameter.hpp +2 -2
  22. package/worker/include/RTC/Transport.hpp +10 -10
  23. package/worker/include/Worker.hpp +4 -4
  24. package/worker/meson.build +7 -0
  25. package/worker/scripts/clang-scripts.mjs +54 -0
  26. package/worker/src/RTC/Consumer.cpp +22 -4
  27. package/worker/src/RTC/NEW_RTCP/packet/ByePacket.cpp +266 -0
  28. package/worker/src/RTC/NEW_RTCP/packet/CompoundPacket.cpp +219 -0
  29. package/worker/src/RTC/NEW_RTCP/packet/Packet.cpp +222 -0
  30. package/worker/src/RTC/RTP/Codecs/H264.cpp +3 -0
  31. package/worker/src/RTC/RTP/Codecs/VP8.cpp +3 -0
  32. package/worker/src/RTC/Router.cpp +14 -14
  33. package/worker/src/RTC/SCTP/association/Association.cpp +23 -11
  34. package/worker/src/RTC/SCTP/association/Capabilities.cpp +87 -0
  35. package/worker/src/RTC/SCTP/association/NegotiatedCapabilities.cpp +20 -40
  36. package/worker/src/RTC/SCTP/association/StateCookie.cpp +54 -32
  37. package/worker/src/RTC/SCTP/packet/Chunk.cpp +18 -18
  38. package/worker/src/RTC/SCTP/packet/ErrorCause.cpp +18 -18
  39. package/worker/src/RTC/SCTP/packet/Packet.cpp +2 -0
  40. package/worker/src/RTC/SCTP/packet/Parameter.cpp +18 -18
  41. package/worker/src/RTC/SCTP/packet/TLV.cpp +27 -25
  42. package/worker/src/RTC/SCTP/packet/parameters/StateCookieParameter.cpp +2 -2
  43. package/worker/src/RTC/SvcProducerStreamManager.cpp +4 -1
  44. package/worker/src/RTC/Transport.cpp +42 -30
  45. package/worker/src/Worker.cpp +10 -10
  46. package/worker/test/include/RTC/ICE/iceCommon.hpp +1 -1
  47. package/worker/test/include/RTC/RTCP/rtcpCommon.hpp +58 -0
  48. package/worker/test/include/RTC/RTP/rtpCommon.hpp +1 -1
  49. package/worker/test/src/RTC/NEW_RTCP/packet/TestByePacket.cpp +302 -0
  50. package/worker/test/src/RTC/NEW_RTCP/rtcpCommon.cpp +29 -0
  51. package/worker/test/src/RTC/RTP/TestPacket.cpp +17 -15
  52. package/worker/test/src/RTC/SCTP/association/TestAssociation.cpp +3 -3
  53. package/worker/test/src/RTC/SCTP/association/TestCapabilities.cpp +99 -0
  54. package/worker/test/src/RTC/SCTP/association/TestNegotiatedCapabilities.cpp +14 -16
  55. package/worker/test/src/RTC/SCTP/association/TestStateCookie.cpp +198 -102
  56. package/worker/test/src/RTC/SCTP/packet/parameters/TestStateCookieParameter.cpp +11 -10
package/CHANGELOG.md ADDED
@@ -0,0 +1,1882 @@
1
+ # Changelog
2
+
3
+ ### NEXT
4
+
5
+ ### 3.21.2
6
+
7
+ - Worker: Fix crash when an SCTP `DataConsumer` is closed and triggers buffered amount low event ([PR #1858](https://github.com/versatica/mediasoup/pull/1858)).
8
+
9
+ ### 3.21.1
10
+
11
+ - Worker: Enable SVC for VP8 and H264 ([PR #1851](https://github.com/versatica/mediasoup/pull/1851)).
12
+ - SCTP: Limit the state of State Cookie tampering ([PR #1856](https://github.com/versatica/mediasoup/pull/1856)).
13
+
14
+ ### 3.21.0
15
+
16
+ - Worker: Fix new consumer regressions ([PR #1849](https://github.com/versatica/mediasoup/pull/1849)).
17
+ - Add `NotFoundError`, thrown when the referenced entity in the Worker doesn't exist ([PR #1852](https://github.com/versatica/mediasoup/pull/1852)).
18
+ - Expose mediasoup Node `errors` via `mediasoup/errors` (in EMS).
19
+ - **Breaking change:** Rename `InvalidStateError` to `WorkerClosedError`.
20
+
21
+ ### 3.20.10
22
+
23
+ - Worker: Handle new STUN "NOMINATION" attribute `0x0030` ([PR #1846](https://github.com/versatica/mediasoup/pull/1846)).
24
+
25
+ ### 3.20.9
26
+
27
+ - Worker: Replace `uint64_t` hash with `TupleKey` in `TransportTuple` to avoid hash collisions ([PR #1823](https://github.com/versatica/mediasoup/pull/1823)).
28
+ - Worker: Fix `SeqManager::GetMaxOutput()` ([PR #1840](https://github.com/versatica/mediasoup/pull/1840)).
29
+
30
+ ### 3.20.8
31
+
32
+ - Worker `Consumer`: Fix crash when using simple producer stream mode ([PR #1835](https://github.com/versatica/mediasoup/pull/1835)). The bug was introduced in version 3.20.6.
33
+
34
+ ### 3.20.7
35
+
36
+ - CI: Add `ubuntu-26.04` hosts ([PR #1830](https://github.com/versatica/mediasoup/pull/1830)).
37
+ - Worker: Remove `io_uring` support ([PR #1832](https://github.com/versatica/mediasoup/pull/1832)).
38
+
39
+ ### 3.20.6
40
+
41
+ - Worker: Unify all `Consumer` classes into a single one ([PR #1731](https://github.com/versatica/mediasoup/pull/1731)).
42
+ - SCTP: Validate CRC32c checksum in received packets ([PR #1828](https://github.com/versatica/mediasoup/pull/1828)).
43
+ - SCTP: Authenticate State Cookie in plain and pipe transports ([PR #1829](https://github.com/versatica/mediasoup/pull/1829)).
44
+
45
+ ### 3.20.5
46
+
47
+ - Worker: `SeqManager`, use `std::vector` rather than `std::set` ([PR #1807](https://github.com/versatica/mediasoup/pull/1807)).
48
+ - SCTP: Fixes in `Association.cpp`, `StreamResetHandler.cpp` and `DataTracker.cpp` ([PR #1826](https://github.com/versatica/mediasoup/pull/1826)).
49
+
50
+ ### 3.20.4
51
+
52
+ - SCTP: Fix `HeartbeatHandler` timers and close the association with `TOO_MANY_RETRIES` error when t3-rtx timer, heartbeat-timeout timer and RE-CONFIG timer expire ([PR #1824](https://github.com/versatica/mediasoup/pull/1824)).
53
+ - SCTP: Fix `ReassemblyQueue::EnterDeferredReset()` ([PR #1825](https://github.com/versatica/mediasoup/pull/1825)).
54
+
55
+ ### 3.20.3
56
+
57
+ - Fix SCTP crash when the t3-rtx timer expires ([PR #1822](https://github.com/versatica/mediasoup/pull/1822)).
58
+
59
+ ### 3.20.2
60
+
61
+ - `PortManager`: Replace `uint64_t` hash token with exact-tuple `PortRangeKey` ([PR #1812](https://github.com/versatica/mediasoup/pull/1812), by @999purple999 and @penguinol).
62
+ - Make `DataConsumer.send()` return current buffered amount ([PR #1819](https://github.com/versatica/mediasoup/pull/1819)).
63
+
64
+ ### 3.20.1
65
+
66
+ - Node: Make all public methods/getters that return an object/array, return a clone of that object/array ([PR #1811](https://github.com/versatica/mediasoup/pull/1811)).
67
+ - Worker: replace `absl-cpp` subproject with `ankerl/unordered_dense` ([PR #1813](https://github.com/versatica/mediasoup/pull/1813)).
68
+ - Worker: Fix `SvcConsumer` ignoring the `temporalLayer` of `preferredLayers` given at consume time ([PR #1814](https://github.com/versatica/mediasoup/pull/1814), credits to @mstyura).
69
+
70
+ ### 3.20.0
71
+
72
+ - Node: Update TypeScript to v6 ([PR #1790](https://github.com/versatica/mediasoup/pull/1790)).
73
+ - New built-in SCTP stack ([PR #1806](https://github.com/versatica/mediasoup/pull/1806)):
74
+ - **Breaking change:** Remove `useBuiltInSctpStack` option in `WorkerSettngs`.
75
+ - **Breaking change:** Remove `SctpCapabilities` type. No longer needed.
76
+ - `WebRtcTransport`, `PlainTransport`, `PipeTransport`: Add `sctpNegotiatedCapabilities()` getter.
77
+ - **Breaking change:** `WebRtcTransport`, `PlainTransport`, `PipeTransport` options: Remove `numSctpStreams` and `maxSctpMessageSize`, and add `maxSendMessageSize`, `maxReceiveMessageSize`, `sctpPerStreamSendQueueLimit` and `sctpMaxReceiverWindowBufferSize`.
78
+ - **Breaking change:** `DirectTransport` options: Remove `maxMessageSize`, and add `maxSendMessageSize` and `maxReceiveMessageSize`.
79
+ - **Breaking change:** Change `SctpParameters` type from `{ port, OS, MIS, maxMessageSize }` to `{ port, maxSendMessageSize, maxReceiveMessageSize, sendBufferSize, perStreamSendQueueLimit, maxReceiverWindowBufferSize, isDataChannel}`.
80
+
81
+ ### 3.19.22
82
+
83
+ - Node: Avoid "worker died" event when the Node application is closed via signal without calling `worker.close()` ([PR #1788](https://github.com/versatica/mediasoup/pull/1788)).
84
+
85
+ ### 3.19.21
86
+
87
+ - Worker: Fix regression in `DirectTransport` when closing a `DataProducer` or `DataConsumer` ([PR #1780](https://github.com/versatica/mediasoup/pull/1780)).
88
+
89
+ ### 3.19.20
90
+
91
+ - Worker: Add `useBuiltInSctpStack` setting (defaults to `false`) to enable mediasoup built-in SCTP stack ([PR #1777](https://github.com/versatica/mediasoup/pull/1777)).
92
+
93
+ ### 3.19.19
94
+
95
+ - Worker: Ensure 4-byte alignment for network packet receive buffers and test buffers to avoid undefined behavior ([PR #1756](https://github.com/versatica/mediasoup/pull/1756)).
96
+ - Worker: Update liburing from 2.12-1 to 2.14-1 ([PR #1761](https://github.com/versatica/mediasoup/pull/1761)).
97
+
98
+ ### 3.19.18
99
+
100
+ - Worker: Improve `Utils::Crypto::GetRandomUInt()` ([PR #1725](https://github.com/versatica/mediasoup/pull/1725)).
101
+ - Convert `WORKER_CLOSE` into a notification ([PR #1729](https://github.com/versatica/mediasoup/pull/1729)).
102
+ - Node tests: Replace `sctp` unmaintained library with `werift-sctp` ([PR #1732](https://github.com/versatica/mediasoup/pull/1732), thanks to @shinyoshiaki for his help with `werift-sctp`).
103
+ - Worker: Require C++20 ([PR #1741](https://github.com/versatica/mediasoup/pull/1741)).
104
+ - Fix "SCTP failed" if no DataChannel is created on a Transport with `enableSctp: true` ([PR #1749](https://github.com/versatica/mediasoup/pull/1749)).
105
+
106
+ ### 3.19.17
107
+
108
+ - `ICE::StunPacket`: Fix wrong memory access in `GetXorMappedAddress()` method ([08c1ec9](https://github.com/versatica/mediasoup/commit/ea464d40ef77247c3ff7acd10e4a0118665fdd14)).
109
+
110
+ ### 3.19.16
111
+
112
+ - `RTP::ProbationGenerator`: Remove wrong warning log ([PR #1703](https://github.com/versatica/mediasoup/pull/1703)).
113
+
114
+ ### 3.19.15
115
+
116
+ - `RtpStreamSend`: duplicated packets are discarded ([PR #1683](https://github.com/versatica/mediasoup/pull/1683)).
117
+ - Worker: Update liburing from 2.5-2 to 2.12-1 ([PR #1686](https://github.com/versatica/mediasoup/pull/1686)).
118
+ - Worker: Use the new `RTP::Packet` class ([PR #1689](https://github.com/versatica/mediasoup/pull/1689)).
119
+ - Worker: Use the new `ICE::StunPacket` class ([PR #1697](https://github.com/versatica/mediasoup/pull/1697)).
120
+ - Node: Expose `ortc` functions in `exports` in `package.json` and main module ([PR #1698](https://github.com/versatica/mediasoup/pull/1698)).
121
+
122
+ ### 3.19.14
123
+
124
+ - Worker: Fix missing system header include, which fails in GCC 15 ([PR #1679](https://github.com/versatica/mediasoup/pull/1679), credits to @upisfree).
125
+
126
+ ### 3.19.13
127
+
128
+ - `RtxStream`: Don't check if RTP timestamp moved backwards ([PR #1668](https://github.com/versatica/mediasoup/pull/1668), credits to @Lynnworld).
129
+ - Fix RTX packets containing non yet seen RTP packets being discarded ([PR #1653](https://github.com/versatica/mediasoup/pull/1653), credits to @penguinol, @mengbieting and @Lynnworld).
130
+
131
+ ### 3.19.12
132
+
133
+ - Only look up the RTP packet’s RID extension if the packet doesn’t have MID extension ([PR #1666](https://github.com/versatica/mediasoup/pull/1666)).
134
+
135
+ ### 3.19.11
136
+
137
+ - Node: Add `workerBin` optional field in `createWorker()` ([PR #1660](https://github.com/versatica/mediasoup/pull/1660)).
138
+
139
+ ### 3.19.10
140
+
141
+ - Add `jitter` in `Consumer` 'outbound-rtp' stats ([PR #1654](https://github.com/versatica/mediasoup/pull/1654)).
142
+
143
+ ### 3.19.9
144
+
145
+ - Fix RTCP packets lost in stats ([PR #1651](https://github.com/versatica/mediasoup/pull/1651)).
146
+
147
+ ### 3.19.8
148
+
149
+ - Fix RTCP cumulative total lost computation ([PR #1650](https://github.com/versatica/mediasoup/pull/1650)).
150
+
151
+ ### 3.19.7
152
+
153
+ - Bump up Meson from 1.5.0 to 1.9.1 ([PR #1634](https://github.com/versatica/mediasoup/pull/1634)).
154
+ - `SeqManager`: Fix, properly account out of order drops until an input is forwarded ([#1635](https://github.com/versatica/mediasoup/pull/1635)), thanks to @pnts-se-whereby for reporting.
155
+ - `RtpParameters`: Add `msid` optional field ([PR #1634](https://github.com/versatica/mediasoup/pull/1634)).
156
+
157
+ ### 3.19.6
158
+
159
+ - AV1: Set DependencyDescriptor Header Extension to 'recvonly' but forward it between pipe transports ([#1632](https://github.com/versatica/mediasoup/pull/1632)).
160
+
161
+ ### 3.19.5
162
+
163
+ - Add custom 'urn:mediasoup:params:rtp-hdrext:packet-id' (mediasoup-packet-id) header extension ([#1631](https://github.com/versatica/mediasoup/pull/1631)).
164
+
165
+ ### 3.19.4
166
+
167
+ - AV1: Add support for DD extension header forwarding ([#1610](https://github.com/versatica/mediasoup/pull/1610)).
168
+ - DependencyDescriptor: Update listener on RtpPacket clone ([#1618](https://github.com/versatica/mediasoup/pull/1618)).
169
+
170
+ ### 3.19.3
171
+
172
+ - CI: Remove `macos-13` hosts.
173
+ - VP8: Fix keyframe detection if "extended" bit is not set ([PR #1612](https://github.com/versatica/mediasoup/pull/1612), credits to @nifigase).
174
+ - CI: Remove `node-20` GitHub actions.
175
+ - Require Node >= 22 ([PR #1614](https://github.com/versatica/mediasoup/pull/1614)).
176
+
177
+ ### 3.19.2
178
+
179
+ - `IceServer`: Fix active tuple selection when in "completed" state ([PR #1608](https://github.com/versatica/mediasoup/pull/1608), credits to @pangsimon).
180
+
181
+ ### 3.19.1
182
+
183
+ - Worker: Fix retransmissions, set proper marker bit ([PR #1606](https://github.com/versatica/mediasoup/pull/1606)).
184
+
185
+ ### 3.19.0
186
+
187
+ - Node: Improve worker binary location detection ([PR #1603](https://github.com/versatica/mediasoup/pull/1603)).
188
+ - `router.pipeToRouter()` can now connect two `Routers` in the same `Worker` if `keepId` is set to `false` ([PR #1604](https://github.com/versatica/mediasoup/pull/1604)).
189
+
190
+ ### 3.18.1
191
+
192
+ - `TransportTuple`: Generate hash based not only on remote IP:port but also on local IP:port ([PR #1586](https://github.com/versatica/mediasoup/pull/1586)).
193
+ - `IceServer`: Only update selected tuple if the new Binding request has ICE renomination ([PR #1587](https://github.com/versatica/mediasoup/pull/1587), credits to @pangsimon).
194
+ - Fix installation in paths with spaces ([PR #1596](https://github.com/versatica/mediasoup/pull/1596), thanks to @ShuzhaoFeng for reporting and helping with this issue).
195
+
196
+ ### 3.18.0
197
+
198
+ - Node: Make `RtpCodecCapability.preferredPayloadType` mandatory and add `RouterRtpCodecCapability` type (in which `preferredPayloadType` is optional) and `RouterRtpCapabilities` type ([PR #1584](https://github.com/versatica/mediasoup/pull/1584)).
199
+
200
+ ### 3.17.1
201
+
202
+ - `WebRtcServer`: Remove the limit of 8 `listenInfos`.
203
+
204
+ ### 3.17.0
205
+
206
+ - Worker: Update Meson subprojects ([PR #1582](https://github.com/versatica/mediasoup/pull/1582)).
207
+ - `TransportListenInfo`: Add `exposeInternalIp` which, if set to `true` and `announcedAddress` is set, exposes an additional ICE candidate in `WebRtcTransport` whose IP is `listenInfo.ip` rather than `listenInfo.announcedAddress` ([PR #1583](https://github.com/versatica/mediasoup/pull/1583)).
208
+
209
+ ### 3.16.8
210
+
211
+ - Node: Fix `PipeConsumerOptions` TypeScript type (make `ConsumerAppData` TS argument optional) ([PR #1581](https://github.com/versatica/mediasoup/pull/1581)).
212
+
213
+ ### 3.16.7
214
+
215
+ - `Router`: Add `updateMediaCodecs()` method to dynamically change Router's RTP capabilities ([PR #1571](https://github.com/versatica/mediasoup/pull/1571)).
216
+ - `RtpStream`: Update `maxPacketTs` if RTP timestamp moved backwards despite in-order RTP sequence number ([PR #1574](https://github.com/versatica/mediasoup/pull/1574), credits to @oppolixiang).
217
+ - `RtpStream`: Ignore padding only RTP packets in RTP data counters ([PR #1580](https://github.com/versatica/mediasoup/pull/1580), thanks to @quanli168 for reporting the issue).
218
+
219
+ ### 3.16.6
220
+
221
+ - Remove H265 codec and deprecated frame-marking RTP extension ([PR #1564](https://github.com/versatica/mediasoup/pull/1564)).
222
+ - `SimulcastConsumer`: Fix selecting spatial layer higher than preferred one ([PR #1565](https://github.com/versatica/mediasoup/pull/1565)).
223
+ - Remove H264-SVC codec ([PR #1568](https://github.com/versatica/mediasoup/pull/1568)).
224
+ - `RateCalculator`: Fix crash due to buffer overflow and avoid time overflow ([PR #1570](https://github.com/versatica/mediasoup/pull/1570)).
225
+
226
+ ### 3.16.5
227
+
228
+ - `Consumer` classes: Really fix target layer retransmission buffer ([PR #1558](https://github.com/versatica/mediasoup/pull/1558)).
229
+
230
+ ### 3.16.4
231
+
232
+ - `Consumer` classes: Disable target layer retransmission buffer until [issue #1554] (https://github.com/versatica/mediasoup/issues/1554) is really fixed.
233
+
234
+ ### 3.16.3
235
+
236
+ - `Consumer` classes: Fix target layer retransmission buffer ([PR #1555](https://github.com/versatica/mediasoup/pull/1555)).
237
+
238
+ ### 3.16.2
239
+
240
+ - `Consumer` classes: Disable target layer retransmission buffer until [issue #1554] (https://github.com/versatica/mediasoup/issues/1554) is fixed.
241
+
242
+ ### 3.16.1
243
+
244
+ - libuv: Update to v1.51.0 ([PR #1543](https://github.com/versatica/mediasoup/pull/1543)).
245
+ - libsrtp: Update to v3.0.0-beta version in our fork ([PR #1544](https://github.com/versatica/mediasoup/pull/1544)).
246
+ - `Consumer` classes: Only drop packets in RTP sequence manager when they belong to current spatial layer ([PR #1549](https://github.com/versatica/mediasoup/pull/1549)).
247
+ - `Consumer` classes: Add target layer retransmission buffer to avoid PLIs/FIRs when RTP packets containing a key frame arrive out of order ([PR #1550](https://github.com/versatica/mediasoup/pull/1550)).
248
+
249
+ ### 3.16.0
250
+
251
+ - Node: Make `worker.close()` close the worker process by sending a `WORKER_CLOSE` request through the channel instead of by sending a SIGINT signal ([PR #1534](https://github.com/versatica/mediasoup/pull/1534)).
252
+ - Worker: Add initial AV1 codec support ([PR #1508](https://github.com/versatica/mediasoup/pull/1508)).
253
+ - `SvcConsumer`: Fix K-SVC bitrate in `IncreaseLayer()` method ([PR #1535](https://github.com/versatica/mediasoup/pull/1535) by @vpalmisano).
254
+ - Node: Require Node >= 20 (drop support for Node 18) ([PR #1536](https://github.com/versatica/mediasoup/pull/1536)).
255
+
256
+ ### 3.15.8
257
+
258
+ - Worker: Fix encode retransmitted packets with the corresponding data ([PR #1527](https://github.com/versatica/mediasoup/pull/1527)).
259
+
260
+ ### 3.15.7
261
+
262
+ - CI: Remove redundant hosts `macos-14` and `windows-2022` from `mediasoup-worker-prebuild` job ([PR #1506](https://github.com/versatica/mediasoup/pull/1506)).
263
+ - Node: Modernize code ([PR #1513](https://github.com/versatica/mediasoup/pull/1513)).
264
+ - Fix wrong SCTP stream parameters in SCTP `DataConsumer` that consumes from a direct `DataProducer` ([PR #1516](https://github.com/versatica/mediasoup/pull/1516)).
265
+
266
+ ### 3.15.6
267
+
268
+ - CI: Remove deprecated `ubuntu-20.04` host and add `windows-2025`, `ubuntu-22.04-arm` and `ubuntu-24.04-arm` hosts ([PR #1500](https://github.com/versatica/mediasoup/pull/1500)).
269
+
270
+ ### 3.15.5
271
+
272
+ - `Consumer`: Fix sequence number gap ([PR #1494](https://github.com/versatica/mediasoup/pull/1494)).
273
+ - Fix VP9 out of order packets forwarding ([PR #1486](https://github.com/versatica/mediasoup/pull/1486) by @vpalmisano).
274
+
275
+ ### 3.15.4
276
+
277
+ - Worker: Drop VP8 packets with a higher temporal layer than the current one ([PR #1009](https://github.com/versatica/mediasoup/pull/1009)).
278
+ - Fix the problem of the TCC package being omitted from being sent ([PR #1492](https://github.com/versatica/mediasoup/pull/1492) by @penguinol).
279
+
280
+ ### 3.15.3
281
+
282
+ - Node: Expose `Index` interface in `types.indexTypes` or via `import { Index as MediasoupIndex } from 'mediasoup/lib/indexTypes'` ([PR #1485](https://github.com/versatica/mediasoup/pull/1485)).
283
+
284
+ ### 3.15.2
285
+
286
+ - Worker: Fix crash when using colliding `portRange` values in different transports ([PR #1469](https://github.com/versatica/mediasoup/pull/1469)).
287
+
288
+ ### 3.15.1
289
+
290
+ - Expose `extras` namespace which exports `EnhancedEventEmitter` and `enhancedOnce()` for now ([PR #1464](https://github.com/versatica/mediasoup/pull/1464)).
291
+
292
+ ### 3.15.0
293
+
294
+ - Node: Add TypeScript interfaces for all exported classes ([PR #1463](https://github.com/versatica/mediasoup/pull/1463)).
295
+ - Node: Add new `transport.type` getter than returns `'webrtc' | 'plain' | 'pipe' | 'direct'` ([PR #1463](https://github.com/versatica/mediasoup/pull/1463)).
296
+ - Node: Add new `rtpObserver.type` getter than returns `'activespeaker' | 'audiolevel'` ([PR #1463](https://github.com/versatica/mediasoup/pull/1463)).
297
+
298
+ ### 3.14.16
299
+
300
+ - `SimulcastConsumer`: Fix cannot switch layers if initial `tsReferenceSpatialLayer disappears` disappears ([PR #1459](https://github.com/versatica/mediasoup/pull/1459) by @Lynnworld).
301
+
302
+ ### 3.14.15
303
+
304
+ - Update worker abseil-cpp dependency to 20240722.0 LTS (fixes compilation for FreeBSD systems) ([PR #1457](https://github.com/versatica/mediasoup/pull/1457), credits to @garrettboone).
305
+
306
+ ### 3.14.14
307
+
308
+ - Sign self generated DTLS certificate with SHA256 ([PR #1450](https://github.com/versatica/mediasoup/pull/1450)).
309
+ - Node: Fix `mediasoup.types` exported types are empty ([PR #1453](https://github.com/versatica/mediasoup/pull/1453)).
310
+
311
+ ### 3.14.13
312
+
313
+ - Node: Fix regression in exported `mediasoup.types` (classes are now exported as classes instead of types).
314
+
315
+ ### 3.14.12
316
+
317
+ - Worker: Fix `io_uring` support detection ([PR #1445](https://github.com/versatica/mediasoup/pull/1445)).
318
+ - Mitigate libsrtp wraparound with loss decryption failure ([PR #1438](https://github.com/versatica/mediasoup/pull/1438)).
319
+ - Node: New `setLogEventListeners()` utility to get log events ([PR #1448](https://github.com/versatica/mediasoup/pull/1448)).
320
+
321
+ ### 3.14.11
322
+
323
+ - Worker: Fix `disableLiburing` option in `WorkerSettings` ([PR #1444](https://github.com/versatica/mediasoup/pull/1444)).
324
+
325
+ ### 3.14.10
326
+
327
+ - CI: Support Node 22 ([PR #1434](https://github.com/versatica/mediasoup/pull/1434)).
328
+ - Update ESLint to version 9 ([PR #1435](https://github.com/versatica/mediasoup/pull/1435)).
329
+ - Worker: Add `disableLiburing` boolean option (`false` by default) to disable `io_uring` even if it's supported by the prebuilt `mediasoup-worker` and by current host ([PR #1442](https://github.com/versatica/mediasoup/pull/1442)).
330
+
331
+ ### 3.14.9
332
+
333
+ - Worker: Test, fix buffer overflow ([PR #1419](https://github.com/versatica/mediasoup/pull/1419)).
334
+ - Bump up Meson from 1.3.0 to 1.5.0 ([PR #1424](https://github.com/versatica/mediasoup/pull/1424)).
335
+ - Node: Export new `WorkerObserver`, `ProducerObserver`, etc. TypeScript types ([PR #1430](https://github.com/versatica/mediasoup/pull/1430)).
336
+ - Fix frozen video in simulcast due to wrong dropping of padding only packets ([PR #1431](https://github.com/versatica/mediasoup/pull/1431), thanks to @quanli168).
337
+
338
+ ### 3.14.8
339
+
340
+ - Add support for 'playout-delay' RTP extension ([PR #1412](https://github.com/versatica/mediasoup/pull/1412) by @DavidNegro).
341
+
342
+ ### 3.14.7
343
+
344
+ - `SimulcastConsumer`: Fix increase layer when current layer has not receive SR ([PR #1098](https://github.com/versatica/mediasoup/pull/1098) by @penguinol).
345
+ - Ignore RTP packets with empty payload ([PR #1403](https://github.com/versatica/mediasoup/pull/1403), credits to @ggarber).
346
+
347
+ ### 3.14.6
348
+
349
+ - Worker: Fix potential double free when ICE consent check fails ([PR #1393](https://github.com/versatica/mediasoup/pull/1393)).
350
+
351
+ ### 3.14.5
352
+
353
+ - Worker: Fix memory leak when using `WebRtcServer` with TCP enabled ([PR #1389](https://github.com/versatica/mediasoup/pull/1389)).
354
+ - Worker: Fix crash when closing `WebRtcServer` with active `WebRtcTransports` ([PR #1390](https://github.com/versatica/mediasoup/pull/1390)).
355
+
356
+ ### 3.14.4
357
+
358
+ - Worker: Fix crash. `RtcpFeedback` parameter is optional ([PR #1387](https://github.com/versatica/mediasoup/pull/1387), credits to @Lynnworld).
359
+
360
+ ### 3.14.3
361
+
362
+ - Worker: Fix possible value overflow in `FeedbackRtpTransport.cpp` ([PR #1386](https://github.com/versatica/mediasoup/pull/1386), credits to @Lynnworld).
363
+
364
+ ### 3.14.2
365
+
366
+ - Update worker subprojects ([PR #1376](https://github.com/versatica/mediasoup/pull/1376)).
367
+ - OPUS: Fix DTX detection ([PR #1357](https://github.com/versatica/mediasoup/pull/1357)).
368
+ - Worker: Fix sending callback leaks ([PR #1383](https://github.com/versatica/mediasoup/pull/1383), credits to @Lynnworld).
369
+
370
+ ### 3.14.1
371
+
372
+ - Node: Bring transport `rtpPacketLossReceived` and `rtpPacketLossSent` stats back ([PR #1371](https://github.com/versatica/mediasoup/pull/1371)).
373
+
374
+ ### 3.14.0
375
+
376
+ - `TransportListenInfo`: Add `portRange` (deprecate worker port range) ([PR #1365](https://github.com/versatica/mediasoup/pull/1365)).
377
+ - Require Node >= 18 ([PR #1365](https://github.com/versatica/mediasoup/pull/1365)).
378
+
379
+ ### 3.13.24
380
+
381
+ - Node: Fix missing `bitrateByLayer` field in stats of `RtpRecvStream` in Node ([PR #1349](https://github.com/versatica/mediasoup/pull/1349)).
382
+ - Update worker dependency libuv to 1.48.0.
383
+ - Update worker FlatBuffers to 24.3.6-1 (fix cannot set temporal layer 0) ([PR #1348](https://github.com/versatica/mediasoup/pull/1348)).
384
+
385
+ ### 3.13.23
386
+
387
+ - Fix DTLS packets do not honor configured DTLS MTU (attempt 3) ([PR #1345](https://github.com/versatica/mediasoup/pull/1345)).
388
+
389
+ ### 3.13.22
390
+
391
+ - Fix wrong publication of mediasoup NPM 3.13.21.
392
+
393
+ ### 3.13.21
394
+
395
+ - Revert ([PR #1156](https://github.com/versatica/mediasoup/pull/1156)) "Make DTLS fragment stay within MTU size range" because it causes a memory leak ([PR #1342](https://github.com/versatica/mediasoup/pull/1342)).
396
+
397
+ ### 3.13.20
398
+
399
+ - Add server side ICE consent checks to detect silent WebRTC disconnections ([PR #1332](https://github.com/versatica/mediasoup/pull/1332)).
400
+ - Fix regression (crash) in transport-cc feedback generation ([PR #1339](https://github.com/versatica/mediasoup/pull/1339)).
401
+
402
+ ### 3.13.19
403
+
404
+ - Node: Fix `router.createWebRtcTransport()` with `listenIps` ([PR #1330](https://github.com/versatica/mediasoup/pull/1330)).
405
+
406
+ ### 3.13.18
407
+
408
+ - Make transport-cc feedback work similarly to libwebrtc ([PR #1088](https://github.com/versatica/mediasoup/pull/1088) by @penguinol).
409
+ - `TransportListenInfo`: "announced ip" can also be a hostname ([PR #1322](https://github.com/versatica/mediasoup/pull/1322)).
410
+ - `TransportListenInfo`: Rename "announced ip" to "announced address" ([PR #1324](https://github.com/versatica/mediasoup/pull/1324)).
411
+ - CI: Add `macos-14`.
412
+
413
+ ### 3.13.17
414
+
415
+ - Fix prebuilt worker download ([PR #1319](https://github.com/versatica/mediasoup/pull/1319) by @brynrichards).
416
+ - libsrtp: Update to v3.0-alpha version in our fork.
417
+
418
+ ### 3.13.16
419
+
420
+ - Node: Add new `worker.on('subprocessclose')` event ([PR #1307](https://github.com/versatica/mediasoup/pull/1307)).
421
+
422
+ ### 3.13.15
423
+
424
+ - Add worker prebuild binary for Linux kernel 6 ([PR #1300](https://github.com/versatica/mediasoup/pull/1300)).
425
+
426
+ ### 3.13.14
427
+
428
+ - Avoid modification of user input data ([PR #1285](https://github.com/versatica/mediasoup/pull/1285)).
429
+ - `TransportListenInfo`: Add transport socket flags ([PR #1291](https://github.com/versatica/mediasoup/pull/1291)).
430
+ - Note that `flags.ipv6Only` is `false` by default.
431
+ - `TransportListenInfo`: Ignore given socket flags if not suitable for given IP family or transport ([PR #1294](https://github.com/versatica/mediasoup/pull/1294)).
432
+ - Meson: Remove `-Db_pie=true -Db_staticpic=true` args ([PR #1293](https://github.com/versatica/mediasoup/pull/1293)).
433
+ - Add RTCP Sender Report trace event ([PR #1267](https://github.com/versatica/mediasoup/pull/1267) by @GithubUser8080).
434
+
435
+ ### 3.13.13
436
+
437
+ - Worker: Do not use references for async callbacks ([PR #1274](https://github.com/versatica/mediasoup/pull/1274)).
438
+ - liburing: Enable zero copy ([PR #1273](https://github.com/versatica/mediasoup/pull/1273)).
439
+ - Fix build on musl based systems (such as Alpine Linux) ([PR #1279](https://github.com/versatica/mediasoup/pull/1279)).
440
+
441
+ ### 3.13.12
442
+
443
+ - Worker: Disable `RtcLogger` usage if not enabled ([PR #1264](https://github.com/versatica/mediasoup/pull/1264)).
444
+ - npm installation: Don't require Python if valid worker prebuilt binary is fetched ([PR #1265](https://github.com/versatica/mediasoup/pull/1265)).
445
+ - Update h264-profile-level-id NPM dependency to 1.1.0.
446
+
447
+ ### 3.13.11
448
+
449
+ - liburing: Avoid extra memcpy on RTP ([PR #1258](https://github.com/versatica/mediasoup/pull/1258)).
450
+ - libsrtp: Use our own fork with performance gain ([PR #1260](https://github.com/versatica/mediasoup/pull/1260)).
451
+ - `DataConsumer`: Add `addSubchannel()` and `removeSubchannel()` methods ([PR #1263](https://github.com/versatica/mediasoup/pull/1263)).
452
+ - Fix Rust `DataConsumer` ([PR #1262](https://github.com/versatica/mediasoup/pull/1262)).
453
+
454
+ ### 3.13.10
455
+
456
+ - `tasks.py`: Always include `--no-user` in `pip install` commands to avoid the "can not combine --user and --target" error in Windows ([PR #1257](https://github.com/versatica/mediasoup/pull/1257)).
457
+
458
+ ### 3.13.9
459
+
460
+ - Update worker liburing dependency to 2.4-2 ([PR #1254](https://github.com/versatica/mediasoup/pull/1254)).
461
+ - liburing: Enable by default ([PR 1255](https://github.com/versatica/mediasoup/pull/1255)).
462
+
463
+ ### 3.13.8
464
+
465
+ - liburing: Enable liburing usage for SCTP data delivery ([PR 1249](https://github.com/versatica/mediasoup/pull/1249)).
466
+ - liburing: Disable by default ([PR 1253](https://github.com/versatica/mediasoup/pull/1253)).
467
+
468
+ ### 3.13.7
469
+
470
+ - Update worker dependencies ([PR #1201](https://github.com/versatica/mediasoup/pull/1201)):
471
+ - abseil-cpp 20230802.0-2
472
+ - libuv 1.47.0-1
473
+ - OpenSSL 3.0.8-2
474
+ - usrsctp snapshot ebb18adac6501bad4501b1f6dccb67a1c85cc299
475
+ - Enable `liburing` usage for Linux (kernel versions >= 6) ([PR #1218](https://github.com/versatica/mediasoup/pull/1218)).
476
+
477
+ ### 3.13.6
478
+
479
+ - Replace make + Makefile with Python Invoke library + tasks.py (also fix installation under path with whitespaces) ([PR #1239](https://github.com/versatica/mediasoup/pull/1239)).
480
+
481
+ ### 3.13.5
482
+
483
+ - Fix RTCP SDES packet size calculation ([PR #1236](https://github.com/versatica/mediasoup/pull/1236) based on PR [PR #1234](https://github.com/versatica/mediasoup/pull/1234) by @ybybwdwd).
484
+ - RTCP Compound Packet: Use a single DLRR report to hold all ssrc info sub-blocks ([PR #1237](https://github.com/versatica/mediasoup/pull/1237)).
485
+
486
+ ### 3.13.4
487
+
488
+ - Fix RTCP DLRR (Delay Since Last Receiver Report) block parsing ([PR #1234](https://github.com/versatica/mediasoup/pull/1234)).
489
+
490
+ ### 3.13.3
491
+
492
+ - Node: Fix issue when 'pause'/'resume' events are not emitted ([PR #1231](https://github.com/versatica/mediasoup/pull/1231) by @douglaseel).
493
+
494
+ ### 3.13.2
495
+
496
+ - FBS: `LayersChangeNotification` body must be optional (fixes a crash) ([PR #1227](https://github.com/versatica/mediasoup/pull/1227)).
497
+
498
+ ### 3.13.1
499
+
500
+ - Node: Extract version from `package.json` using `require()` ([PR #1217](https://github.com/versatica/mediasoup/pull/1217) by @arcinston).
501
+
502
+ ### 3.13.0
503
+
504
+ - Switch from JSON based messages to FlatBuffers ([PR #1064](https://github.com/versatica/mediasoup/pull/1064)).
505
+ - Add `TransportListenInfo` in all transports and send/recv buffer size options ([PR #1084](https://github.com/versatica/mediasoup/pull/1084)).
506
+ - Add optional `rtcpListenInfo` in `PlainTransportOptions` ([PR #1099](https://github.com/versatica/mediasoup/pull/1099)).
507
+ - Add pause/resume API in `DataProducer` and `DataConsumer` ([PR #1104](https://github.com/versatica/mediasoup/pull/1104)).
508
+ - DataChannel subchannels feature ([PR #1152](https://github.com/versatica/mediasoup/pull/1152)).
509
+ - Worker: Make DTLS fragment stay within MTU size range ([PR #1156](https://github.com/versatica/mediasoup/pull/1156), based on [PR #1143](https://github.com/versatica/mediasoup/pull/1143) by @vpnts-se).
510
+
511
+ ### 3.12.16
512
+
513
+ - Fix `IceServer` crash when client uses ICE renomination ([PR #1182](https://github.com/versatica/mediasoup/pull/1182)).
514
+
515
+ ### 3.12.15
516
+
517
+ - Fix NPM "postinstall" task in Windows ([PR #1187](https://github.com/versatica/mediasoup/pull/1187)).
518
+
519
+ ### 3.12.14
520
+
521
+ - CI: Use Node version 20 ([PR #1177](https://github.com/versatica/mediasoup/pull/1177)).
522
+ - Use given `PYTHON` environment variable (if given) when running `worker/scripts/getmake.py` ([PR #1186](https://github.com/versatica/mediasoup/pull/1186)).
523
+
524
+ ### 3.12.13
525
+
526
+ - Bump up Meson from 1.1.0 to 1.2.1 (fixes Xcode 15 build issues) ([PR #1163](https://github.com/versatica/mediasoup/pull/1163) by @arcinston).
527
+
528
+ ### 3.12.12
529
+
530
+ - Support C++20 ([PR #1150](https://github.com/versatica/mediasoup/pull/1150) by @o-u-p).
531
+
532
+ ### 3.12.11
533
+
534
+ - Google Transport Feedback: Read Reference Time field as 24bits signed as per spec ([PR #1145](https://github.com/versatica/mediasoup/pull/1145)).
535
+
536
+ ### 3.12.10
537
+
538
+ - Node: Rename `WebRtcTransport.webRtcServerClosed()` to `listenServerClosed()` ([PR #1141](https://github.com/versatica/mediasoup/pull/1141) by @piranna).
539
+
540
+ ### 3.12.9
541
+
542
+ - Fix RTCP SDES ([PR #1139](https://github.com/versatica/mediasoup/pull/1139)).
543
+
544
+ ### 3.12.8
545
+
546
+ - Export `workerBin` absolute path ([PR #1123](https://github.com/versatica/mediasoup/pull/1123)).
547
+
548
+ ### 3.12.7
549
+
550
+ - `SimulcastConsumer`: Fix lack of "layerschange" event when all streams in the producer die ([PR #1122](https://github.com/versatica/mediasoup/pull/1122)).
551
+
552
+ ### 3.12.6
553
+
554
+ - Worker: Add `Transport::Destroying()` protected method ([PR #1114](https://github.com/versatica/mediasoup/pull/1114)).
555
+ - `RtpStreamRecv`: Fix jitter calculation ([PR #1117](https://github.com/versatica/mediasoup/pull/1117), thanks to @penguinol).
556
+ - Revert "Node: make types.ts only export types rather than the entire class/code" ([PR #1109](https://github.com/versatica/mediasoup/pull/1109)) because it requires `typescript` >= 5 in the apps that import mediasoup and we don't want to be that strict yet.
557
+
558
+ ### 3.12.5
559
+
560
+ - `DataConsumer`: Fix removed 'bufferedamountlow' notification ([PR #1113](https://github.com/versatica/mediasoup/pull/1113)).
561
+
562
+ ### 3.12.4
563
+
564
+ - Fix downloaded prebuilt binary check on Windows ([PR #1105](https://github.com/versatica/mediasoup/pull/1105) by @woodfe).
565
+
566
+ ### 3.12.3
567
+
568
+ Migrate `npm-scripts.js` to `npm-scripts.mjs` (ES Module) ([PR #1093](https://github.com/versatica/mediasoup/pull/1093)).
569
+
570
+ ### 3.12.2
571
+
572
+ - CI: Use `ubuntu-20.04` to build `mediasoup-worker` prebuilt on Linux ([PR #1092](https://github.com/versatica/mediasoup/pull/1092)).
573
+
574
+ ### 3.12.1
575
+
576
+ - `mediasoup-worker` prebuild: Fallback to local building if fetched binary doesn't run on current host ([PR #1090](https://github.com/versatica/mediasoup/pull/1090)).
577
+
578
+ ### 3.12.0
579
+
580
+ - Automate and publish prebuilt `mediasoup-worker` binaries ([PR #1087](https://github.com/versatica/mediasoup/pull/1087), thanks to @barlock for his work in ([PR #1083](https://github.com/versatica/mediasoup/pull/1083)).
581
+
582
+ ### 3.11.26
583
+
584
+ - Worker: Fix NACK timer and avoid negative RTT ([PR #1082](https://github.com/versatica/mediasoup/pull/1082), thanks to @o-u-p for his work in ([PR #1076](https://github.com/versatica/mediasoup/pull/1076)).
585
+
586
+ ### 3.11.25
587
+
588
+ - Worker: Require C++17, Meson >= 1.1.0 and update subprojects ([PR #1081](https://github.com/versatica/mediasoup/pull/1081)).
589
+
590
+ ### 3.11.24
591
+
592
+ - `SeqManager`: Fix performance regression ([PR #1068](https://github.com/versatica/mediasoup/pull/1068), thanks to @vpalmisano for properly reporting).
593
+
594
+ ### 3.11.23
595
+
596
+ - Node: Fix `appData` for `Transport` and `RtpObserver` parent classes ([PR #1066](https://github.com/versatica/mediasoup/pull/1066)).
597
+
598
+ ### 3.11.22
599
+
600
+ - `RtpStreamRecv`: Only perform RTP inactivity check on simulcast streams ([PR #1061](https://github.com/versatica/mediasoup/pull/1061)).
601
+ - `SeqManager`: Properly remove old dropped entries ([PR #1054](https://github.com/versatica/mediasoup/pull/1054)).
602
+ - libwebrtc: Upgrade trendline estimator to improve low bandwidth conditions ([PR #1055](https://github.com/versatica/mediasoup/pull/1055) by @ggarber).
603
+ - libwebrtc: Fix bandwidth probation dead state ([PR #1031](https://github.com/versatica/mediasoup/pull/1031) by @vpalmisano).
604
+
605
+ ### 3.11.21
606
+
607
+ - Fix check division by zero in transport congestion control ([PR #1049](https://github.com/versatica/mediasoup/pull/1049) by @ggarber).
608
+ - Fix lost pending statuses in transport CC feedback ([PR #1050](https://github.com/versatica/mediasoup/pull/1050) by @ggarber).
609
+
610
+ ### 3.11.20
611
+
612
+ - `RtpStreamSend`: Reset RTP retransmission buffer upon RTP sequence number reset ([PR #1041](https://github.com/versatica/mediasoup/pull/1041)).
613
+ - `RtpRetransmissionBuffer`: Handle corner case in which received packet has lower seq than newest packet in the buffer but higher timestamp ([PR #1044](https://github.com/versatica/mediasoup/pull/1044)).
614
+ - `SeqManager`: Fix crash and add fuzzer ([PR #1045](https://github.com/versatica/mediasoup/pull/1045)).
615
+ - Node: Make `appData` TS typed and writable ([PR #1046](https://github.com/versatica/mediasoup/pull/1046), credits to @mango-martin).
616
+
617
+ ### 3.11.19
618
+
619
+ - `SvcConsumer`: Properly handle VP9 K-SVC bandwidth allocation ([PR #1036](https://github.com/versatica/mediasoup/pull/1036) by @vpalmisano).
620
+
621
+ ### 3.11.18
622
+
623
+ - `RtpRetransmissionBuffer`: Consider the case of packet with newest timestamp but "old" seq number ([PR #1039](https://github.com/versatica/mediasoup/pull/1039)).
624
+
625
+ ### 3.11.17
626
+
627
+ - Add `transport.setMinOutgoingBitrate()` method ([PR #1038](https://github.com/versatica/mediasoup/pull/1038), credits to @ jcague).
628
+ - `RTC::RetransmissionBuffer`: Increase `RetransmissionBufferMaxItems` from 2500 to 5000.
629
+
630
+ ### 3.11.16
631
+
632
+ - Fix `SeqManager`: Properly consider previous cycle dropped inputs ([PR #1032](https://github.com/versatica/mediasoup/pull/1032)).
633
+ - `RtpRetransmissionBuffer`: Get rid of not necessary `startSeq` private member ([PR #1029](https://github.com/versatica/mediasoup/pull/1029)).
634
+ - Node: Upgrade TypeScript to 5.0.2.
635
+
636
+ ### 3.11.15
637
+
638
+ - `RtpRetransmissionBuffer`: Fix crash and add fuzzer ([PR #1028](https://github.com/versatica/mediasoup/pull/1028)).
639
+
640
+ ### 3.11.14
641
+
642
+ - Refactor RTP retransmission buffer in a separate and testable `RTC::RetransmissionBuffer` class ([PR #1023](https://github.com/versatica/mediasoup/pull/1023)).
643
+
644
+ ### 3.11.13
645
+
646
+ - `AudioLevelObserver`: Use multimap rather than map to avoid conflict if various Producers generate same audio level ([PR #1021](https://github.com/versatica/mediasoup/pull/1021), issue reported by @buptlsp).
647
+
648
+ ### 3.11.12
649
+
650
+ - Fix jitter calculation ([PR #1019](https://github.com/versatica/mediasoup/pull/1019), credits to @alexciarlillo and @snnz).
651
+
652
+ ### 3.11.11
653
+
654
+ - Add support for RTCP NACK in OPUS ([PR #1015](https://github.com/versatica/mediasoup/pull/1015)).
655
+
656
+ ### 3.11.10
657
+
658
+ - Download and use MSYS/make locally for Windows postinstall ([PR #792](https://github.com/versatica/mediasoup/pull/792) by @snnz).
659
+
660
+ ### 3.11.9
661
+
662
+ - Allow simulcast with a single encoding (and N temporal layers) ([PR #1013](https://github.com/versatica/mediasoup/pull/1013)).
663
+ - Update libsrtp to 2.5.0.
664
+
665
+ ### 3.11.8
666
+
667
+ - `SimulcastConsumer::GetDesiredBitrate()`: Choose the highest bitrate among all Producer streams ([PR #992](https://github.com/versatica/mediasoup/pull/992)).
668
+ - `SimulcastConsumer`: Fix frozen video when syncing keyframe is discarded due to too high RTP timestamp extra offset needed ([PR #999](https://github.com/versatica/mediasoup/pull/999), thanks to @satoren for properly reporting the issue and helping with the solution).
669
+
670
+ ### 3.11.7
671
+
672
+ - libwebrtc: Fix crash due to invalid `arrival_time` value ([PR #985](https://github.com/versatica/mediasoup/pull/985) by @ggarber).
673
+ - libwebrtc: Replace `MS_ASSERT()` with `MS_ERROR()` ([PR #988](https://github.com/versatica/mediasoup/pull/988)).
674
+
675
+ ### 3.11.6
676
+
677
+ - Fix wrong `PictureID` rolling over in VP9 and VP8 ([PR #984](https://github.com/versatica/mediasoup/pull/984) by @jcague).
678
+
679
+ ### 3.11.5
680
+
681
+ - Require Node >= 16 ([PR #973](https://github.com/versatica/mediasoup/pull/973)).
682
+ - Fix wrong `Consumer` bandwidth estimation under `Producer` packet loss ([PR #962](https://github.com/versatica/mediasoup/pull/962) by @ggarber).
683
+
684
+ ### 3.11.4
685
+
686
+ - Node: Migrate tests to TypeScript ([PR #958](https://github.com/versatica/mediasoup/pull/958)).
687
+ - Node: Remove compiled JavaScript from repository and compile TypeScript code on NPM `prepare` script on demand when installed via git ([PR #954](https://github.com/versatica/mediasoup/pull/954)).
688
+ - Worker: Add `RTC::Shared` singleton for RTC entities ([PR #953](https://github.com/versatica/mediasoup/pull/953)).
689
+ - Update OpenSSL to 3.0.7.
690
+
691
+ ### 3.11.3
692
+
693
+ - `ChannelMessageHandlers`: Make `RegisterHandler()` not remove the existing handler if another one with same `id` is given ([PR #952](https://github.com/versatica/mediasoup/pull/952)).
694
+
695
+ ### 3.11.2
696
+
697
+ - Fix installation issue in Linux due to a bug in ninja latest version 1.11.1 ([PR #948](https://github.com/versatica/mediasoup/pull/948)).
698
+
699
+ ### 3.11.1
700
+
701
+ - `ActiveSpeakerObserver`: Revert 'dominantspeaker' event changes in [PR #941](https://github.com/versatica/mediasoup/pull/941) to avoid breaking changes ([PR #947](https://github.com/versatica/mediasoup/pull/947)).
702
+
703
+ ### 3.11.0
704
+
705
+ - `Transport`: Remove duplicate call to method ([PR #931](https://github.com/versatica/mediasoup/pull/931)).
706
+ - RTCP: Adjust maximum compound packet size ([PR #934](https://github.com/versatica/mediasoup/pull/934)).
707
+ - `DataConsumer`: Fix `bufferedAmount` type to be a number again ([PR #936](https://github.com/versatica/mediasoup/pull/936)).
708
+ - `ActiveSpeakerObserver`: Fix 'dominantspeaker' event by having a single `Producer` as argument rather than an array with a single `Producer` into it ([PR #941](https://github.com/versatica/mediasoup/pull/941)).
709
+ - `ActiveSpeakerObserver`: Fix memory leak ([PR #942](https://github.com/versatica/mediasoup/pull/942)).
710
+ - Fix some libwebrtc issues ([PR #944](https://github.com/versatica/mediasoup/pull/944)).
711
+ - Tests: Normalize hexadecimal data representation ([PR #945](https://github.com/versatica/mediasoup/pull/945)).
712
+ - `SctpAssociation`: Fix memory violation ([PR #943](https://github.com/versatica/mediasoup/pull/943)).
713
+
714
+ ### 3.10.12
715
+
716
+ - Fix worker crash due to `std::out_of_range` exception ([PR #933](https://github.com/versatica/mediasoup/pull/933)).
717
+
718
+ ### 3.10.11
719
+
720
+ - RTCP: Fix trailing space needed by `srtp_protect_rtcp()` ([PR #929](https://github.com/versatica/mediasoup/pull/929)).
721
+
722
+ ### 3.10.10
723
+
724
+ - Fix the JSON serialization for the payload channel `rtp` event ([PR #926](https://github.com/versatica/mediasoup/pull/926) by @mhammo).
725
+
726
+ ### 3.10.9
727
+
728
+ - RTCP enhancements ([PR #914](https://github.com/versatica/mediasoup/pull/914)).
729
+
730
+ ### 3.10.8
731
+
732
+ - `Consumer`: use a bitset instead of a set for supported payload types ([PR #919](https://github.com/versatica/mediasoup/pull/919)).
733
+ - RtpPacket: optimize UpdateMid() ([PR #920](https://github.com/versatica/mediasoup/pull/920)).
734
+ - Little optimizations and modernization ([PR #916](https://github.com/versatica/mediasoup/pull/916)).
735
+ - Fix SIGSEGV at `RTC::WebRtcTransport::OnIceServerTupleRemoved()` ([PR #915](https://github.com/versatica/mediasoup/pull/915), credits to @ybybwdwd).
736
+ - `WebRtcServer`: Make `port` optional (if not given, a random available port from the `Worker` port range is used) ([PR #908](https://github.com/versatica/mediasoup/pull/908) by @satoren).
737
+
738
+ ### 3.10.7
739
+
740
+ - Forward `abs-capture-time` RTP extension also for audio packets ([PR #911](https://github.com/versatica/mediasoup/pull/911)).
741
+
742
+ ### 3.10.6
743
+
744
+ - Node: Define TypeScript types for `internal` and `data` objects ([PR #891](https://github.com/versatica/mediasoup/pull/891)).
745
+ - `Channel` and `PayloadChannel`: Refactor `internal` with a single `handlerId` ([PR #889](https://github.com/versatica/mediasoup/pull/889)).
746
+ - `Channel` and `PayloadChannel`: Optimize message format and JSON generation ([PR #893](https://github.com/versatica/mediasoup/pull/893)).
747
+ - New C++ `ChannelMessageHandlers` class ([PR #894](https://github.com/versatica/mediasoup/pull/894)).
748
+ - Fix Rust support after recent changes ([PR #898](https://github.com/versatica/mediasoup/pull/898)).
749
+ - Modify `FeedbackRtpTransport` and tests to be compliant with latest libwebrtc code, make reference time to be unsigned ([PR #899](https://github.com/versatica/mediasoup/pull/899) by @penguinol and @sarumjanuch).
750
+
751
+ ### 3.10.5
752
+
753
+ - `RtpStreamSend`: Do not store too old RTP packets ([PR #885](https://github.com/versatica/mediasoup/pull/885)).
754
+ - Log error details in channel socket. ([PR #875](https://github.com/versatica/mediasoup/pull/875) by @mstyura).
755
+
756
+ ### 3.10.4
757
+
758
+ - Do not clone RTP packets if not needed ([PR #850](https://github.com/versatica/mediasoup/pull/850)).
759
+ - Fix DTLS related crash ([PR #867](https://github.com/versatica/mediasoup/pull/867)).
760
+
761
+ ### 3.10.3
762
+
763
+ - `SimpleConsumer`: Fix. Only process Opus codec ([PR #865](https://github.com/versatica/mediasoup/pull/865)).
764
+ - TypeScript: Improve `WebRtcTransportOptions` type to not allow `webRtcServer` and `listenIps`options at the same time ([PR #852](https://github.com/versatica/mediasoup/pull/852)).
765
+
766
+ ### 3.10.2
767
+
768
+ - Fix release contents by including `meson_options.txt` ([PR #863](https://github.com/versatica/mediasoup/pull/863)).
769
+
770
+ ### 3.10.1
771
+
772
+ - `RtpStreamSend`: Memory optimizations ([PR #840](https://github.com/versatica/mediasoup/pull/840)). Extracted from #675, by @nazar-pc.
773
+ - `SimpleConsumer`: Opus DTX ignore capabilities ([PR #846](https://github.com/versatica/mediasoup/pull/846)).
774
+ - Update `libuv` to 1.44.1: Fixes `libuv` build ([PR #857](https://github.com/versatica/mediasoup/pull/857)).
775
+
776
+ ### 3.10.0
777
+
778
+ - `WebRtcServer`: A new class that brings to `WebRtcTransports` the ability to listen on a single UDP/TCP port ([PR #834](https://github.com/versatica/mediasoup/pull/834)).
779
+ - More SRTP crypto suites ([PR #837](https://github.com/versatica/mediasoup/pull/837)).
780
+ - Improve `EnhancedEventEmitter` ([PR #836](https://github.com/versatica/mediasoup/pull/836)).
781
+ - `TransportCongestionControlClient`: Allow setting max outgoing bitrate before `tccClient` is created ([PR #833](https://github.com/versatica/mediasoup/pull/833)).
782
+ - Update TypeScript version.
783
+
784
+ ### 3.9.17
785
+
786
+ - `RateCalculator`: Fix old buffer items cleanup ([PR #830](https://github.com/versatica/mediasoup/pull/830) by @dsdolzhenko).
787
+ - Update TypeScript version.
788
+
789
+ ### 3.9.16
790
+
791
+ - `SimulcastConsumer`: Fix spatial layer switch with unordered packets ([PR #823](https://github.com/versatica/mediasoup/pull/823) by @jcague).
792
+ - Update TypeScript version.
793
+
794
+ ### 3.9.15
795
+
796
+ - `RateCalculator`: Revert Fix old buffer items cleanup ([PR #819](https://github.com/versatica/mediasoup/pull/819) by @dsdolzhenko).
797
+
798
+ ### 3.9.14
799
+
800
+ - `NackGenerator`: Add a configurable delay before sending NACK ([PR #827](https://github.com/versatica/mediasoup/pull/827), credits to @penguinol).
801
+ - `SimulcastConsumer`: Fix a race condition in SimulcastConsumer ([PR #825](https://github.com/versatica/mediasoup/pull/825) by @dsdolzhenko).
802
+ - Add support for H264 SVC (#798 by @prtmD).
803
+ - `RtpStreamSend`: Support receive RTCP-XR RRT and send RTCP-XR DLRR ([PR #781](https://github.com/versatica/mediasoup/pull/781) by @aggresss).
804
+ - `RateCalculator`: Fix old buffer items cleanup ([PR #819](https://github.com/versatica/mediasoup/pull/819) by @dsdolzhenko).
805
+ - `DirectTransport`: Create a buffer to process RTP packets ([PR #730](https://github.com/versatica/mediasoup/pull/730) by @rtctt).
806
+ - Node: Improve `appData` TypeScript syntax and initialization.
807
+ - Allow setting max outgoing bitrate below the initial value ([PR #826](https://github.com/versatica/mediasoup/pull/826) by @ggarber).
808
+ - Update TypeScript version.
809
+
810
+ ### 3.9.13
811
+
812
+ - `VP8`: Do not discard `TL0PICIDX` from Temporal Layers higher than 0 (PR @817 by @jcague).
813
+ - Update TypeScript version.
814
+
815
+ ### 3.9.12
816
+
817
+ - `DtlsTransport`: Make DTLS negotiation run immediately ([PR #815](https://github.com/versatica/mediasoup/pull/815)).
818
+ - Update TypeScript version.
819
+
820
+ ### 3.9.11
821
+
822
+ - Modify `SimulcastConsumer` to keep using layers without good scores ([PR #804](https://github.com/versatica/mediasoup/pull/804) by @ggarber).
823
+
824
+ ### 3.9.10
825
+
826
+ - Update worker dependencies:
827
+ - OpenSSL 3.0.2.
828
+ - abseil-cpp 20211102.0.
829
+ - nlohmann_json 3.10.5.
830
+ - usrsctp snapshot 4e06feb01cadcd127d119486b98a4bd3d64aa1e7.
831
+ - wingetopt 1.00.
832
+ - Update TypeScript version.
833
+ - Fix RTP marker bit not being reseted after mangling in each `Consumer` ([PR #811](https://github.com/versatica/mediasoup/pull/811) by @ggarber).
834
+
835
+ ### 3.9.9
836
+
837
+ - Optimize RTP header extension handling ([PR #786](https://github.com/versatica/mediasoup/pull/786)).
838
+ - `RateCalculator`: Reset optimization ([PR #785](https://github.com/versatica/mediasoup/pull/785)).
839
+ - Fix frozen video due to double call to `Consumer::UserOnTransportDisconnected()` ([PR #788](https://github.com/versatica/mediasoup/pull/788), thanks to @ggarber for exposing this issue in [PR #787](https://github.com/versatica/mediasoup/pull/787)).
840
+
841
+ ### 3.9.8
842
+
843
+ - Fix VP9 kSVC forwarding logic to not forward lower unneded layers ([PR #778](https://github.com/versatica/mediasoup/pull/778) by @ggarber).
844
+ - Fix update bandwidth estimation configuration and available bitrate when updating max outgoing bitrate ([PR #779](https://github.com/versatica/mediasoup/pull/779) by @ggarber).
845
+ - Replace outdated `random-numbers` package by native `crypto.randomInt()` ([PR #776](https://github.com/versatica/mediasoup/pull/776) by @piranna).
846
+ - Update TypeScript version.
847
+
848
+ ### 3.9.7
849
+
850
+ - Typing event emitters in mediasoup Node ([PR #764](https://github.com/versatica/mediasoup/pull/764) by @unao).
851
+
852
+ ### 3.9.6
853
+
854
+ - TCC client optimizations for faster and more stable BWE ([PR #712](https://github.com/versatica/mediasoup/pull/712) by @ggarber).
855
+ - Added support for RTP abs-capture-time header ([PR #761](https://github.com/versatica/mediasoup/pull/761) by @oto313).
856
+
857
+ ### 3.9.5
858
+
859
+ - ICE renomination support ([PR #756](https://github.com/versatica/mediasoup/pull/756)).
860
+ - Update `libuv` to 1.43.0.
861
+
862
+ ### 3.9.4
863
+
864
+ - Worker: Fix bad printing of error messages from Worker ([PR #750](https://github.com/versatica/mediasoup/pull/750) by @j1elo).
865
+
866
+ ### 3.9.3
867
+
868
+ - Single H264/H265 codec configuration in `supportedRtpCapabilities` ([PR #718](https://github.com/versatica/mediasoup/pull/718)).
869
+ - Improve Windows support by not requiring MSVC configuration ([PR #741](https://github.com/versatica/mediasoup/pull/741)).
870
+
871
+ ### 3.9.2
872
+
873
+ - `pipeToRouter()`: Reuse same `PipeTransport` when possible ([PR #697](https://github.com/versatica/mediasoup/pull/697)).
874
+ - Add `worker.died` boolean getter.
875
+ - Update TypeScript version to 4.X.X and use `target: "esnext"` so transpilation of ECMAScript private fields (`#foo`) don't use `WeakMaps` tricks but use standard syntax instead.
876
+ - Use more than one core for compilation on Windows ([PR #709](https://github.com/versatica/mediasoup/pull/709)).
877
+ - `Consumer`: Modification of bitrate allocation algorithm ([PR #708](https://github.com/versatica/mediasoup/pull/708)).
878
+
879
+ ### 3.9.1
880
+
881
+ - NixOS friendly build process ([PR #683](https://github.com/versatica/mediasoup/pull/683)).
882
+ - Worker: Emit "died" event before observer "close" ([PR #684](https://github.com/versatica/mediasoup/pull/684)).
883
+ - Transport: Hide debug message for RTX RTCP-RR packets ([PR #688](https://github.com/versatica/mediasoup/pull/688)).
884
+ - Update `libuv` to 1.42.0.
885
+ - Improve Windows support ([PR #692](https://github.com/versatica/mediasoup/pull/692)).
886
+ - Avoid build commands when MEDIASOUP_WORKER_BIN is set ([PR #695](https://github.com/versatica/mediasoup/pull/695)).
887
+
888
+ ### 3.9.0
889
+
890
+ - Replaces GYP build system with fully-functional Meson build system ([PR #622](https://github.com/versatica/mediasoup/pull/622)).
891
+ - Worker communication optimization (aka removing netstring dependency) ([PR #644](https://github.com/versatica/mediasoup/pull/644)).
892
+ - Move TypeScript and compiled JavaScript code to a new `node` folder.
893
+ - Use ES6 private fields.
894
+ - Require Node version >= 12.
895
+
896
+ ### 3.8.4
897
+
898
+ - OPUS multi-channel (Surround sound) support ([PR #647](https://github.com/versatica/mediasoup/pull/647)).
899
+ - Add `packetLoss` stats to transport ([PR #648](https://github.com/versatica/mediasoup/pull/648) by @ggarber).
900
+ - Fixes for active speaker observer ([PR #655](https://github.com/versatica/mediasoup/pull/655) by @ggarber).
901
+ - Fix big endian issues ([PR #639](https://github.com/versatica/mediasoup/pull/639)).
902
+
903
+ ### 3.8.3
904
+
905
+ - Fix wrong `size_t*` to `int*` conversion in 64bit Big-Endian hosts ([PR #637](https://github.com/versatica/mediasoup/pull/637)).
906
+
907
+ ### 3.8.2
908
+
909
+ - `ActiveSpeakerObserver`: Fix crash due to a `nullptr` ([PR #634](https://github.com/versatica/mediasoup/pull/634)).
910
+
911
+ ### 3.8.1
912
+
913
+ - `SimulcastConsumer`: Fix RTP timestamp when switching layers ([PR #626](https://github.com/versatica/mediasoup/pull/626) by @penguinol).
914
+
915
+ ### 3.8.0
916
+
917
+ - Update `libuv` to 1.42.0.
918
+ - Use non-ASM OpenSSL on Windows ([PR #614](https://github.com/versatica/mediasoup/pull/614)).
919
+ - Fix minor memory leak caused by non-virtual destructor ([PR #625](https://github.com/versatica/mediasoup/pull/625)).
920
+ - Dominant Speaker Event ([PR #603](https://github.com/versatica/mediasoup/pull/603) by @SteveMcFarlin).
921
+
922
+ ### 3.7.19
923
+
924
+ - Update `libuv` to 1.41.0.
925
+ - C++:
926
+ - Move header includes ([PR #608](https://github.com/versatica/mediasoup/pull/608)).
927
+ - Enhance debugging on channel request/notification error ([PR #607](https://github.com/versatica/mediasoup/pull/607)).
928
+
929
+ ### 3.7.18
930
+
931
+ - Support for optional fixed port on transports ([PR #593](https://github.com/versatica/mediasoup/pull/593) by @nazar-pc).
932
+ - Upgrade and optimize OpenSSL dependency ([PR #598](https://github.com/versatica/mediasoup/pull/598) by @vpalmisano):
933
+ - OpenSSL upgraded to version 1.1.1k.
934
+ - Enable the compilation of assembly extensions for OpenSSL.
935
+ - Optimize the worker build (`-O3`) and disable the debug flag (`-g`).
936
+
937
+ ### 3.7.17
938
+
939
+ - Introduce `PipeConsumerOptions` to avoid incorrect type information on `PipeTransport.consume()` arguments.
940
+ - Make `ConsumerOptions.rtpCapabilities` field required as it should have always been.
941
+
942
+ ### 3.7.16
943
+
944
+ - Add `mid` option in `ConsumerOptions` to provide way to override MID ([PR #586](https://github.com/versatica/mediasoup/pull/586) by @mstyura).
945
+
946
+ ### 3.7.15
947
+
948
+ - `kind` field of `RtpHeaderExtension` is no longer optional. It must be 'audio' or 'video'.
949
+ - Refactor API inconsistency in internal RTP Observer communication with worker.
950
+
951
+ ### 3.7.14
952
+
953
+ - Update `usrsctp` to include a "possible use after free bug" fix (commit [here](https://github.com/sctplab/usrsctp/commit/0f8d58300b1fdcd943b4a9dd3fbd830825390d4d)).
954
+
955
+ ### 3.7.13
956
+
957
+ - Fix build on FreeBSD ([PR #585](https://github.com/versatica/mediasoup/pull/585) by @smortex).
958
+
959
+ ### 3.7.12
960
+
961
+ - `mediasoup-worker`: Fix memory leaks on error exit ([PR #581](https://github.com/versatica/mediasoup/pull/581)).
962
+
963
+ ### 3.7.11
964
+
965
+ - Fix `DepUsrSCTP::Checker::timer` not being freed on `Worker` close ([PR #576](https://github.com/versatica/mediasoup/pull/576)). Thanks @nazar-pc for discovering this.
966
+
967
+ ### 3.7.10
968
+
969
+ - Remove clang tools binaries from regular installation.
970
+
971
+ ### 3.7.9
972
+
973
+ - Code clean up.
974
+
975
+ ### 3.7.8
976
+
977
+ - `PayloadChannel`: Copy received messages into a separate buffer to avoid memory corruption if the message is later modified ([PR #570](https://github.com/versatica/mediasoup/pull/570) by @aggresss).
978
+
979
+ ### 3.7.7
980
+
981
+ - Thread and memory safety fixes needed for mediasoup-rust ([PR #562](https://github.com/versatica/mediasoup/pull/562) by @nazar-pc).
982
+ - mediasoup-rust support on macOS ([PR #567](https://github.com/versatica/mediasoup/pull/567) by @nazar-pc).
983
+ - mediasoup-rust release 0.7.2.
984
+
985
+ ### 3.7.6
986
+
987
+ - `Transport`: Implement new `setMaxOutgoingBitrate()` method ([PR #555](https://github.com/versatica/mediasoup/pull/555) by @t-mullen).
988
+ - `SctpAssociation`: Don't warn if SCTP send buffer is full.
989
+ - Rust: Update modules structure and other minor improvements for Rust version ([PR #558](https://github.com/versatica/mediasoup/pull/558)).
990
+ - `mediasoup-worker`: Avoid duplicated basenames so that `libmediasoup-worker` is compilable on macOS ([PR #557](https://github.com/versatica/mediasoup/pull/557)).
991
+
992
+ ### 3.7.5
993
+
994
+ - SctpAssociation: provide 'sctpsendbufferfull' reason on send error (#552).
995
+
996
+ ### 3.7.4
997
+
998
+ - Improve `RateCalculator` ([PR #547](https://github.com/versatica/mediasoup/pull/547) by @vpalmisano).
999
+
1000
+ ### 3.7.3
1001
+
1002
+ - Make worker M1 compilable.
1003
+
1004
+ ### 3.7.2
1005
+
1006
+ - `RateCalculator` optimization ([PR #538](https://github.com/versatica/mediasoup/pull/538) by @vpalmisano).
1007
+
1008
+ ### 3.7.1
1009
+
1010
+ - `SimulcastConsumer`: Fix miscalculation when increasing layer ([PR #541](https://github.com/versatica/mediasoup/pull/541) by @penguinol).
1011
+ - Rust version with thread-based worker ([PR #540](https://github.com/versatica/mediasoup/pull/540)).
1012
+
1013
+ ### 3.7.0
1014
+
1015
+ - Welcome to `mediasoup-rust`! Authored by @nazar-pc (PRs #518 and #533).
1016
+ - Update `usrsctp`.
1017
+
1018
+ ### 3.6.37
1019
+
1020
+ - Fix crash if empty `fingerprints` array is given in `webrtcTransport.connect()` (issue #537).
1021
+
1022
+ ### 3.6.36
1023
+
1024
+ - `Producer`: Add new stats field 'rtxPacketsDiscarded' ([PR #536](https://github.com/versatica/mediasoup/pull/536)).
1025
+
1026
+ ### 3.6.35
1027
+
1028
+ - `Consumer` classes: make `IsActive()` return `true` (even if `Producer`'s score is 0) when DTX is enabled ([PR #534](https://github.com/versatica/mediasoup/pull/534) due to issue #532).
1029
+
1030
+ ### 3.6.34
1031
+
1032
+ - Fix crash (regression, issue #529).
1033
+
1034
+ ### 3.6.33
1035
+
1036
+ - Add missing `delete cb` that otherwise would leak ([PR #527](https://github.com/versatica/mediasoup/pull/527) based on [PR #526](https://github.com/versatica/mediasoup/pull/526) by @vpalmisano).
1037
+ - `router.pipeToRouter()`: Fix possible inconsistency in `pipeProducer.paused` status (as discussed in this [thread](https://mediasoup.discourse.group/t/concurrency-architecture/2515/) in the mediasoup forum).
1038
+ - Update `nlohmann/json` to 3.9.1.
1039
+ - Update `usrsctp`.
1040
+ - Enhance Jitter calculation.
1041
+
1042
+ ### 3.6.32
1043
+
1044
+ - Fix notifications from `mediasoup-worker` being processed before responses received before them (issue #501).
1045
+
1046
+ ### 3.6.31
1047
+
1048
+ - Move `bufferedAmount` from `dataConsumer.dump()` to `dataConsumer.getStats()`.
1049
+
1050
+ ### 3.6.30
1051
+
1052
+ - Add `pipe` option to `transport.consume()`([PR #494](https://github.com/versatica/mediasoup/pull/494)).
1053
+ - So the receiver will get all streams from the `Producer`.
1054
+ - It works for any kind of transport (but `PipeTransport` which is always like this).
1055
+ - Add `LICENSE` and `PATENTS` files in `libwebrtc` dependency (issue #495).
1056
+ - Added `worker/src/Utils/README_BASE64_UTILS` (issue #497).
1057
+ - Update `usrsctp`.
1058
+
1059
+ ### 3.6.29
1060
+
1061
+ - Fix wrong message about `rtcMinPort` and `rtcMaxPort`.
1062
+ - Update deps.
1063
+ - Improve `EnhancedEventEmitter.safeAsPromise()` (although not used).
1064
+
1065
+ ### 3.6.28
1066
+
1067
+ - Fix replacement of `__MEDIASOUP_VERSION__` in `lib/index.d.ts` (issue #483).
1068
+ - `worker/scripts/configure.py`: Handle 'mips64' ([PR #485](https://github.com/versatica/mediasoup/pull/485)).
1069
+
1070
+ ### 3.6.27
1071
+
1072
+ - Allow the `mediasoup-worker` process to inherit all environment variables (issue #480).
1073
+
1074
+ ### 3.6.26
1075
+
1076
+ - BWE tweaks and debug logs.
1077
+
1078
+ ### 3.6.25
1079
+
1080
+ - SCTP fixes ([PR #479](https://github.com/versatica/mediasoup/pull/479)).
1081
+
1082
+ ### 3.6.24
1083
+
1084
+ - Update `awaitqueue` dependency.
1085
+
1086
+ ### 3.6.23
1087
+
1088
+ - Fix yet another memory leak in Node layer due to `PayloadChannel` event listener not being removed.
1089
+
1090
+ ### 3.6.22
1091
+
1092
+ - `Transport.cpp`: Provide transport congestion client with RTCP Receiver Reports (#464).
1093
+ - Update `libuv` to 1.40.0.
1094
+ - Update Node deps.
1095
+ - `SctpAssociation.cpp`: increase `sctpBufferedAmount` before sending any data (#472).
1096
+
1097
+ ### 3.6.21
1098
+
1099
+ - Fix memory leak in Node layer due to `PayloadChannel` event listener not being removed (related to #463).
1100
+
1101
+ ### 3.6.20
1102
+
1103
+ - Remove `-fwrapv` when building `mediasoup-worker` in `Debug` mode (issue #460).
1104
+ - Add `MEDIASOUP_MAX_CORES` to limit `NUM_CORES` during `mediasoup-worker` build ([PR #462](https://github.com/versatica/mediasoup/pull/462)).
1105
+
1106
+ ### 3.6.19
1107
+
1108
+ - Update `usrsctp` dependency.
1109
+ - Update `typescript-eslint` deps.
1110
+ - Update Node deps.
1111
+
1112
+ ### 3.6.18
1113
+
1114
+ - Fix `ortc.getConsumerRtpParameters()` RTX codec comparison issue ([PR #453](https://github.com/versatica/mediasoup/pull/453)).
1115
+ - RtpObserver: expose `RtpObserverAddRemoveProducerOptions` for `addProducer()` and `removeProducer()` methods.
1116
+
1117
+ ### 3.6.17
1118
+
1119
+ - Update `libuv` to 1.39.0.
1120
+ - Update Node deps.
1121
+ - SimulcastConsumer: Prefer the highest spatial layer initially ([PR #450](https://github.com/versatica/mediasoup/pull/450)).
1122
+ - RtpStreamRecv: Set RtpDataCounter window size to 6 secs if DTX (#451)
1123
+
1124
+ ### 3.6.16
1125
+
1126
+ - `SctpAssociation.cpp`: Fix `OnSctpAssociationBufferedAmount()` call.
1127
+ - Update deps.
1128
+ - New API to send data from Node throught SCTP DataConsumer.
1129
+
1130
+ ### 3.6.15
1131
+
1132
+ - Avoid SRTP leak by deleting invalid SSRCs after STRP decryption (issue #437, thanks to @penguinol for reporting).
1133
+ - Update `usrsctp` dep.
1134
+ - DataConsumer 'bufferedAmount' implementation ([PR #442](https://github.com/versatica/mediasoup/pull/442)).
1135
+
1136
+ ### 3.6.14
1137
+
1138
+ - Fix `usrsctp` vulnerability ([PR #439](https://github.com/versatica/mediasoup/pull/439)).
1139
+ - Fix issue #435 (thanks to @penguinol for reporting).
1140
+ - `TransportCongestionControlClient.cpp`: Enable periodic ALR probing to recover faster from network issues.
1141
+
1142
+ - Update `nlohmann::json` C++ dep to 3.9.0.
1143
+
1144
+ ### 3.6.13
1145
+
1146
+ - RTP on `DirectTransport` (issue #433, [PR #434](https://github.com/versatica/mediasoup/pull/434)):
1147
+ - New API `producer.send(rtpPacket: Buffer)`.
1148
+ - New API `consumer.on('rtp', (rtpPacket: Buffer)`.
1149
+ - New API `directTransport.sendRtcp(rtcpPacket: Buffer)`.
1150
+ - New API `directTransport.on('rtcp', (rtpPacket: Buffer)`.
1151
+
1152
+ ### 3.6.12
1153
+
1154
+ - Release script.
1155
+
1156
+ ### 3.6.11
1157
+
1158
+ - `Transport`: rename `maxSctpSendBufferSize` to `sctpSendBufferSize`.
1159
+
1160
+ ### 3.6.10
1161
+
1162
+ - `Transport`: Implement `maxSctpSendBufferSize`.
1163
+ - Update `libuv` to 1.38.1.
1164
+
1165
+ ### 3.6.9
1166
+
1167
+ - `Transport::ReceiveRtpPacket()`: Call `RecvStreamClosed(packet->GetSsrc())` if received RTP packet does not match any `Producer`.
1168
+ - `Transport::HandleRtcpPacket()`: Ensure `Consumer` is found for received NACK Feedback packets.
1169
+ - Fix issue #408.
1170
+
1171
+ ### 3.6.8
1172
+
1173
+ - Fix SRTP leak due to streams not being removed when a `Producer` or `Consumer` is closed.
1174
+ - [PR #428](https://github.com/versatica/mediasoup/pull/428) (fixes issues #426).
1175
+ - Credits to credits to @penguinol for reporting and initial work at [PR #427](https://github.com/versatica/mediasoup/pull/427).
1176
+ - Update `nlohmann::json` C++ dep to 3.8.0.
1177
+ - C++: Enhance `const` correctness.
1178
+
1179
+ ### 3.6.7
1180
+
1181
+ - `ConsumerScore`: Add `producerScores`, scores of all RTP streams in the producer ordered by encoding (just useful when the producer uses simulcast).
1182
+ - [PR #421](https://github.com/versatica/mediasoup/pull/421) (fixes issues #420).
1183
+ - Hide worker executable console in Windows.
1184
+ - [PR #419](https://github.com/versatica/mediasoup/pull/419) (credits to @BlueMagnificent).
1185
+ - `RtpStream.cpp`: Fix wrong `std::round()` usage.
1186
+ - Issue #423.
1187
+
1188
+ ### 3.6.6
1189
+
1190
+ - Update `usrsctp` library.
1191
+ - Update ESLint and TypeScript related dependencies.
1192
+
1193
+ ### 3.6.5
1194
+
1195
+ - Set `score:0` when `dtx:true` is set in an `encoding` and there is no RTP for some seconds for that RTP stream.
1196
+ - Fixes #415.
1197
+
1198
+ ### 3.6.4
1199
+
1200
+ - `gyp`: Fix CLT version detection in OSX Catalina when XCode app is not installed.
1201
+ - [PR #413](https://github.com/versatica/mediasoup/pull/413) (credits to @enimo).
1202
+
1203
+ ### 3.6.3
1204
+
1205
+ - Modernize TypeScript.
1206
+
1207
+ ### 3.6.2
1208
+
1209
+ - Fix crash in `Transport.ts` when closing a `DataConsumer` created on a `DirectTransport`.
1210
+
1211
+ ### 3.6.1
1212
+
1213
+ - Export new `DirectTransport` in `types`.
1214
+ - Make `DataProducerOptions` optional (not needed when in a `DirectTransport`).
1215
+
1216
+ ### 3.6.0
1217
+
1218
+ - SCTP/DataChannel termination:
1219
+ - [PR #409](https://github.com/versatica/mediasoup/pull/409)
1220
+ - Allow the Node application to directly send text/binary messages to `mediasoup-worker` C++ process so others can consume them using `DataConsumers`.
1221
+ - And vice-versa: allow the Node application to directly consume in Node messages send by `DataProducers`.
1222
+ - Add `WorkerLogTag` TypeScript enum and also add a new 'message' tag into it.
1223
+
1224
+ ### 3.5.15
1225
+
1226
+ - Simulcast and SVC: Better computation of desired bitrate based on `maxBitrate` field in the `producer.rtpParameters.encodings`.
1227
+
1228
+ ### 3.5.14
1229
+
1230
+ - Update deps, specially `uuid` and `@types/uuid` that had a TypeScript related bug.
1231
+ - `TransportCongestionClient.cpp`: Improve sender side bandwidth estimation by do not reporting `this->initialAvailableBitrate` as available bitrate due to strange behavior in the algorithm.
1232
+
1233
+ ### 3.5.13
1234
+
1235
+ - Simplify `GetDesiredBitrate()` in `SimulcastConsumer` and `SvcConsumer`.
1236
+ - Update `libuv` to 1.38.0.
1237
+
1238
+ ### 3.5.12
1239
+
1240
+ - `SeqManager.cpp`: Improve performance.
1241
+ - [PR #398](https://github.com/versatica/mediasoup/pull/398) (credits to @penguinol).
1242
+
1243
+ ### 3.5.11
1244
+
1245
+ - `SeqManager.cpp`: Fix a bug and improve performance.
1246
+ - Fixes issue #395 via [PR #396](https://github.com/versatica/mediasoup/pull/396) (credits to @penguinol).
1247
+ - Drop Node 8 support. Minimum supported Node version is now 10.
1248
+ - Upgrade `eslint` and `jest` major versions.
1249
+
1250
+ ### 3.5.10
1251
+
1252
+ - `SimulcastConsumer.cpp`: Fix `IncreaseLayer()` method (fixes #394).
1253
+ - Udpate Node deps.
1254
+
1255
+ ### 3.5.9
1256
+
1257
+ - `libwebrtc`: Apply patch by @sspanak and @Ivaka to avoid crash. Related issue: #357.
1258
+ - `PortManager`: Do not use `UV_UDP_RECVMMSG` in Windows due to a bug in `libuv` 1.37.0.
1259
+ - Update Node deps.
1260
+
1261
+ ### 3.5.8
1262
+
1263
+ - Enable `UV_UDP_RECVMMSG`:
1264
+ - Upgrade `libuv` to 1.37.0.
1265
+ - Use `uv_udp_init_ex()` with `UV_UDP_RECVMMSG` flag.
1266
+ - Add our own `uv.gyp` now that `libuv` has removed support for GYP (fixes #384).
1267
+
1268
+ ### 3.5.7
1269
+
1270
+ - Fix crash in `mediasoup-worker` due to conversion from `uint64_t` to `int64_t` (used within `libwebrtc` code. Fixes #357.
1271
+ - Update `usrsctp` library.
1272
+ - Update Node deps.
1273
+
1274
+ ### 3.5.6
1275
+
1276
+ - `SeqManager.cpp`: Fix video lag after a long time.
1277
+ - Fixes #372 (thanks @penguinol for reporting it and giving the solution).
1278
+
1279
+ ### 3.5.5
1280
+
1281
+ - `UdpSocket.cpp`: Revert `uv__udp_recvmmsg()` usage since it notifies about received UDP packets in reverse order. Feature on hold until fixed.
1282
+
1283
+ ### 3.5.4
1284
+
1285
+ - `Transport.cpp`: Enable transport congestion client for the first video Consumer, no matter it's uses simulcast, SVC or a single stream.
1286
+ - Update `libuv` to 1.35.0.
1287
+ - `UdpSocket.cpp`: Ensure the new libuv's `uv__udp_recvmmsg()` is used, which is more efficient.
1288
+
1289
+ ### 3.5.3
1290
+
1291
+ - `PlainTransport`: Remove `multiSource` option. It was a hack nobody should use.
1292
+
1293
+ ### 3.5.2
1294
+
1295
+ - Enable MID RTP extension in mediasoup to receivers direction (for consumers).
1296
+ - This **requires** mediasoup-client 3.5.2 to work.
1297
+
1298
+ ### 3.5.1
1299
+
1300
+ - `PlainTransport`: Fix event name: 'rtcpTuple' => 'rtcptuple'.
1301
+
1302
+ ### 3.5.0
1303
+
1304
+ - `PipeTransport`: Add support for SRTP and RTP retransmission (RTX + NACK). Useful when connecting two mediasoup servers running in different hosts via pipe transports.
1305
+ - `PlainTransport`: Add support for SRTP.
1306
+ - Rename `PlainRtpTransport` to `PlainTransport` everywhere (classes, methods, TypeScript types, etc). Keep previous names and mark them as DEPRECATED.
1307
+ - Fix vulnarability in IPv6 parser.
1308
+
1309
+ ### 3.4.13
1310
+
1311
+ - Update `uuid` dep to 7.0.X (new API).
1312
+ - Fix crash due wrong array index in `PipeConsumer::FillJson()`.
1313
+ - Fixes #364
1314
+
1315
+ ### 3.4.12
1316
+
1317
+ - TypeScript: generate `es2020` instead of `es6`.
1318
+ - Update `usrsctp` library.
1319
+ - Fixes #362 (thanks @chvarlam for reporting it).
1320
+
1321
+ ### 3.4.11
1322
+
1323
+ - `IceServer.cpp`: Reject received STUN Binding request with 487 if remote peer indicates ICE-CONTROLLED into it.
1324
+
1325
+ ### 3.4.10
1326
+
1327
+ - `ProducerOptions`: Rename `keyFrameWaitTime` option to `keyFrameRequestDelay` and make it work as expected.
1328
+
1329
+ ### 3.4.9
1330
+
1331
+ - Add `Utils::Json::IsPositiveInteger()` to not rely on `is_number_unsigned()` of json lib, which is unreliable due to its design.
1332
+ - Avoid ES6 `export default` and always use named `export`.
1333
+ - `router.pipeToRouter()`: Ensure a single `PipeTransport` pair is created between `router1` and `router2`.
1334
+ - Since the operation is async, it may happen that two simultaneous calls to `router1.pipeToRouter({ producerId: xxx, router: router2 })` would end up generating two pairs of `PipeTranports`. To prevent that, let's use an async queue.
1335
+ - Add `keyFrameWaitTime` option to `ProducerOptions`.
1336
+ - Update Node and C++ deps.
1337
+
1338
+ ### 3.4.8
1339
+
1340
+ - `libsrtp.gyp`: Fix regression in mediasoup for Windows.
1341
+ - `libsrtp.gyp`: Modernize it based on the new `BUILD.gn` in Chromium.
1342
+ - `libsrtp.gyp`: Don't include "test" and other targets.
1343
+ - Assume `HAVE_INTTYPES_H`, `HAVE_INT8_T`, etc. in Windows.
1344
+ - Issue details: https://github.com/sctplab/usrsctp/issues/353
1345
+ - `gyp` dependency: Add support for Microsoft Visual Studio 2019.
1346
+ - Modify our own `gyp` sources to fix the issue.
1347
+ - CL uploaded to GYP project with the fix.
1348
+ - Issue details: https://github.com/sctplab/usrsctp/issues/347
1349
+
1350
+ ### 3.4.7
1351
+
1352
+ - `PortManager`: Do not limit the number of failed `bind()` attempts to 20 since it does not work well in scenarios that launch tons of `Workers` with same port range. Instead iterate all ports in the range given to the Worker.
1353
+ - Do not copy `catch.hpp` into `test/include/` but make the GYP `mediasoup-worker-test` target include the corresponding folder in `deps/catch`.
1354
+
1355
+ ### 3.4.6
1356
+
1357
+ - Update libsrtp to 2.3.0.
1358
+ - Update ESLint and TypeScript deps.
1359
+
1360
+ ### 3.4.5
1361
+
1362
+ - Update deps.
1363
+ - Fix text in `./github/Bug_Report.md` so it no longer references the deprecated mailing list.
1364
+
1365
+ ### 3.4.4
1366
+
1367
+ - `Transport.cpp`: Ignore RTCP SDES packets (we don't do anything with them anyway).
1368
+ - `Producer` and `Consumer` stats: Always show `roundTripTime` (even if calculated value is 0) after a `roundTripTime` > 0 has been seen.
1369
+
1370
+ ### 3.4.3
1371
+
1372
+ - `Transport.cpp`: Fix RTCP FIR processing:
1373
+ - Instead of looking at the media ssrc in the common header, iterate FIR items and look for associated `Consumers` based on ssrcs in each FIR item.
1374
+ - Fixes #350 (thanks @j1elo for reporting and documenting the issue).
1375
+
1376
+ ### 3.4.2
1377
+
1378
+ - `SctpAssociation.cpp`: Improve/fix logs.
1379
+ - Improve Node `EventEmitter` events inline documentation.
1380
+ - `test-node-sctp.js`: Wait for SCTP association to be open before sending data.
1381
+
1382
+ ### 3.4.1
1383
+
1384
+ - Improve `mediasoup-worker` build system by using `sh` instead of `bash` and default to 4 cores (thanks @smoke, [PR #349](https://github.com/versatica/mediasoup/pull/349)).
1385
+
1386
+ ### 3.4.0
1387
+
1388
+ - Add `worker.getResourceUsage()` API.
1389
+ - Update OpenSSL to 1.1.1d.
1390
+ - Update `libuv` to 1.34.0.
1391
+ - Update TypeScript version.
1392
+
1393
+ ### 3.3.8
1394
+
1395
+ - Update usrsctp dependency (it fixes a potential wrong memory access).
1396
+ - More details in the reported issue: https://github.com/sctplab/usrsctp/issues/408
1397
+
1398
+ ### 3.3.7
1399
+
1400
+ - Fix `version` getter.
1401
+
1402
+ ### 3.3.6
1403
+
1404
+ - `SctpAssociation.cpp`: Initialize the `usrsctp` socket in the class constructor. Fixes #348.
1405
+
1406
+ ### 3.3.5
1407
+
1408
+ - Fix usage of a deallocated `RTC::TcpConnection` instance under heavy CPU usage due to mediasoup deleting the instance in the middle of a receiving iteration. Fixes #333.
1409
+ - More details in the commit: https://github.com/versatica/mediasoup/commit/49824baf102ab6d2b01e5bca565c29b8ac0fec22
1410
+
1411
+ ### 3.3.4
1412
+
1413
+ - IPv6 fix: Use `INET6_ADDRSTRLEN` instead of `INET_ADDRSTRLEN`.
1414
+
1415
+ ### 3.3.3
1416
+
1417
+ - Add `consumer.setPriority()` and `consumer.priority` API to prioritize how the estimated outgoing bitrate in a transport is distributed among all video consumers (in case there is not enough bitrate to satisfy them).
1418
+ - Make video `SimpleConsumers` play the BWE game by helping in probation generation and bitrate distribution.
1419
+ - Add `consumer.preferredLayers` getter.
1420
+ - Rename `enablePacketEvent()` and "packet" event to `enableTraceEvent()` and "trace" event (sorry SEMVER).
1421
+ - Transport: Add a new "trace" event of type "bwe" with detailed information about bitrates.
1422
+
1423
+ ### 3.3.2
1424
+
1425
+ - Improve "packet" event by not firing both "keyframe" and "rtp" types for the same RTP packet.
1426
+
1427
+ ### 3.3.1
1428
+
1429
+ - Add type "keyframe" as a valid type for "packet" event in `Producers` and `Consumers`.
1430
+
1431
+ ### 3.3.0
1432
+
1433
+ - Add transport-cc bandwidth estimation and congestion control in sender and receiver side.
1434
+ - Run in Windows.
1435
+ - Rewrite to TypeScript.
1436
+ - Tons of improvements.
1437
+
1438
+ ### 3.2.5
1439
+
1440
+ - Fix TCP leak (#325).
1441
+
1442
+ ### 3.2.4
1443
+
1444
+ - `PlainRtpTransport`: Fix comedia mode.
1445
+
1446
+ ### 3.2.3
1447
+
1448
+ - `RateCalculator`: improve efficiency in `GetRate()` method (#324).
1449
+
1450
+ ### 3.2.2
1451
+
1452
+ - `RtpDataCounter`: use window size of 2500 ms instead of 1000 ms.
1453
+ - Fixes false "lack of RTP" detection in some screen sharing usages with simulcast.
1454
+ - Fixes #312.
1455
+
1456
+ ### 3.2.1
1457
+
1458
+ - Add RTCP Extended Reports for RTT calculation on receiver RTP stream (thanks @yangjinechofor for initial pull request #314).
1459
+ - Make `mediasoup-worker` compile in Armbian Debian Buster (thanks @krishisola, fixes #321).
1460
+
1461
+ ### 3.2.0
1462
+
1463
+ - Add DataChannel support via DataProducers and DataConsumers (#10).
1464
+ - SRTP: Add support for AEAD GCM (#320).
1465
+
1466
+ ### 3.1.7
1467
+
1468
+ - `PipeConsumer.cpp`: Fix RTCP generation (thanks @vpalmisano).
1469
+
1470
+ ### 3.1.6
1471
+
1472
+ - VP8 and H264: Fix regression in 3.1.5 that produces lot of changes in current temporal layer detection.
1473
+
1474
+ ### 3.1.5
1475
+
1476
+ - VP8 and H264: Allow packets without temporal layer information even if N temporal layers were announced.
1477
+
1478
+ ### 3.1.4
1479
+
1480
+ - Add `-fPIC` in `cflags` to compile in x86-64. Fixes #315.
1481
+
1482
+ ### 3.1.3
1483
+
1484
+ - Set the sender SSRC on PLI and FIR requests [related thread](https://mediasoup.discourse.group/t/broadcasting-a-vp8-rtp-stream-from-gstreamer/93).
1485
+
1486
+ ### 3.1.2
1487
+
1488
+ - Workaround to detect H264 key frames when Chrome uses external encoder (related [issue](https://bugs.chromium.org/p/webrtc/issues/detail?id=10746)). Fixes #313.
1489
+
1490
+ ### 3.1.1
1491
+
1492
+ - Improve `GetBitratePriority()` method in `SimulcastConsumer` and `SvcConsumer` by checking the total bitrate of all temporal layers in a given producer stream or spatial layer.
1493
+
1494
+ ### 3.1.0
1495
+
1496
+ - Add SVC support. It includes VP9 full SVC and VP9 K-SVC as implemented by libwebrtc.
1497
+ - Prefer Python 2 (if available) over Python 3. This is because there are yet pending issues with gyp + Python 3.
1498
+
1499
+ ### 3.0.12
1500
+
1501
+ - Do not require Python 2 to compile mediasoup worker (#207). Both Python 2 and 3 can now be used.
1502
+
1503
+ ### 3.0.11
1504
+
1505
+ - Codecs: Improve temporal layer switching in VP8 and H264.
1506
+ - Skip worker compilation if `MEDIASOUP_WORKER_BIN` environment variable is given (#309). This makes it possible to install mediasoup in platforms in which, somehow, gcc > 4.8 is not available during `npm install mediasoup` but it's available later.
1507
+ - Fix `RtpStreamRecv::TransmissionCounter::GetBitrate()`.
1508
+
1509
+ ### 3.0.10
1510
+
1511
+ - `parseScalabilityMode()`: allow "S" as spatial layer (and not just "L"). "L" means "dependent spatial layer" while "S" means "independent spatial layer", which is used in K-SVC (VP9, AV1, etc).
1512
+
1513
+ ### 3.0.9
1514
+
1515
+ - `RtpStreamSend::ReceiveRtcpReceiverReport()`: improve `rtt` calculation if no Sender Report info is reported in received Received Report.
1516
+ - Update `libuv` to version 1.29.1.
1517
+
1518
+ ### 3.0.8
1519
+
1520
+ - VP8 & H264: Improve temporal layer switching.
1521
+
1522
+ ### 3.0.7
1523
+
1524
+ - RTP frame-marking: Add some missing checks.
1525
+
1526
+ ### 3.0.6
1527
+
1528
+ - Fix regression in proxied RTP header extensions.
1529
+
1530
+ ### 3.0.5
1531
+
1532
+ - Add support for frame-marking RTP extension and use it to enable temporal layers switching in H264 codec (#305).
1533
+
1534
+ ### 3.0.4
1535
+
1536
+ - Improve RTP probation for simulcast/svc consumers by using proper RTP retransmission with increasing sequence number.
1537
+
1538
+ ### 3.0.3
1539
+
1540
+ - Simulcast: Improve timestamps extra offset handling by having a map of extra offsets indexed by received timestamps. This helps in case of packet retransmission.
1541
+
1542
+ ### 3.0.2
1543
+
1544
+ - Simulcast: proper RTP stream switching by rewriting packet timestamp with a new timestamp calculated from the SenderReports' NTP relationship.
1545
+
1546
+ ### 3.0.1
1547
+
1548
+ - Fix crash in `SimulcastConsumer::IncreaseLayer()` with Safari and H264 (#300).
1549
+
1550
+ ### 3.0.0
1551
+
1552
+ - v3 is here!
1553
+
1554
+ ### 2.6.19
1555
+
1556
+ - `RtpStreamSend.cpp`: Fix a crash in `StorePacket()` when it receives an old packet and there is no space left in the storage buffer (thanks to zkfun for reporting it and providing us with the solution).
1557
+ - Update deps.
1558
+
1559
+ ### 2.6.18
1560
+
1561
+ - Fix usage of a deallocated `RTC::TcpConnection` instance under heavy CPU usage due to mediasoup deleting the instance in the middle of a receiving iteration.
1562
+
1563
+ ### 2.6.17
1564
+
1565
+ - Improve build system by using all available CPU cores in parallel.
1566
+
1567
+ ### 2.6.16
1568
+
1569
+ - Don't mandate server port range to be >= 99.
1570
+
1571
+ ### 2.6.15
1572
+
1573
+ - Fix NACK retransmissions.
1574
+
1575
+ ### 2.6.14
1576
+
1577
+ - Fix TCP leak (#325).
1578
+
1579
+ ### 2.6.13
1580
+
1581
+ - Make `mediasoup-worker` compile in Armbian Debian Buster (thanks @krishisola, fixes #321).
1582
+ - Update deps.
1583
+
1584
+ ### 2.6.12
1585
+
1586
+ - Fix RTCP Receiver Report handling.
1587
+
1588
+ ### 2.6.11
1589
+
1590
+ - Update deps.
1591
+ - Simulcast: Increase profiles one by one unless explicitly forced (fixes #188).
1592
+
1593
+ ### 2.6.10
1594
+
1595
+ - `PlainRtpTransport.js`: Add missing methods and events.
1596
+
1597
+ ### 2.6.9
1598
+
1599
+ - Remove a potential crash if a single `encoding` is given in the Producer `rtpParameters` and it has a `profile` value.
1600
+
1601
+ ### 2.6.8
1602
+
1603
+ - C++: Verify in libuv static callbacks that the associated C++ instance has not been deallocated (thanks @artushin and @mariat-atg for reporting and providing valuable help in #258).
1604
+
1605
+ ### 2.6.7
1606
+
1607
+ - Fix wrong destruction of Transports in Router.cpp that generates 100% CPU usage in `mediasoup-worker` processes.
1608
+
1609
+ ### 2.6.6
1610
+
1611
+ - Fix a port leak when a WebRtcTransport is remotely closed due to a DTLS close alert (thanks @artushin for reporting it in #259).
1612
+
1613
+ ### 2.6.5
1614
+
1615
+ - RtpPacket: Fix Two-Byte header extensions parsing.
1616
+
1617
+ ### 2.6.4
1618
+
1619
+ - Upgrade again to OpenSSL 1.1.0j (20 Nov 2018) after adding a workaround for issue [#257](https://github.com/versatica/mediasoup/issues/257).
1620
+
1621
+ ### 2.6.3
1622
+
1623
+ - Downgrade OpenSSL to version 1.1.0h (27 Mar 2018) until issue [#257](https://github.com/versatica/mediasoup/issues/257) is fixed.
1624
+
1625
+ ### 2.6.2
1626
+
1627
+ - C++: Remove all `Destroy()` class methods and no longer do `delete this`.
1628
+ - Update libuv to 1.24.1.
1629
+ - Update OpenSSL to 1.1.0g.
1630
+
1631
+ ### 2.6.1
1632
+
1633
+ - worker: Internal refactor and code cleanup.
1634
+ - Remove announced support for certain RTCP feedback types that mediasoup does nothing with (and avoid forwarding them to the remote RTP sender).
1635
+ - fuzzer: fix some wrong memory access in `RtpPacket::Dump()` and `StunMessage::Dump()` (just used during development).
1636
+
1637
+ ### 2.6.0
1638
+
1639
+ - Integrate [libFuzzer](http://llvm.org/docs/LibFuzzer.html) into mediasoup (documentation in the `doc` folder). Extensive testing done. Several heap-buffer-overflow and memory leaks fixed.
1640
+
1641
+ ### 2.5.6
1642
+
1643
+ - `Producer.cpp`: Remove `UpdateRtpParameters()`. It was broken since Consumers
1644
+ were not notified about profile removed and so on, so they may crash.
1645
+ - `Producer.cpp: Remove some maps and simplify streams handling by having a
1646
+ single `mapSsrcRtpStreamInfo`. Just keep `mapActiveProfiles`because`GetActiveProfiles()` method needs it.
1647
+ - `Producer::MayNeedNewStream()`: Ignore new media streams with new SSRC if
1648
+ its RID is already in use by other media stream (fixes #235).
1649
+ - Fix a bad memory access when using two byte RTP header extensions.
1650
+
1651
+ ### 2.5.5
1652
+
1653
+ - `Server.js`: If a worker crashes make sure `_latestWorkerIdx` becomes 0.
1654
+
1655
+ ### 2.5.4
1656
+
1657
+ - `server.Room()`: Assign workers incrementally or explicitly via new `workerIdx` argument.
1658
+ - Add `server.numWorkers` getter.
1659
+
1660
+ ### 2.5.3
1661
+
1662
+ - Don't announce `muxId` nor RTP MID extension support in `Consumer` RTP parameters.
1663
+
1664
+ ### 2.5.2
1665
+
1666
+ - Enable RTP MID extension again.
1667
+
1668
+ ### 2.5.1
1669
+
1670
+ - Disable RTP MID extension until [#230](https://github.com/versatica/mediasoup/issues/230) is fixed.
1671
+
1672
+ ### 2.5.0
1673
+
1674
+ - Add RTP MID extension support.
1675
+
1676
+ ### 2.4.6
1677
+
1678
+ - Do not close `Transport` on ICE disconnected (as it would prevent ICE restart on "recv" TCP transports).
1679
+
1680
+ ### 2.4.5
1681
+
1682
+ - Improve codec matching.
1683
+
1684
+ ### 2.4.4
1685
+
1686
+ - Fix audio codec matching when `channels` parameter is not given.
1687
+
1688
+ ### 2.4.3
1689
+
1690
+ - Make `PlainRtpTransport` not leak if port allocation fails (related issue [#224](https://github.com/versatica/mediasoup/issues/224)).
1691
+
1692
+ ### 2.4.2
1693
+
1694
+ - Fix a crash in when no more RTP ports were available (see related issue [#222](https://github.com/versatica/mediasoup/issues/222)).
1695
+
1696
+ ### 2.4.1
1697
+
1698
+ - Update dependencies.
1699
+
1700
+ ### 2.4.0
1701
+
1702
+ - Allow non WebRTC peers to create plain RTP transports (no ICE/DTLS/SRTP but just plain RTP and RTCP) for sending and receiving media.
1703
+
1704
+ ### 2.3.3
1705
+
1706
+ - Fix C++ syntax to avoid an error when building the worker with clang 8.0.0 (OSX 10.11.6).
1707
+
1708
+ ### 2.3.2
1709
+
1710
+ - `Channel.js`: Upgrade `REQUEST_TIMEOUT` to 20 seconds to avoid timeout errors when the Node or worker thread usage is too high (related to this [issue](https://github.com/versatica/mediasoup-client/issues/48)).
1711
+
1712
+ ### 2.3.1
1713
+
1714
+ - H264: Check if there is room for the indicated NAL unit size (thanks @ggarber).
1715
+ - H264: Code cleanup.
1716
+
1717
+ ### 2.3.0
1718
+
1719
+ - Add new "spy" feature. A "spy" peer cannot produce media and is invisible for other peers in the room.
1720
+
1721
+ ### 2.2.7
1722
+
1723
+ - Fix H264 simulcast by properly detecting when the profile switching should be done.
1724
+ - Fix a crash in `Consumer::GetStats()` (see related issue [#196](https://github.com/versatica/mediasoup/issues/196)).
1725
+
1726
+ ### 2.2.6
1727
+
1728
+ - Add H264 simulcast capability.
1729
+
1730
+ ### 2.2.5
1731
+
1732
+ - Avoid calling deprecated (NOOP) `SSL_CTX_set_ecdh_auto()` function in OpenSSL >= 1.1.0.
1733
+
1734
+ ### 2.2.4
1735
+
1736
+ - [Fix #4](https://github.com/versatica/mediasoup/issues/4): Avoid DTLS handshake fragmentation.
1737
+
1738
+ ### 2.2.3
1739
+
1740
+ - [Fix #196](https://github.com/versatica/mediasoup/issues/196): Crash in `Consumer::getStats()` due to wrong `targetProfile`.
1741
+
1742
+ ### 2.2.2
1743
+
1744
+ - Improve [issue #209](https://github.com/versatica/mediasoup/issues/209).
1745
+
1746
+ ### 2.2.1
1747
+
1748
+ - [Fix #209](https://github.com/versatica/mediasoup/issues/209): `DtlsTransport`: don't crash when signaled fingerprint and DTLS fingerprint do not match (thanks @yangjinecho for reporting it).
1749
+
1750
+ ### 2.2.0
1751
+
1752
+ - Update Node and C/C++ dependencies.
1753
+
1754
+ ### 2.1.0
1755
+
1756
+ - Add `localIP` option for `room.createRtpStreamer()` and `transport.startMirroring()` [[PR #199](https://github.com/versatica/mediasoup/pull/199)](https://github.com/versatica/mediasoup/pull/199).
1757
+
1758
+ ### 2.0.16
1759
+
1760
+ - Improve C++ usage (remove "warning: missing initializer for member" [-Wmissing-field-initializers]).
1761
+ - Update Travis-CI settings.
1762
+
1763
+ ### 2.0.15
1764
+
1765
+ - Make `PlainRtpTransport` also send RTCP SR/RR reports (thanks @artushin for reporting).
1766
+
1767
+ ### 2.0.14
1768
+
1769
+ - [Fix #193](https://github.com/versatica/mediasoup/issues/193): `preferTcp` not honored (thanks @artushin).
1770
+
1771
+ ### 2.0.13
1772
+
1773
+ - Avoid crash when no remote IP/port is given.
1774
+
1775
+ ### 2.0.12
1776
+
1777
+ - Add `handled` and `unhandled` events to `Consumer`.
1778
+
1779
+ ### 2.0.11
1780
+
1781
+ - [Fix #185](https://github.com/versatica/mediasoup/issues/185): Consumer: initialize effective profile to 'NONE' (thanks @artushin).
1782
+ - [Fix #186](https://github.com/versatica/mediasoup/issues/186): NackGenerator code being executed after instance deletion (thanks @baiyufei).
1783
+
1784
+ ### 2.0.10
1785
+
1786
+ - [Fix #183](https://github.com/versatica/mediasoup/issues/183): Always reset the effective `Consumer` profile when removed (thanks @thehappycoder).
1787
+
1788
+ ### 2.0.9
1789
+
1790
+ - Make ICE+DTLS more flexible by allowing sending DTLS handshake when ICE is just connected.
1791
+
1792
+ ### 2.0.8
1793
+
1794
+ - Disable stats periodic retrieval also on remote closure of `Producer` and `WebRtcTransport`.
1795
+
1796
+ ### 2.0.7
1797
+
1798
+ - [Fix #180](https://github.com/versatica/mediasoup/issues/180): Added missing include `cmath` so that `std::round` can be used (thanks @jacobEAdamson).
1799
+
1800
+ ### 2.0.6
1801
+
1802
+ - [Fix #173](https://github.com/versatica/mediasoup/issues/173): Avoid buffer overflow in `()` (thanks @lightmare).
1803
+ - Improve stream layers management in `Consumer` by using the new `RtpMonitor` class.
1804
+
1805
+ ### 2.0.5
1806
+
1807
+ - [Fix #164](https://github.com/versatica/mediasoup/issues/164): Sometimes video freezes forever (no RTP received in browser at all).
1808
+ - [Fix #160](https://github.com/versatica/mediasoup/issues/160): Assert error in `RTC::Consumer::GetStats()`.
1809
+
1810
+ ### 2.0.4
1811
+
1812
+ - [Fix #159](https://github.com/versatica/mediasoup/issues/159): Don’t rely on VP8 payload descriptor flags to assure the existence of data.
1813
+ - [Fix #160](https://github.com/versatica/mediasoup/issues/160): Reset `targetProfile` when the corresponding profile is removed.
1814
+
1815
+ ### 2.0.3
1816
+
1817
+ - worker: Fix crash when VP8 payload has no `PictureId`.
1818
+
1819
+ ### 2.0.2
1820
+
1821
+ - worker: Remove wrong `assert` on `Producer::DeactivateStreamProfiles()`.
1822
+
1823
+ ### 2.0.1
1824
+
1825
+ - Update README file.
1826
+
1827
+ ### 2.0.0
1828
+
1829
+ - New design based on `Producers` and `Consumer` plus a mediasoup protocol and the **mediasoup-client** client side SDK.
1830
+
1831
+ ### 1.2.8
1832
+
1833
+ - Fix a crash due to RTX packet processing while the associated `NackGenerator` is not yet created.
1834
+
1835
+ ### 1.2.7
1836
+
1837
+ - Habemus RTX ([RFC 4588](https://tools.ietf.org/html/rfc4588)) for proper RTP retransmission.
1838
+
1839
+ ### 1.2.6
1840
+
1841
+ - Fix an issue in `buffer.toString()` that makes mediasoup fail in Node 8.
1842
+ - Update libuv to version 1.12.0.
1843
+
1844
+ ### 1.2.5
1845
+
1846
+ - Add support for [ICE renomination](https://tools.ietf.org/html/draft-thatcher-ice-renomination).
1847
+
1848
+ ### 1.2.4
1849
+
1850
+ - Fix a SDP negotiation issue when the remote peer does not have compatible codecs.
1851
+
1852
+ ### 1.2.3
1853
+
1854
+ - Add video codecs supported by Microsoft Edge.
1855
+
1856
+ ### 1.2.2
1857
+
1858
+ - `RtpReceiver`: generate RTCP PLI when "rtpraw" or "rtpobject" event listener is set.
1859
+
1860
+ ### 1.2.1
1861
+
1862
+ - `RtpReceiver`: fix an error producing packets when "rtpobject" event is set.
1863
+
1864
+ ### 1.2.0
1865
+
1866
+ - `RtpSender`: allow `disable()`/`enable()` without forcing SDP renegotiation (#114).
1867
+
1868
+ ### 1.1.0
1869
+
1870
+ - Add `Room.on('audiolevels')` event.
1871
+
1872
+ ### 1.0.2
1873
+
1874
+ - Set a maximum value of 1500 bytes for packet storage in `RtpStreamSend`.
1875
+
1876
+ ### 1.0.1
1877
+
1878
+ - Avoid possible segfault if `RemoteBitrateEstimator` generates a bandwidth estimation with zero SSRCs.
1879
+
1880
+ ### 1.0.0
1881
+
1882
+ - First stable release.